We consider an n-simplex with n+1 vertices. The input is a list of lists of edge lengths squared. Each of these lists has n+1 elements. For 0 ≤ i, j ≤ n the jth element of the ith element is rij = (distance between vertex i and vertex j)2. rij = rji and rii = 0. In anticipation of a Minkowski space we allow rij to be negative, and perhaps zero.
We adopt vertex 0 as the origin of barycentric coordinates (bcc) and therein we compute the metric tensor gij for 1 ≤ i, j ≤ n:
gij = (r0i + r0j − rij)/2.
(See Pythag.)
Then gij is obtained by inverting the matrix gij.
The rows of gij are normals to n faces ((n−1)-sub-simplexes) expressed in bcc.
The normal to face 0 can be computed considering that the sum of the n+1 normals is 0.
We use the unit face normals to compute various angles.
We will compute the Minkowski Functionals as they are probably relevant to computation of angles.
Here is some Scheme code to which you feed a symmetric array of edge lengths. It computes various things including dihedral angles. Input: (define reg '((0 1 2 2) (1 0 1 1) (2 1 0 2) (2 1 2 0))) is for a right tetrahedron and the program yields
(Simplex edge lengths squared: (0 1 2 2) (1 0 1 1) (2 1 0 2) (2 1 2 0)) (Volume: . 1/6) (Covariant Metric tensor: (1 1 1) (1 2 1) (1 1 2)) (Contravariant metric tensor: (3 -1 -1) (-1 1 0) (-1 0 1)) (Cosines of dihedral angles: 0.5773502691896258 0 0 0.5773502691896258 0.5773502691896258 0) (First trihedral angle: . 0.3398369094541218)For a trihedral angle of a polyhedron whose vertices are all trihedral, consider its supplementary set S. S is a spherical triangle whose vertices are located where the normals to the faces of the trihedral angle meet the large sphere. Every point on the sphere is in the supplementary set of one of the trihedral angles of the polyhedron. The area of the supplementary set can be computed by the classic excess angles formula. The angle is the complement of the angle between the two edges of that face.