# How can reduce the code to get coordinates of vertices of tetrahedron so that O(0,0,0) is center of circumsphere?

Let be given tetrahedron $$SABC$$, $$SA=14/3$$, $$SB=7*\sqrt{13}/3$$, $$SC=2*\sqrt{193}/3$$, $$AB=7$$, $$BC=3$$, $$AC=8$$. I want to find the coordinates of $$A, B, C, S$$ so that $$O(0,0,0)$$ is center of circumsphere of tetrahedron $$SABC$$. I tried

SSSTriangle[3, 8, 7]


Triangle[{{0, 0}, {7, 0}, {52/7, (12 Sqrt)/7}}]

s = {x, y, z};
a = {0, 0, 0};
b = {7, 0, 0};
c = {52/7, (12 Sqrt)/7, 0};
Reduce[{EuclideanDistance[s, a] == 14/3,
EuclideanDistance[s, b] == 7*Sqrt/3,
EuclideanDistance[s, c] == 2*Sqrt/3}, {x, y, z}, Reals]

v = Circumsphere[{{0, 0, 0}, {7, 0, 0}, {52/7, (12 Sqrt)/7, 0}, {0,0, 14/3}}][]


{7/2, 7/(2 Sqrt), 7/3}

{{0, 0, 0}, {7, 0, 0}, {52/7, (12 Sqrt)/7, 0}, {0, 0, 14/3}} + {-v, -v, -v, -v} // Simplify


{{-(7/2), -(7/(2 Sqrt)), -(7/3)}, {7/ 2, -(7/(2 Sqrt)), -(7/3)}, {55/14, 23/( 14 Sqrt), -(7/3)}, {-(7/2), -(7/(2 Sqrt)), 7/3}}

Circumsphere[{{-(7/2), -(7/(2 Sqrt)), -(7/3)}, {7/
2, -(7/(2 Sqrt)), -(7/3)}, {55/14, 23/(
14 Sqrt), -(7/3)}, {-(7/2), -(7/(2 Sqrt)), 7/3}}]


Sphere[{0, 0, 0}, 14/3]

Interesting problem guys. Using Bill's code above, and making a small correction in the solution of o (changing 0 to o) ,using Solve, and Translate[graphics,-center], here's what I get for one of the 8 solutions:

    s = {0, 0, 0};
a = {ax, 0, 0};
b = {bx, by, 0};
c = {cx, cy, cz};
vertexSolution =
Solve[{EuclideanDistance[s, a] == 14/3,
EuclideanDistance[s, b] == 7*Sqrt/3,
EuclideanDistance[s, c] == 2*Sqrt/3,
EuclideanDistance[a, b] == 7, EuclideanDistance[b, c] == 3,
EuclideanDistance[a, c] == 8}, {ax, bx, by, cx, cy, cz}, Reals]
theVertices = {s, a, b, c} /. vertexSolution
o = {ox, oy, oz};
theCenters =
Solve[{(EuclideanDistance[s, o] == EuclideanDistance[a, o] ==
EuclideanDistance[b, o] == EuclideanDistance[c, o]) /.
vertexSolution[]}, {ox, oy, oz}, Reals]

theRadius = EuclideanDistance[{0, 0, 0}, o /. theCenters[]];
thePoint = o /. theCenters[];
myCenter = {Red, PointSize[0.008], Point[o /. theCenters[]]};
myTetra = {Opacity[0.2], Tetrahedron[theVertices[]]};
Graphics3D[
Translate[#, -thePoint] & /@ {myCenter, theSphere, myTetra},
Axes -> True] • Thank you for finding my mistake. – Bill Sep 12 '19 at 16:18
• If I scrape-n-paste your code into a fresh notebook and evalute it then I find a small problem. myVerticies in your code perhaps should be vertexSolution but I am just guessing. Thanks for your work on this. – Bill Sep 13 '19 at 3:57
• @Dominic You answer don't put O(0,0,0) as center of sphere. Can you make this? – minhthien_2016 Sep 13 '19 at 5:48
• Ok thanks Bill. I fixed the code above so others can run without problems. Also, @minhthien, the code as I see it does place the center of the sphere at the origin. Perhaps I'm mis-understanding the problem though. Is not the red point in the plot (the center of the sphere) at the origin when you run it and look at it? – Dominic Sep 13 '19 at 12:16

Try this. Six equations and six unknowns.

s = {0, 0, 0};
a = {ax, 0, 0};
b = {bx, by, 0};
c = {cx, cy, cz};
Reduce[{EuclideanDistance[s, a] == 14/3,
EuclideanDistance[s, b] == 7*Sqrt/3,
EuclideanDistance[s, c] == 2*Sqrt/3,
EuclideanDistance[a, b] == 7,
EuclideanDistance[b, c] == 3,
EuclideanDistance[a, c] == 8}, {ax,bx,by,cx,cy,cz}, Reals]


and in a moment it returns eight equivalent solutions, pick any one and then

EDIT

As noticed by Dominic, my EuclideanDistance[c, 0] should have been EuclideanDistance[c, o]. Now corrected.

o={ox,oy,oz};
Reduce[ax == -14/3 && bx == -14/3 && by == -7 &&
cx == -14/3 && cy == -52/7 && cz == (-12*Sqrt)/7&&
EuclideanDistance[s, o] == EuclideanDistance[a, o] ==
EuclideanDistance[b, o] == EuclideanDistance[c, o],{ox,oy,oz},Reals]


and in a moment it returns a solution.

But that does not place the center of the sphere at {0,0,0} so translate the whole system to make that so.

Perhaps some really well done 3D plots of the points and edges might provide enlightenment.

As always, check all my work VERY carefully before you depend on it.

I think we are somewhat lucky that this choice of method quickly found a solution. With this many variables I would be a little less surprised if Mathematica were almost paralyzed by the number of alternatives to consider.

There is an infinite family of solutions to the original problem. Consider, for example, putting the point s on the sphere at any particular latitude and longitude and then let the tetrahedron be rotated around the axis from the origin to s by an arbitrary angle between 0 and 2 Pi.