이 그림에서 A점과 B점을 자동으로 수정하려면 어떻게 해야 합니까?

이 그림에서 A점과 B점을 자동으로 수정하려면 어떻게 해야 합니까?

이 사진의 점 A과 자동 을 찾는 일반적인 방법을 찾으려고 합니다 . B나는 그것을 얻을 수 없다. 손으로 계산해야 해요. 여기에 이미지 설명을 입력하세요

\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}

A포인트 를 자동으로 찾아내는 방법이 있나요 B?

답변1

AFAIK 앞면의 스트레치와 뒷면의 스트레치를 구별하는 중요한 값을 계산하는 첫 번째 게시물은 다음과 같습니다.이것. (관심 있는 모든 분들께: 이것이 제가 말하는 "신용 부여"의 의미입니다. 비록 다음에서는 다른 공식과 매크로를 사용하겠지만, 파생에 대해 설명하고 다음 작업에 사용할 수 있는 게시물을 볼 수 있어서 좋았습니다. 내 결과를 비교하세요. 저는 개인적으로 Alain Matthes 답변에 많은 링크가 있고 사용자가 관련 게시물을 찾는 간단한 방법이 있기 때문에 항상 이러한 "참조"를 추가해야 한다고 생각합니다. 개인적으로 저는 Alain이 그에 대한 공로를 인정받을 자격이 있다고 생각합니다. 그것과 다른 좌표에 있지만 관례 tikz-3dplot의 유사한 표현은tikz-3dplot이 답변. 그걸로 비행기로 갈아탈 수 있고 xy말해야 할 것은

 \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);

여기에 경로가 앞쪽에서 뒤쪽으로 전환되는 위치를 결정하고 따라서 위치를 분석적으로 고정하는 중요한 값 alpha1이 있습니다 .alpha2phiAB

\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}

여기에 이미지 설명을 입력하세요

이것을 출력과 매우 주의 깊게 비교하면 의 위치에 약간의 불일치가 있음을 알 수 있습니다 A. 이는 숫자 문제일 수도 있고 사용 중 실수가 있을 수도 있습니다.

관련 정보