이 사진의 점 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
이 있습니다 .alpha2
phi
A
B
\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
. 이는 숫자 문제일 수도 있고 사용 중 실수가 있을 수도 있습니다.