Ich versuche, eine allgemeine Methode zu finden, um die Punkte dieses Bildes automatisch zu ermitteln A
. B
Ich bekomme es nicht hin. Ich muss es von Hand berechnen.
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{fouriernc}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage{tikz-3dplot}
\usetikzlibrary{calc,backgrounds}
\begin{document}
\tdplotsetmaincoords{60}{110}
\begin{tikzpicture}
[scale=1,tdplot_main_coords]
\path
coordinate (O) at (0,0,0)
coordinate (T) at (0,0,3)
coordinate (B) at (3,{-sqrt(7)},0)
coordinate (A) at (0,4,0);
\draw[thick, dashed] (O) -- (A) node[midway,sloped,below] {$r$};
\draw[thick, dashed] (T) -- (A) node[midway,right] {$R$};
\draw[thick, dashed] (T) -- (O) node[midway,left] {$d$};
\foreach \v/\position in {T/above,O/below,A/below,B/below} {
\draw[draw =black, fill=black] (\v) circle (1.2pt) node [\position=0.2mm] {$\v$};
}
\begin{scope}[tdplot_screen_coords, on background layer]
\pgfmathsetmacro{\R}{5}%
\pgfmathsetmacro{\r}{4}%
\fill[ball color=cyan!50, opacity=1.0] (T) circle (\R);
\end{scope}
\tkzMarkRightAngle[size = 0.3](T,O,A);
\draw [thick] (B) arc (318.5:450:4);
\draw [thick, dashed] (A) arc (90:318.5:4);
\end{tikzpicture}
\end{document}
Gibt es eine Möglichkeit, den Punkt automatisch zu A
finden B
?
Antwort1
Soweit ich weiß, war der erste Beitrag, in dem die kritischen Werte ermittelt wurden, die die Dehnungen auf der Vorderseite von denen auf der Rückseite unterscheiden,Das. (An alle, die es interessiert: das meine ich mit „Anerkennung geben“. Auch wenn im Folgenden andere Formeln und Makros verwendet werden, war es für mich schön, einen Beitrag zu sehen, in dem die Herleitung erklärt wird und den ich zum Vergleichen meiner Ergebnisse verwenden kann. Ich persönlich bin der Meinung, dass man diese „Referenzen“ immer hinzufügen sollte, da die Antwort von Alain Matthes dann viele Links enthält und Benutzer eine einfache Möglichkeit haben, nach verwandten Beiträgen zu suchen. Ich persönlich bin einfach der Meinung, dass Alain dafür Anerkennung verdient.) Diese Dinge wurden in anderen Koordinaten als jene gemacht tikz-3dplot
, aber die analogen Ausdrücke in den tikz-3dplot
Konventionen wurden indiese Antwort. Mit diesen können Sie in ein xy
Flugzeug umsteigen und alles, was Sie sagen müssen, ist
\draw[thick] ({alpha1(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:4)
coordinate (A)
arc({alpha1(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:
{alpha2(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:4) coordinate(B);
Dabei sind alpha1
und alpha2
die kritischen phi
Werte, die bestimmen, wo der Pfad von der Vorderseite zur Rückseite übergeht und somit die Positionen von A
und B
analytisch festlegen.
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{fouriernc}
\usepackage{tikz-3dplot}
\usetikzlibrary{backgrounds}
\begin{document}
\tdplotsetmaincoords{60}{110}
\begin{tikzpicture}[scale=1,tdplot_main_coords,declare function={R=5;
alpha1(\th,\ph,\b)=\ph-asin(cot(\th)*tan(\b));%
alpha2(\th,\ph,\b)=-180+\ph+asin(cot(\th)*tan(\b));%
beta1(\th,\ph,\a)=90+atan(cot(\th)/sin(\a-\ph));%
beta2(\th,\ph,\a)=270+atan(cot(\th)/sin(\a-\ph));%
}]
\path
coordinate (O) at (0,0,0)
coordinate (T) at (0,0,3);
\begin{scope}[tdplot_screen_coords, on background layer]
\fill[ball color=cyan!50, opacity=1.0] (T) circle (R);
\end{scope}
\begin{scope}[canvas is xy plane at z={3-sqrt(5^2-4^2)}]
\draw[thick,dashed] circle[radius=4cm];
\draw[thick] ({alpha1(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:4)
coordinate (A)
arc({alpha1(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:
{alpha2(\tdplotmaintheta,\tdplotmainphi,{atan(4/5)})}:4) coordinate(B);
\end{scope}
\begin{scope}[on background layer]
\draw[thick, dashed] (O) -- (A) node[midway,sloped,below] {$r$};
\draw[thick, dashed] (T) -- (A) node[midway,right] {$R$};
\draw[thick, dashed] (T) -- (O) node[midway,left] {$d$};
\foreach \v/\position in {T/above,O/below,A/below,B/below} {
\draw[draw =black, fill=black] (\v) circle (1.2pt) node [\position=0.2mm] {$\v$};
}
\end{scope}
\end{tikzpicture}
\end{document}
Wenn Sie dies sehr sorgfältig mit Ihrer Ausgabe vergleichen, sehen Sie, dass es eine winzige Diskrepanz in der Position von gibt A
. Dies könnte ein numerisches Problem sein oder einer von uns hat einen Fehler gemacht.