Wie kann ich die Punkte A und B in diesem Bild automatisch korrigieren?

Wie kann ich die Punkte A und B in diesem Bild automatisch korrigieren?

Ich versuche, eine allgemeine Methode zu finden, um die Punkte dieses Bildes automatisch zu ermitteln A. BIch bekomme es nicht hin. Ich muss es von Hand berechnen. Bildbeschreibung hier eingeben

\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 Afinden 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-3dplotKonventionen wurden indiese Antwort. Mit diesen können Sie in ein xyFlugzeug 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 alpha1und alpha2die kritischen phiWerte, die bestimmen, wo der Pfad von der Vorderseite zur Rückseite übergeht und somit die Positionen von Aund Banalytisch 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}

Bildbeschreibung hier eingeben

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.

verwandte Informationen