tikz add tag
Anonymous 1123
I want to construct triangle with three sides `3, 5, 7` in the `xy` plane. My code
```
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{intersections}
\begin{document}
	\tdplotsetmaincoords{60}{150}
	\begin{tikzpicture}[scale=1,tdplot_main_coords,line join = round, 
		line cap = round, declare function={R=5;}]
		\path
		(0,0,0) coordinate (B)
		(0, 7, 0) coordinate (C)
			;
			\begin{scope}[canvas is xy plane at z=0]
			\draw[name path=cB] (B) circle[radius=3];
			\draw[name path=cC] (C) circle[radius=5];
			\path [name intersections={of=cB and cC}];
			\coordinate (A) at (intersection-1);
			\path [name intersections={of=cB and cC}];
			\coordinate (D) at (intersection-2);
			\end{scope}
		\path foreach \p/\g in {B/90,C/90,A/60,D/90}
		{ (\p) node[circle,fill,inner sep=1pt,label=\g:{{$\p$}}]{}};
		\draw (A) -- (B) --(C) --cycle
		(C) -- (B) --(D) --cycle
		;
\end{tikzpicture}
\end{document}
```
![ScreenHunter 971.png](/image?hash=d3eb8124876e33aa57fba9a31d2da5c3fb0b5846ab1496284ab1092b75865c10)
If the plane is not `xy` plane, How to find intersection point of two circles in any plane?

**UPDATE**
Find intersection of two circles `(ABC)` and `(ABD)` where 
```
(-4, 2, 3) coordinate (A)
		(1, -2, 6) coordinate (B)
		(1, 5, 7) coordinate (C) 
		(5,2,6) coordinate (D)
```
This picture is drawn with Geosplan - Geospacw [here](http://www.aid-creem.org/)
![ScreenHunter 973.png](/image?hash=ceabe971728d06f10331d419718ce31df3cf61b6890d19d2dd75965de3f40386)

I copied this code from comment
```
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{3dtools,intersections}
\begin{document}
	\tdplotsetmaincoords{60}{150}
	\begin{tikzpicture}[scale=1,tdplot_main_coords,line join = round, 
		line cap = round, declare function={R=5;}]
		\path
		(1,2,3) coordinate (I)
		(-4, 2, 3) coordinate (A)
		(1, -2, 6) coordinate (B)
		(1, 5, 7) coordinate (C) 
		(5,2,6) coordinate (D)
		;
		\path[every path/.append style={name path global=c1}] pic{3d circle through 3 points={%
				A={(A)},B={(B)},C={(C)},center name=H}};
		\path[every path/.append style={name path global=c2}] pic{3d circle through 3 points={% 
				A={(A)},B={(B)},C={(D)},center name= K}};
		%\path [name intersections={of=c1 and c2}];
		
		\begin{scope}[shift={(I)}]
			\draw[tdplot_screen_coords] (I) circle[radius=R]; 
		\end{scope}	
		\path[name intersections={of=c1 and c2,total=\t}]
		%\pgfextra{\typeout{\t}}
		foreach \X in {1,...,\t}
		{(intersection-\X) node[circle,draw,inner sep=1ex,label=above:$\X$]{}};
		\path foreach \p/\g in {I/0,A/90,B/90,C/90,D/90}
		{ (\p) node[circle,fill,inner sep=1pt,label=\g:{{$\p$}}]{}};
	\end{tikzpicture}
\end{document} 
```
I got incorrect result
![ScreenHunter 974.png](/image?hash=63e35a785ae456061cb9cb0a0857a233d959bf503f411d0fed7e3fd9c799b884)
Top Answer
marmot
Here is one possible way to answer the question. We are given two points, `A` and `B`, which are the centers of the circles or radii `r1` and `r2`, respectively. A third point `C` which is not collinear with `A--B` defines a plane in three dimensions going through `A`, `B` and `C`. Then there are four cases:
1. The distance `d` between `A` and `B` is larger than the sum of the two radii, i.e. `d>r1+r2`, or `r1>r2+d` or `r2>r1+d`, in which case there is no intersection.
2. `r1+r2=d`, in which case there is a unique intersection.
3. `r1+r2>d` but neither `r1>r2+d` nor `r2>r1+d`. Then there are two intersections.

These cases are covered by the following code.

```
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tikz-3dplot}% https://github.com/marmotghost/tikz-3dtools
\usetikzlibrary{3dtools}
\begin{document}
\tdplotsetmaincoords{60}{150}
\begin{tikzpicture}[scale=1,tdplot_main_coords,line join = round, 
	line cap = round, declare function={r1=5;r2=4;},
	declare function={cosinelaw(\a,\b,\c)=acos((\a*\a+\b*\b-\c*\c)/(2*\a*\b));}]
	\path (1,2,3) coordinate (A)
	 (4,5,6) coordinate (B)
	 (2,1,-3) coordinate (C);
	 % distance
	 \pgfmathsetmacro{\myd}{sqrt(TD("(A)-(B)o(A)-(B)"))}
	 \ifdim\myd pt<0.2pt\relax
	  \typeout{The two center points are too close to each other.}
	 \else
	  \pgfmathtruncatemacro{\itest}{(\myd+r1<r2?0:1)*(\myd+r2<r1?0:1)*(sign(r1+r2-\myd)+1)}
	  \ifcase\itest
	   \typeout{The circles do not intersect.}
	  \or
	   \typeout{There is one unique intersection.}
	   \pgfmathsetmacro{\myr}{r1/\myd}
	   \path[3d coordinate={(I)=(A)-\myr*(A)+\myr*(B)}];
	  \or
	   \pgfmathsetmacro{\myn}{TD("(A)-(B)x(A)-(C)")} 
	   \pgfmathsetmacro{\myn}{sqrt(TD("(\myn)o(\myn)"))}
	   \ifdim\myn pt<0.1pt\relax
		\typeout{The three points defining the plane are too collinear.}
	   \else
	    \pgfmathsetmacro{\mynx}{1/\myd} 
		\pgfmathsetmacro{\myex}{TD("\mynx*(A)-\mynx*(B)")}
	    \pgfmathsetmacro{\myn}{TD("(A)-(B)x(A)-(C)")} 
		\pgfmathsetmacro{\myey}{TD("(\myex)x(\myn)")}
	    \pgfmathsetmacro{\myny}{1/sqrt(TD("(\myey)o(\myey)"))} 
		\pgfmathsetmacro{\myey}{TD("\myny*(\myey)")}
		\pgfmathsetmacro{\myalpha}{cosinelaw(r1,\myd,r2)}
		\pgfmathsetmacro{\mya}{-r1*cos(\myalpha)}
		\pgfmathsetmacro{\myb}{r1*sin(\myalpha)}
		\path[3d coordinate={(I_1)=(A)+\mya*(\myex)+\myb*(\myey)},
			3d coordinate={(I_2)=(A)+\mya*(\myex)-\myb*(\myey)}];
		\pgfmathsetmacro{\tsta}{sqrt(TD("(B)-(I_1)o(B)-(I_1)"))}	
		\pgfmathsetmacro{\tstb}{sqrt(TD("(B)-(I_2)o(B)-(I_2)"))}	
		\path[overlay] (\myex) coordinate (ex) 	(\myey) coordinate (ey); 	
		\begin{scope}[x={(ex)},y={(ey)}]
		 \draw (A) circle[radius=r1];
		 \draw (B) circle[radius=r2];
		\end{scope}
		\path foreach \X in {A,B,C,I_1,I_2}
		{(\X) node[circle,inner sep=1pt,fill,label=above:{$%
		 \pgfmathparse{TD("(\X)")}%
		 \X=(\pgfmathprintvector\pgfmathresult)$}]{}};
	   \fi
	  \fi
	 \fi 
\end{tikzpicture}
\end{document}
```
![Screen Shot 2020-11-30 at 6.37.15 PM.png](/image?hash=484a08b9fa21c4ccb4d78060a342809745ba37d5a6d69601f77cca4a129e9a0a)

Enter question or answer id or url (and optionally further answer ids/urls from the same question) from

Separate each id/url with a space. No need to list your own answers; they will be imported automatically.