如何用 LaTeX 绘制这种复杂的图形?可以给我提供资源吗?
答案1
这是图表。我没有标注点。我稍后可能会标注。但除此之外,难的事情已经完成了。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (Q) at (0,0);
%% we start drawing from the inside and work our way out
%% There are two parameters to control
%% the number of major arcs drawn
%% the length of the initial segment
%% from Q to A1 (which is the inner most point here)
\def\maxMajorArcCount{4}
\def\initialLength{1in}
\foreach \myn in {1,2,...,\maxMajorArcCount}
{
%% set lengths for each iternation
%% the use of `\xdef` is to help remember
%% the length of `\majorRadius` to draw the
%% final major arc.
\pgfmathparse{\initialLength*sqrt(3)^(\myn-1)}
\xdef\majorRadius{\pgfmathresult pt}%%
\pgfmathparse{\majorRadius*sqrt(3)/3}
\xdef\minorRadius{\pgfmathresult pt}%%
\coordinate (A\myn) at (\majorRadius,0);
%% fill the region with gray
\ifnum\myn<\maxMajorArcCount\relax
\draw[fill=gray,opacity=.60]
(A\myn) arc (0:60:\majorRadius)
-- ++(0:\majorRadius);
\fi
%% draw the major Radius
\draw (A\myn) arc (0:60:\majorRadius);
%% draw the triangle and circumscribing circle.
\ifnum\myn<\maxMajorArcCount\relax
\draw (A\myn) -- ++ (60:\majorRadius)
-- ++ (180:\majorRadius)
-- cycle;
\draw (A\myn) arc (-90:270:\minorRadius);
\fi
}
%% draw outside angle
\draw (Q) -- ++ (0:\majorRadius);
\draw (Q) -- ++ (60:\majorRadius);
\end{tikzpicture}
\end{document}
答案2
以下是这项运动的努力元帖子...
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
pair A[], B[], C[];
A0 = 200 right;
for i=1 upto 4:
B[i-1] = A[i-1] rotated 60;
C[i] = A[i-1] rotated 30;
ypart B[i] = ypart C[i];
B[i] = whatever[origin,B0];
endfor
draw origin -- A0 .. C1 .. B0 -- cycle;
for i=1 upto 3:
fill A[i]--C[i]--B[i]..C[i+1]..cycle withcolor .8[blue,white];
draw A[i]--C[i]--B[i]..C[i+1]..cycle;
endfor
for i=1 upto 3:
draw A[i]--B[i];
draw A[i]..B[i]..C[i]..cycle;
endfor
label.bot(btex $A$ etex, A0);
label.bot(btex $A_1$ etex, A1);
label.bot(btex $A_2$ etex, A2);
label.lft(btex $B$ etex, B0);
label.lft(btex $B_1$ etex, B1);
label.lft(btex $B_2$ etex, B2);
label.rt(btex $C_1$ etex, C1);
label.rt(btex $C_2$ etex, C2);
label.llft(btex $O$ etex, origin);
label(btex $\ldots$ etex rotated 30, 12 right rotated 30);
endfig;
end