如何自动找到三维中两个圆的交点?

如何自动找到三维中两个圆的交点?

我想在 3D 中绘制圆的直径。在我的代码中,两个点 G 和 F 的坐标是我手工计算的。如果我\tdplotsetrotatedcoords{90}{90}{0} 用不同的数字更改线条,例如\tdplotsetrotatedcoords{30}{90}{0}。我怎样才能始终将 G 和 F 命名为两个圆的点的交点 \tdplotsetrotatedcoords{a}{b}{0} 并x^2+y^2=9像这张图片一样(带有任何 a 和 b)? 在此处输入图片描述

这是我的代码。

\documentclass[border=2mm,tikz]{standalone}
\usepackage{fouriernc}
\usepackage{tikz-3dplot}
\usetikzlibrary{calc,backgrounds}
\usepackage{pgfplots}
\begin{document}
\pgfmathsetmacro{\alpha}{55}
\pgfmathsetmacro{\beta}{60}
\tdplotsetmaincoords{\alpha}{\beta} % Perspective on the main coordinate system
\pgfmathsetmacro{\radius}{3} % radius of the circle
\pgfmathsetmacro{\t}{2}
\pgfmathsetmacro{\k}{1.6}
\begin{tikzpicture}[scale=1,tdplot_main_coords]
\draw[thick,domain={-180+\beta}:\beta] plot ({\radius*cos(\x)}, {\radius*sin(\x)});
\draw[thick,dashed,domain=\beta:{180+\beta}] plot ({\radius*cos(\x)}, {\radius*sin(\x)});
\tdplotsetrotatedcoords{90}{90}{0}
\draw [thick,tdplot_rotated_coords,domain=160:340] plot ({\radius*cos(\x)}, {\radius*sin(\x)});
\draw [thick, dashed,tdplot_rotated_coords,domain=-20:180] plot ({\radius*cos(\x)}, {\radius*sin(\x)});

\path
coordinate (O) at  (0,0,0)
coordinate (B) at  (-\t,{sqrt(\radius^2-\t^2)},0) 
coordinate (C) at  ($(O)-(B)$) 
coordinate (D) at  ($(O)-2*(B)$) 
coordinate (E) at  (-\t*\k,{\k*sqrt(9-\t^2)},0) %\k*(B)
coordinate (K) at  ($(O)+2*(B)$)
coordinate (F) at  (\radius,0,0)
coordinate (G) at  ($(O)-(F)$)
;
\draw[thick, dashed] (O) -- (E) node[midway,left] {$R$};
\draw[thick,dashed] (O) -- (C);
\draw[thick,dashed] (F) -- (G);
\draw[thick] (D) -- (C);
\draw[thick] (E) -- (K);
\draw[thick,dashed] (E) -- (B);
\foreach \v/\position in { B/above,O/right,C/below,F/right,G/right} {\draw[draw =black, fill=black] (\v) circle (1.2pt) node [\position=0.2mm] {$\v$};
}

\begin{scope}[tdplot_screen_coords, on background layer]
\fill[ball color=white!50, opacity=1.0] (0,0,0) circle (\radius);
\end{scope}
\end{tikzpicture}
\end{document} 

答案1

使用旋转的坐标来定义 F 和 G(无论如何,是 F)。

\begin{scope}[tdplot_rotated_coords]
  \path
  coordinate (F) at  (0,\radius,0)
  coordinate (G) at  ($(O)-(F)$);
\end{scope}

至于球体前部/后部的边缘,如下所示这里

相关内容