The following has come up during an undergraduate research project. It's rather elementary, but we are having trouble finding anywhere that mentions it. It might have something to do with rigidity.

Consider two tetrahedrons that share a base.enter image description here What is the relationship between the lengths of its sides and the diagonal? We suspect there should be some polynomial relationship between the lengths (that's what happens in the plane case). By introducing Cartesian coordinates and assuming the triangle is ABC is in the xy-plane, A is the origin, and AB is on the x-axis, I was able to compute the coordinates of C using sines and cosines. I'm assuming I know the lengths of all sides except for the orange diagonal in the picture. I can then look at the intersection of the three spheres centered at A,B and C with radii |AD|, |BD|, and |CD| to compute |D|. I can do the same thing for E, and then I can use the distance formula to solve for |DE|. I can replace my sine in compute C with $\sqrt{1-\cos^2(\theta)}$, and then use the law of cosines to write cosines in terms of the lengths of the triangle. In this way I get a relationship just between the lengths of the tetrahedron. I'm not very interested in computing |DE| from the lengths of the other sides, we're really just after a relationship between the sides that is an invariant for all "double tetrahedrons" (if anyone knows what this shape is called, please let me know).

Computing the relationship in the manner I did above worked, with the help of Maple, the the expression was had lots of square roots in it. The problem is that the y coordinate of C contained a square root ($\sqrt{1-cos^2(\theta)}$) where $\theta$ is the ABC angle and $\cos(\theta)$ turns out to be $\frac{AB^2+BC^2-AC^2}{2AB\cdot BC}$. My professor suggested to take my original relation, solve to the y coordinate of C, and square it and hope this leaves up with a polynomial. Maple, however, was unable to solve for this.

Does anybody have any idea on how to approach this problem, or any reference to similar problems? In the plane case - with polygons and diagonals - we were able to work out the relationships between the lengths for pentagons and were able to give results for $n$-gons. The relationships turn out to be cubic polynomials with the square of the lengths as variables). This stuff is very elementary, but we cannot find anyplace where it has been done. I've ran out of time right now, but I will return later tonight to try and make the problem more clear or go through more details. Thanks in advance for any insights or comments.


This is an exercise in lots of substitution. There are ways to get Mathematica to handle it somewhat mechanically --my first run-through used one of my favorite tools, Resultant-- but you can also do pretty well "manually" (using Mathematica to perform the straightforward, but messy, algebraic manipulations).

I'll relabel your figure so that the "central" vertex is $O$, and the "outer" tetrahedron has vertices $A$, $B$, $C$, and $D$. We may assume that $O$ lies at the origin, $A$ lies on the $x$-axis, and $B$ lies in the $xy$-plane. So

$$ \begin{align} O &= (0,0,0) \\ A &= (x_a,0,0) \\ B &= (x_b,y_b,0) \\ C &= (x_c,y_c,z_c) \\ D &= (x_d,y_d,z_d) \end{align} $$


$$ \begin{align} OA\;\; &= x_a \\ OB^2 &= x_b^2 + y_b^2 \\ OC^2 &= x_c^2 + y_c^2 + z_c^2 \\ OD^2 &= x_d^2 + y_d^2 + z_d^2 \\ AB^2 &= ( x_a - x_b )^2 + y_b^2 = OA^2 + OB^2 - 2 \; OA \; x_b \\ AC^2 &= ( x_a - x_c )^2 + y_c^2 + z_c^2 = OA^2 + OC^2 - 2 \; OA \; x_c \\ AD^2 &= ( x_a - x_d )^2 + y_d^2 + z_d^2 = OA^2 + OD^2 - 2 \; OA \; x_d \\ BC^2 &= ( x_b - x_c )^2 + ( y_b - y_c )^2 + z_c^2 = OB^2 + OC^2 - 2 x_b x_c - 2 y_b y_c \\ BD^2 &= ( x_b - x_d )^2 + ( y_b - y_d )^2 + z_d^2 = OB^2 + OD^2 - 2 x_b x_d - 2 y_b y_d \\ CD^2 &= ( x_c - x_d )^2 + ( y_c - y_d )^2 + ( z_c - z_d )^2 = OC^2 + OD^2 - 2 x_c x_d - 2 y_c y_d - 2 z_c z_d \end{align} $$

The goal is to combine these equations in such a way that the $x$s, $y$s, and $z$s disappear, leaving only the lengths of edges. To start, we can easily solve for $x_b$, $x_c$, and $x_d$ ... $$\begin{align} x_b &= \frac{1}{2 \; OA} \left( OA^2 + OB^2 - AB^2 \right) \\ x_c &= \frac{1}{2 \; OA} \left( OA^2 + OC^2 - AC^2 \right) \\ x_d &= \frac{1}{2 \; OA} \left( OA^2 + OD^2 - AD^2 \right) \\ \end{align}$$

We can then isolate the $y_b$, $y_c$, and $y_d$ elements in terms of the known $x$ values (which I'll mark with hats, rather than substituting-in) and still-unknown $z$ values. To save space later, I introduce the symbols $[OBC]$, etc.

$$ \begin{align} y_b^2 &= OB^2 - \hat{x}_b^2 \\ y_c^2 &= OC^2 - \hat{x}_c^2 - z_c^2 \\ y_d^2 &= OD^2 - \hat{x}_d^2 - z_d^2 \\ 2 y_b y_c &= OB^2 + OC^2 - BC^2 - 2 \hat{x}_b \hat{x}_c =: [OBC] - 2 \hat{x}_b \hat{x}_c \\ 2 y_b y_d &= OB^2 + OD^2 - BD^2 - 2 \hat{x}_b \hat{x}_d =: [OBD] - 2 \hat{x}_b \hat{x}_d \\ 2 y_c y_d &= OC^2 + OD^2 - CD^2 - 2 \hat{x}_c \hat{x}_d - 2 z_c z_d =: [OCD] - 2 \hat{x}_c \hat{x}_d - 2 z_c z_d \end{align}$$

Therefore ...

$$\begin{align} 4 \left( OB^2 - \hat{x}_b^2 \right)\left( OC^2 - \hat{x}_c^2 - z_c^2 \right) &= \left( [OBC] - 2 \hat{x}_b \hat{x}_c \right)^2 \\ 4 \left( OB^2 - \hat{x}_b^2 \right) \left( OD^2 - \hat{x}_d^2 - z_d^2 \right) &= \left( [OBD] - 2 \hat{x}_b \hat{x}_d \right)^2 \\ 2 y_c y_d = \frac{2 (2 y_b y_c) ( 2 y_b y_d )}{4 y_b^2} &= \\ \frac{\left( [OBC] - 2 \hat{x}_b \hat{x}_c\right)\left( [OBD] - 2 \hat{x}_b \hat{x}_d \right)}{2\left( OB^2 - \hat{x}_b^2\right)^2 } &= [OCD] - 2 \hat{x}_c \hat{x}_d - 2 z_c z_d \end{align} $$

[EDIT My third equation had a stray square. Closing out the solution is a bit easier than I had indicated.]

From here, the first two equations give you $z_c^2$ and $z_d^2$, while the third can be solved for $z_c z_d$. Substitute the expressions into the identity $z_c^2 z_d^2 = ( z_c z_d )^2$ and you'll have obtain a polynomial in the edge lengths.

The reason I only outlined each step is because that final polynomial has about 65,000 terms. That's where Mathematica comes in handy.

As I mentioned, you can use Mathematica's Resultant to churn through this exercise as well. The resultant (or "Sylvester's Eliminant") of two polynomials is a polynomial with one variable eliminated. With a larger system like the one above, proceed with a kind of enhanced Gaussian Elimination strategy: Pick your favorite equation, then pair it with each remaining equation, in each case computing a resultant that eliminates (say) $x_b$. Then choose a favorite among those resultants, pair it with the others to eliminate (say) $x_c$. Then $x_d$, $y_b$, $y_c$, $y_d$, $z_c$, and $z_d$. You end up with a (high-degree) polynomial in any remaining variables ... in this case, the edge lengths. (In using this methodology on this problem, I hit a couple of complications I won't discuss here. Choosing a different elimination order may have helped --it often does-- but I didn't give it much thought since the "manual" method turned out to be pretty straightforward.)

  • $\begingroup$ Thank you very much. This answer helped a lot. I was not aware of Mathematica's Resultant function. I tried something like this in Maple, but I got a little stuck. $\endgroup$ – BCW Feb 15 '11 at 19:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.