答案1
我也和 Tarass 一样想知道同样的事情。是什么决定了蓝色圆圈的位置?更新:修复颜色并添加点和标签。
\documentclass[tikz,border=5pt]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{intersections,calc}
\begin{document}
\begin{tikzpicture}
\coordinate[label=below:$M_1$] (M1) at (-4,-3.5);
\coordinate[label=below right:$M_2$] (M2) at (4,-2.8);
\coordinate[label=above left:$Q_1$] (Q1) at (-2.5,1.6);
\coordinate[label=above right:$Q_2$] (Q2) at (3.77,0.8);
\draw[name path=M1-M2] (M1) to[bend left=0] (M2);
\draw[name path=M1-Q2] (M1) to[bend left=0] (Q2);
\draw[name path=M2-Q1] (M2) to[bend left=0] (Q1);
\path[name intersections={of=M1-Q2 and M2-Q1, name=int}];
\coordinate[label=above right:$N$] (N) at (int-1);
\coordinate[label=below:$B$] (B) at ($(M1)!(N)!(M2)$);
\draw (N) -- (B);
\tkzCircumCenter(M1,Q1,B)
\tkzGetPoint{O1}
\tkzLabelPoint[below left](O1){$O_1$}
\tkzDrawCircle[color=green](O1,M1)
\tkzCircumCenter(M2,Q2,B)
\tkzGetPoint{O2}
\tkzLabelPoint[right](O2){$O_2$}
\tkzDrawCircle[name path=c2,color=green](O2,M2)
\tkzInterCC(O1,M1)(O2,M2)
\tkzGetPoints{A}{C}
\tkzLabelPoint[above](A){$A$}
\draw (B) -- (A);
\path (M2) -- (N) coordinate[pos=0.8] (P1);
\tkzCircumCenter(Q1,P1,Q2)
\tkzGetPoint{O}
\tkzLabelPoint[above right](O){$O$}
\tkzDrawCircle[color=blue](O,P1);
\foreach \X in {A,B,M1,M2,N,O,O1,O2,P1,Q1,Q2}
{\draw[fill=white] (\X) circle (1.5pt);}
\end{tikzpicture}
\end{document}
答案2
使用 MetaPost 进行几何方面的一个很好的练习。
代码包含在LuaLaTeX程序中,以方便排版。
\RequirePackage{luatex85}
\documentclass[border=3mm]{standalone}
\usepackage{luamplib}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
u := .8cm;
d0 := 6.5u; d1 := 7u; d2 := 5u;
path circle[];
pair A, B, O[], P[], Q[], M[], N;
O0 = u*(2, 3.5); O1 = origin; O2 = (4u, 0);
for i = 0 upto 2: circle[i] = fullcircle scaled d[i] shifted O[i]; endfor;
A = circle1 intersectionpoint circle2;
B = circle1 rotatedaround (O1, 180) intersectionpoint circle2;
P1 = circle0 rotatedaround (O0, -90) intersectionpoint circle1;
Q1 = circle0 intersectionpoint circle1;
P2 = circle0 intersectionpoint circle2;
Q2 = circle0 rotatedaround (O0, -90) intersectionpoint circle2;
path line[]; line1 = P2 -- 4[Q2,P2]; line2 = P1 -- 4[Q1,P1];
M1 = circle1 intersectionpoint line1; M2 = circle2 intersectionpoint line2;
N = whatever[Q2,M1] = whatever[Q1, M2];
beginfig(1);
draw circle0 withcolor blue;
for i = 1, 2: draw circle[i] withcolor green; endfor;
draw A -- B; draw O0 -- B;
draw Q1 -- M2; draw Q2 -- M1;
pickup pencircle scaled 3bp;
for P = O0, O1, O2, A, B, P1, P2, Q1, Q2, M1, M2, N:
drawdot P;
endfor;
label.rt("$O$", O0); label.llft("$O_1$", O1); label.lrt("$O_2$", O2);
label.top("$A$", A); label.bot("$B$", B);
label.llft("$M_1$", M1); label.lrt("$M_2$", M2);
label.top("$P_1$", P1); label.bot("$P_2$", P2);
label.ulft("$Q_1$", Q1); label.rt("$Q_2$", Q2);
label.urt("$N$", N);
endfig;
\end{mplibcode}
\end{document}