Círculo formado por esferas que se cruzan.

Círculo formado por esferas que se cruzan.

Estoy tratando de hacer un diagrama similar al que tengo a continuación:

  • 2 esferas que se cruzan con centros de x e y
  • El punto medio es (x+y)/2 y desde cualquier centro al punto medio es d/2
  • La distancia desde los centros al punto de intersección es r

Quiero mostrar que todas las intersecciones de las dos esferas se encuentran en un plano que es perpendicular a la línea que conecta los puntos medios, el plano pasa por el punto medio y todos los puntos de intersección de las dos esferas forman un círculo.

De hecho, podría hacer esto si lo hiciera en 2D (en lugar de usar pintura, usaría tikz), pero me pregunto si esto se podría convertir en 3D sin que parezca demasiado ocupado.

1

Hasta ahora, con la ayuda del Gato de Schrodinger, tengo esto (pero estaré trabajando en ello ya que este es el primer tikz en 3D que intento hacer):

\documentclass[tikz,border=3mm]{standalone} \usepackage{tikz-3dplot-circleofsphere} 
\begin{document} 
\tdplotsetmaincoords{70}{200}
\begin{tikzpicture}[tdplot_main_coords,declare function={d=4;R=2.5;}]
\path (0,0,0) coordinate (x) (d,0,0) coordinate (y);
\begin{scope}[tdplot_screen_coords] 
\path[ball color=blue,opacity=0.3] (x) circle[radius=R*1cm]; 
\path[ball color=blue,opacity=1.0] (x) circle[radius=R*0.02cm]; 
\path[ball color=red,opacity=0.3] (y) circle[radius=R*1cm]; 
\path[ball color=red,opacity=1.0] (y) circle[radius=R*0.02cm]; 
\node(draw) at (0.5,0,0) {y};
\node(draw) at (-4.2,0.5,0) {x};
\node(draw) at (-1.8,2,0) {z};
\draw[black, ultra thick] (x) -- (y);
\draw[blue, ultra thick] (x) -- (-1.7,1.7);
\draw[red, ultra thick] (y) -- (-1.7,1.7);
\end{scope} 
\tdplotCsDrawCircle[tdplotCsFront/.style={thick}]{R}{0}{90}{90-atan2(sqrt(R*R-d*d/4),d/2)} 
\end{tikzpicture} 
\end{document}

Respuesta1

Este es mi comentario detallado con algunos ingredientes adicionales que se parecen a sus propias adiciones. Este código se basa entikz-3dplot-circleofsphere , que se puede encontraraquí.

\documentclass[tikz,border=3mm]{standalone} 
\usepackage{tikz-3dplot-circleofsphere} 
\begin{document} 
\tdplotsetmaincoords{70}{200}
\begin{tikzpicture}[tdplot_main_coords,declare function={d=4;R=2.5;}]
  \path (0,0,0) coordinate[label=right:$x$] (x) 
      (d,0,0) coordinate[label=left:$y$] (y)
      (d/2,0,{sqrt(R*R-d*d/4)}) coordinate[label=above:$z$] (z);
  \draw[black, ultra thick] (y) -- (d/2,0,0);
  \draw[red, ultra thick] (y) -- (z);   
  \tdplotCsDrawCircle[tdplotCsFront/.style={draw=none,fill=gray,fill opacity=0.7},
      tdplotCsBack/.style={thin,gray,fill=gray,fill opacity=0.7}]{R}{0}{90}{90-atan2(sqrt(R*R-d*d/4),d/2)} 
  \draw[black, ultra thick] (x) -- (d/2,0,0);
  \draw[blue, ultra thick] (x) -- (z);
  \fill foreach \X in {x,y,z} {(\X) circle[radius=1.2pt]};
  \begin{scope}[tdplot_screen_coords] 
    \path[ball color=blue,opacity=0.6] (x) circle[radius=R*1cm]; 
    \path[ball color=red,opacity=0.6] (y) circle[radius=R*1cm]; 
  \end{scope} 
  \tdplotCsDrawCircle[tdplotCsFront/.style={thick},
      tdplotCsBack/.style={draw=none}]{R}{0}{90}{90-atan2(sqrt(R*R-d*d/4),d/2)} 
\end{tikzpicture} 
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Esta no es una respuesta. Quiero mostrar que la forma de dibujar el círculo es la intersección de dos esferas según laresponde aquí.

Elijo dos esferas que tienen ecuaciones (x - 3)^2 + (y + 4)^2 + z^2 = 64y (x - 3)^2 + (y - 2)^2 + (z - 8)^2 = 36. Mi código

\documentclass[tikz,border=2mm, 12 pt]{standalone}
\usepackage{tikz-3dplot-circleofsphere}
\usetikzlibrary{3dtools} 
\begin{document}
\tdplotsetmaincoords{70}{100}
\begin{tikzpicture}[scale=1,tdplot_main_coords,declare function={R=8;R1=6;
}]
\path (3,-4,8) coordinate (A)
({(9-sqrt(95))/3},8/3,3) coordinate (B)
({(9+sqrt(95))/3},8/3,3) coordinate (C)
(3,2,8) coordinate (T)
(3,-4,0) coordinate (I);
\begin{scope}[tdplot_screen_coords]
 \fill[ball color=red,opacity=0.6] (I) circle (R);
 \fill[ball color=green!50, opacity=1.0] (T) circle (R1);
\end{scope}
\foreach \p in {A,B,C,I,T}
\draw[fill=black] (\p) circle (1.5pt);
\foreach \p/\g in {A/90,C/-90,B/-90,I/-90,T/90}
\path (\p)+(\g:3mm) node{$\p$};
\pic[draw=none]{3d circle through 3 points={A={(A)},B={(B)},C={(C)}}};
\begin{scope}[shift={(T)}]
\path[overlay] [3d coordinate={(myn)=(A)-(B)x(A)-(C)},
3d coordinate={(A-M)=(A)-(M)}];
\pgfmathsetmacro{\myaxisangles}{axisangles("(myn)")}
\pgfmathsetmacro{\myalpha}{{\myaxisangles}[0]}
\pgfmathsetmacro{\mybeta}{{\myaxisangles}[1]}
\pgfmathsetmacro{\mygamma}{acos(sqrt(TD("(A-M)o(A-M)"))/R1)}
\tdplotCsDrawCircle[tdplotCsFront/.style={thick,red}]{R1}{\myalpha}{\mybeta}{\mygamma}  
\end{scope}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Aquí hay una solución para el caso general en el que 2 radios posiblemente diferentes. Primero calculamos como en la figura plana.

ingrese la descripción de la imagen aquí

// http://asymptote.ualberta.ca/
usepackage("ragged2e"); // for justify command
usepackage("amsmath");
unitsize(7mm);
real r=4.2, s=3; // two radii
real c=5;     // distance of two centers
pair A=(0,0), B=c*dir(0);   //two centers 
pair M=intersectionpoints(circle(A,r),circle(B,s))[0];
real dAH=(c^2+r^2-s^2)/(2*c);
real h=sqrt(r^2-dAH^2);
pair H=A+dAH*unit(B-A);
draw(Label("$h$",align=W),M--H,magenta);
draw(Label("$r$",align=NW),A--M,red);
draw(Label("$s$",align=NE),B--M,blue);

draw(circle(A,r),red);
draw(circle(B,s),blue);

dot(H^^M,magenta);

dot("$A$",A,SW);
dot("$B$",B,SE);
label("$M$",M+.5dir(80),magenta);
label("$H$",H,S,magenta);
draw(Label("$c$"),A--B);

string explanation=minipage("\justify{
By the law of cosines for the triangle $AMH$, we have
$$AH=r \cos A=\dfrac{c^2+r^2-s^2}{2c}.$$
Hence, the radius of the intersecting circle is
$$h=\sqrt{r^2-AH^2}.$$
}",7cm);
label(explanation,point(E)+(6,0),Fill(3mm,lightyellow));

shipout(bbox(5mm,invisible));

Y ahora las cosas están traducidas a 3D, a diferencia dehttps://tex.stackexchange.com/a/121900/140722. El módulo graph3es para una mejor precisión del círculo de intersección Circle(H,h,normal=B-A).

ingrese la descripción de la imagen aquí

// http://asymptote.ualberta.ca/ 
unitsize(1cm);
//import math;
//import three;
import graph3; // implicitly import math and three;

real r=3.5, s=4; // two radii
real c=5;     // distance of two centers
triple A=(0,0,0), B=c*dir(90,90);   //two centers 
surface sphAr=shift(A)*scale3(r)*unitsphere;
surface sphBs=shift(B)*scale3(s)*unitsphere;

draw(sphAr,red+opacity(.2));
draw(sphBs,blue+opacity(.2));
real dAH=(c^2+r^2-s^2)/(2*c);
real h=sqrt(r^2-dAH^2);
triple H=A+dAH*unit(B-A);
draw(Circle(H,h,normal=B-A),magenta+1pt);
dot(H,magenta);

dot("$A$",A,W);
dot("$B$",B);
draw(A--B);
//axes3("$x$","$y$","$z$");

información relacionada