We adopt vertex 0 as the origin of barycentric coordinates (**bcc**) and therein we compute the metric tensor g_{ij} for 1 ≤ i, j ≤ n:

g_{ij} = (r_{0i} + r_{0j} − r_{ij})/2.
(See Pythag.)

Then g^{ij} is obtained by inverting the matrix g_{ij}.
The rows of g^{ij} 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.