I alluded to this here, but at that point I hadn't really done enough work to know what I wanted to ask.

Call a polyhedron "trihedral" if three faces meet at each vertex. Each of the F faces can be varied according to three degrees of freedom; these can be written explicitly by fixing an origin not lying in the surface of the polyhedron, and representing each face F_{j} by the point **v**_{j} = (x_{j},y_{j},z_{j}) in its plane which is closest to the origin. However, of these 3F degrees of freedom, three correspond to translation and three to rotation; so there are E = 3F-6 degrees of freedom which determine the polyhedron's shape, where E is the number of edges. Also, E remains the "true" number of degrees of freedom even for non-trihedral polyhedra, since each degree of freedom is lost by contracting an edge to a point.

Now, each edge is characterized by its length L_{i} and dihedral angle θ_{i}, so to write the corresponding degree of freedom explicitly we need a fixed function f(L,θ). Together with the six values for translation and rotation, the values of f_{i} = f(L_{i},θ_{i}) for each edge form a function ℝ^{3F} → ℝ^{3F} on the realization space of possible shapes, and the key criterion for f is that we want this function to be (at least locally) invertible for all shapes in the space.

Since f_{i} is a function of L_{i} and θ_{i} which in turn can be calculated explicitly from the (x_{j},y_{j},z_{j}), we can write the elements of the top E rows of the Jacobian J in the form ∂_{L}f∂_{x}L + ∂_{θ}f∂_{x}θ etc. So we want to solve |J| ≠ 0 ∀ (x_{j},y_{j},z_{j}) in terms of ∂_{L}f and ∂_{θ}f. But I've already encountered a problem here: I can't find ∂_{x}L etc. I've tried by using F_{j} = {**p** : **p**⋅**v**_{j} = |**v**_{j}|^{2}} to find the co-ordinates of the vertices, and it's a mess. I think I'm missing something.

Any suggestions?

Thanks,

Robin