答案1
下面是一个带有 的简短代码pstricks
,更具体地说是带有pst-eucl
:
\documentclass[a4paper,10pt]{article}
\usepackage{pst-eucl}
% \usepackage{auto-pst-pdf} for use with pdflatex
\begin{document}
\psset{unit=3, PointSymbol=none}\small
\begin{pspicture}(-1.25,-1.25)(1.25,1.25)
\pstGeonode[PosAngle={0,60,120,150,210,270,330}, PointName={,a, a\varepsilon, b, b\varepsilon, c, cε}, PointNameSep=6pt] (0,0){O}(1;60){a}(1;120){ae}(1;150){b}(1;210){be}(1;270){c}(1;330){ce}
\pscircle(O){1}
\foreach \angleA/\angleB in {60/120,150/210,270/330}{\pswedge[fillstyle=hlines, hatchwidth=0.4pt](O){1}{\angleA}{\angleB}}
\psset{PointSymbol=x, fillstyle=none}
\foreach \Beg/\End[count =\I] in {ae/b, be/c, ce/a/3}{\psline[linestyle=dashed, linewidth=0.5pt](\Beg)(\End)
\pstMiddleAB[PointNameSep=1.5em]{\Beg}{\End}{f_\I}}
\pspolygon(f₁)(f₂)(f₃)
\end{pspicture}
\end{document}
答案2
只是为了好玩,有TikZ
:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{patterns, shapes.misc}
\usepackage{lmodern}
\begin{document}
\begin{tikzpicture}[font=\small]
\coordinate (O) at (0,0);
\draw[thick] circle (2cm);
\foreach \i/\j in {a/60,b/150,c/270}
\draw[thick, pattern=north west lines] (O) --
(\j:2cm)
coordinate[label={[circle, inner sep=1pt, anchor=180+\j]\j:$\i$}] (\i)
arc(\j:\j+60:2cm)
coordinate[label={[circle, inner sep=1pt, anchor=240+\j]\j:$\i\epsilon$}]
(\i-e)--cycle;
\foreach \i/\j/\k [count=\f] in {a-e/b/135, b-e/c/240, c-e/a/15}
\draw[dashed] (\i) --
node[cross out, draw, label={[circle, inner sep=3mm, anchor=\k]\k:{$f_\f$}}] (f\f) {}
(\j);
\draw[thick] (f1.center) -- (f2.center) --(f3.center) --cycle;
\end{tikzpicture}
\end{document}
答案3
和Asymptote
版本:
// sectors.asy
//
// run
// asy sectors.asy
// to get sectors.pdf
settings.tex="pdflatex";
import graph; import geometry;
import patterns; add("hatchback",hatch(2mm,plain.NW));
size(6cm); import fontsize; defaultpen(fontsize(9pt));
texpreamble("\usepackage{lmodern}\usepackage{amsmath}\usepackage{amsfonts}\usepackage{amssymb}");
pen linePen=darkblue+0.9bp, line2Pen=orange+0.9bp, grayPen=gray(0.3)+0.8bp, dashPen=grayPen+linetype(new real[]{5,5})+linecap(0);
pair O,A,B,C,Ae,Be,Ce;
O=(0,0); draw(Circle(O,1),line2Pen);
A=rotate(42)*(1,0); Ae=rotate(60)*A; B=rotate(23)*Ae; Be=rotate(60)*B; C=rotate(93)*Be; Ce=rotate(60)*C;
pair[] F={ (Ae+B)/2, (Be+C)/2, (Ce+A)/2, };
guide[] gsector={ O--Arc(O,A,Ae)--cycle, O--Arc(O,B,Be)--cycle, O--Arc(O,C,Ce)--cycle, };
for(var sector: gsector) filldraw(sector,pattern("hatchback"));
draw(Ae--B^^Be--C^^Ce--A,dashPen);
filldraw(F[0]--F[1]--F[2]--cycle,paleblue+opacity(0.3),red+colorless(linePen));
void mark60(pair A, pair B, pair C){ markangle(Label("$\tfrac\pi3$",Relative(0.5)),n=1,radius=-10,A,B,C,p=linePen+0.6bp);}
pair[][] angles={{Ae,O,A}, {Be,O,B}, {Ce,O,C}, {F[0],F[1],F[2]}, {F[1],F[2],F[0]}, {F[2],F[0],F[1]},};
for(var x:angles) mark60(x[0],x[1],x[2]);
dot(O--A--Ae--B--Be--C--Ce--F[0]--F[1]--F[2],UnFill);
void markEndSect(string s, pair P, pair Pe){ label("$"+s+"$",P,unit(P-O)); label("$"+s+"_{\varepsilon}$",Pe,unit(Pe-O));}
markEndSect("A",A,Ae); markEndSect("B",B,Be); markEndSect("C",C,Ce);
for(int i=0;i<F.length;++i)label("$F_{"+string(i+1)+"}$",F[i],unit(F[i]-O));