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 Fj by the point vj = (xj,yj,zj) 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 Li 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 fi = f(Li,θ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 fi is a function of Li and θi which in turn can be calculated explicitly from the (xj,yj,zj), we can write the elements of the top E rows of the Jacobian J in the form ∂Lf∂xL + ∂θf∂xθ etc. So we want to solve |J| ≠ 0 ∀ (xj,yj,zj) in terms of ∂Lf and ∂θf. But I've already encountered a problem here: I can't find ∂xL etc. I've tried by using Fj = {p : p⋅vj = |vj|2} to find the co-ordinates of the vertices, and it's a mess. I think I'm missing something.
Any suggestions?
Thanks,
Robin