球体与线的交点

球体与线的交点

我想在 Tikz 中复制以下图像。有人能帮帮我吗?我听说用好的坐标系绘制球体和线条很难……在此处输入图片描述

答案1

欢迎使用 TeX-SE!这会产生类似的东西。它使用tikz-3dplot视图的正交投影和3d库在适当平面上进行投影。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{3d}
\begin{document}
\tdplotsetmaincoords{105}{-10}
\begin{tikzpicture}[tdplot_main_coords,bullet/.style={circle,fill,inner sep=1.2pt}]
 % parameters
 \pgfmathsetmacro{\Radius}{2.5}
 \pgfmathsetmacro{\Angle}{20}
 % axes
 \draw[-stealth] (0,0,0) coordinate (O) -- (0,0,1.2*\Radius);
 \draw[-stealth]  (O) -- (1.2*\Radius,0,0);
 \draw[-stealth]  (O) -- (0,1.2*\Radius,0);
 % sphere
 \draw[ball color=gray,fill opacity=0.3,tdplot_screen_coords] (0,0)
 circle[radius=\Radius];
 % equator
 \begin{scope}[canvas is xy plane at z=0]
  \draw[dashed,thick](\tdplotmainphi:\Radius)
  arc(\tdplotmainphi:\tdplotmainphi-180:\Radius);
  \draw[thick](\tdplotmainphi:\Radius)
  arc(\tdplotmainphi:\tdplotmainphi+180:\Radius);
 \end{scope} 
 % plane that runs through the poles
 \tdplotsetrotatedcoords{-130}{0}{0}
 \begin{scope}[tdplot_rotated_coords,canvas is xz plane at y=0]
  \draw[dashed,thick](-\tdplotmaintheta:\Radius)
   arc(-\tdplotmaintheta:-\tdplotmaintheta+180:\Radius);
  \draw[thick](-\tdplotmaintheta:\Radius)
   arc(-\tdplotmaintheta:-\tdplotmaintheta-180:\Radius);
  \draw[dashed,thick]  (\Angle:\Radius) node[bullet]{} 
    -- (\Angle+180:\Radius) node[bullet]{};
 \end{scope} 
\end{tikzpicture} 
\end{document} 

在此处输入图片描述

相关内容