Как нарисовать сферу, проходящую через четыре точки, не зная центра и радиуса?

Как нарисовать сферу, проходящую через четыре точки, не зная центра и радиуса?

На основеЭта бумага, у меня есть Героновы тетраэдры - это решетчатые тетраэдры с вершинами O(0, 0, 0), A(15, -60, 20), B(96, 120, 128), C(63, 84, 56)и
основанные на Этот ответЯ пытался

\documentclass[tikz,border=2 mm,12pt]{standalone}
\usepackage{fouriernc}
\usepackage{tikz-3dplot-circleofsphere}
\begin{document} 
    \tdplotsetmaincoords{75}{170} 
    \begin{tikzpicture}[scale=1/10,line cap=butt,line join=round,tdplot_main_coords,declare function={R= 5*sqrt(451369)/14;%
    }] 
    \path 
    coordinate (O) at (0, 0, 0) 
    coordinate (A) at (15, -60, 20) 
    coordinate (B) at (96, 120, 128)
    coordinate (C) at (63, 84, 56)
    coordinate (I) at   (-1383/14, 90/7, 1528/7)
    ; 
    \begin{scope}[tdplot_screen_coords]
    \draw[thick] (I) circle (R);
    \end{scope}
    \end{tikzpicture} 
\end{document}

Я не могу получить результат, потому что Dimension слишком большой. Без вычисления координат центра и радиуса сферы, как я могу нарисовать сферу, проходящую через O, A, B, C?

решение1

Я только что воспользовался ручным калькулятором.

\documentclass[tikz,border=2 mm,12pt]{standalone}
\usepackage{tikz-3dplot}
\begin{document} 
    \tdplotsetmaincoords{75}{170} 
    \begin{tikzpicture}[scale=1/10,line cap=butt,line join=round,tdplot_main_coords] 
    \path 
    coordinate (O) at (0, 0, 0) 
    coordinate (A) at (15, -60, 20) 
    coordinate (B) at (96, 120, 128)
    coordinate (C) at (63, 84, 56)
    coordinate (I) at (-98.79, 12.86, 218.29)
    ; 
    \begin{scope}[tdplot_screen_coords]
    \draw[thick] (I) circle (239.94);
    \end{scope}
    ; 
    \draw[thick] (O)--(A) (O)--(B) (O)--(C) (A)--(B) (A)--(C) (B)--(C);
    \end{tikzpicture} 
\end{document}

демо

решение2

Если ваш вопрос заключается в том, как устранить dimension too largeошибку, один из возможных ответов: с помощью fpu.

\documentclass[tikz,border=2 mm,12pt]{standalone}
\usepackage{fouriernc}
\usepackage{tikz-3dplot-circleofsphere}
\usetikzlibrary{fpu}
\def\pgfmathsetmacroFPU#1#2{\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\pgfmathsetmacro{#1}{#2}%
\pgfmathsmuggle#1\endgroup}%

\begin{document} 
    \tdplotsetmaincoords{75}{170} 
    \begin{tikzpicture}[scale=1/10,line cap=butt,line join=round,tdplot_main_coords,
        %declare function={R= 5*sqrt(451369/(14*14));%  }
        ] 
    \pgfmathsetmacroFPU{\myR}{5*sqrt(451369)/14}
    \path 
    coordinate (O) at (0, 0, 0) 
    coordinate (A) at (15, -60, 20) 
    coordinate (B) at (96, 120, 128)
    coordinate (C) at (63, 84, 56)
    coordinate (I) at   (-1383/14, 90/7, 1528/7)
    ; 
    \begin{scope}[tdplot_screen_coords]
     \draw[thick] (I) circle[radius=\myR];
    \end{scope}
    \end{tikzpicture} 
\end{document}

Связанный контент