我画了一个三角形的图,但我不知道如何画出角度。
这是我的三角图
<asy>
size(10cm);
pair A, B, C, D, F;
A = (0, tan(3 * pi / 7));
B = (1, 0);
C = (-1, 0);
F = rotate(90/7, A) * (A - (0, 2));
D = rotate(900/7, F) * A;
draw(A -- B -- C -- cycle);
draw(F -- D);
draw(D -- B);
label("$A$", A, N);
label("$B$", B, E);
label("$C$", C, W);
label("$D$", D, W);
label("$E$", F, E);
</asy>
这就是我想要画的
答案1
以下是使用包的解决方案tkz-euclide
:
\documentclass{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{arrows,calc,shapes,patterns,decorations.pathmorphing,shadows.blur,shadings}
\tkzSetUpPoint[size=2,color=black,fill=black]
\tikzset{new/.style={color=orange,line width=.2pt}}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{0/0/C,2/8/A,4/0/B}
\tkzDrawPoints(A,B,C)
\tkzDrawPolygon(A,B,C)\tkzLabelPoints(B,C)\tkzLabelPoints[above](A)
\tkzFindAngle(B,C,A)\tkzGetAngle{angleBCA}
\edef\angleBCA{\fpeval{round(\angleBCA)}}
\tkzFindAngle(C,A,B)\tkzGetAngle{angleCAB}
\edef\angleCAB{\fpeval{round(\angleCAB)}}
\tkzDefShiftPoint[B](152:4){D}\tkzDrawSegment(B,D)\tkzDrawPoints(D)
\tkzDefLine[mediator](A,D)\tkzGetPoints{X}{Y}\tkzInterLL(A,B)(X,Y)\tkzGetPoint{E}
\tkzDrawPoint(E)\tkzDrawSegment(D,E)
\tkzMarkAngle[size = 0.5,arc=ll,mkcolor = red,mkpos=.33](B,C,A)
\tkzMarkAngle[size = 0.5,arc=ll,mkcolor = red,mkpos=.33](C,D,B)
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](D,B,C)\tkzLabelAngle[pos=0.8](D,B,C){$x$}
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](A,B,D)\tkzLabelAngle[pos=0.8](A,B,D){$z$}
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](D,E,B)\tkzLabelAngle[pos=0.8](D,E,B){$z$}
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](D,A,E)\tkzLabelAngle[pos=0.8](D,A,E){$y$}
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](E,D,A)\tkzLabelAngle[pos=0.8](E,D,A){$y$}
\tkzMarkAngle[size = 0.5,mkcolor = red,mkpos=.33](A,E,D)\tkzLabelPoints[left](D)
\tkzLabelPoints[right](E)
\end{tikzpicture}
\end{document}
答案2
以下是一个解决方案及其tikz
一些库:
calc
,用于计算d
和e
AB
AC
angles
,能够通过 pic 命令绘制角度quotes
,只是一个允许书写"text"
而不是生活的品质图书馆text=...
。
角度pic
可以有许多参数,例如radius
和angle eccentricity
、箭头状<->
,以及更多图片
当然,您可以创建一个style
参数以避免重复它们。
\begin{tikzpicture}[
my_angle/.style={thick, draw=orange, , angle radius=#1,-> ,angle eccentricity = 1.5
}]
像这样使用它:
\pic ["$\theta$",my_angle=15,<->]{angle=c--d--b};
覆盖样式中定义的<->
默认值。->
我确信你一定能填补剩余的空缺。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
,
\begin{tikzpicture}
% define 3 coordinates ABC
\coordinate(a) at (0,0);
\coordinate(c) at (-2,-5);
\coordinate(b) at (2,-5);
% draw the edges between the points
\draw (a) -- (b) -- (c) -- cycle;
% define 2 coordinates that are somewhere on AB and AC:
\coordinate (d) at ($(a)!0.6!(c)$);
\coordinate (e) at ($(a)!0.3!(b)$);
\draw (b) -- (d) -- (e);
% for the angles, use \pic
\pic [draw = black] {angle=a--b--c};
\pic ["$\theta$",thick, draw=orange, angle radius=15,-> ,angle eccentricity = 1.5]{angle=c--d--b};
\end{tikzpicture}
\end{document}
答案3
markers
这是你想要的吗?仅加载模块。
// The code can be run on asymptote.ualberta.ca
// or artofproblemsolving.com (wrapped by `asy` environment as in the OP's code)
size(10cm);
import markers;
pair A,B,C,D,E;
A = (0, tan(3 * pi / 7));
B = (1, 0);
C = (-1, 0);
E = rotate(90/7, A) * (A - (0, 2));
D = rotate(900/7, E) * A;
markangle("$x$",D,B,C,radius=10mm,Fill(yellow));
markangle(B,C,D,n=2,radius=4mm,red);
markangle(C,D,B,n=2,radius=4mm,red);
markangle("$y$",D,A,E,radius=8mm,blue+1pt);
markangle("$y$",E,D,A,radius=8mm,blue+1pt);
markangle(Label("$z$",black),D,E,B,radius=6mm,white,Fill(green));
markangle(Label("$z$",black),E,B,D,radius=6mm,white,Fill(green));
draw(A--B--C--cycle^^B--D--E);
label("$A$",A,N);
label("$B$",B,plain.E);
label("$C$",C,W);
label("$D$",D,W);
label("$E$",E,plain.E);
//shipout(bbox(5mm,invisible));
附录在我的测试中,makers
对于平面几何中的标记来说已经足够了。当然,可以使用模块来标记标记geometry
。
unitsize(1cm);
import markers;
pair A=(0,0), B=(5,0), C=(1,3.5);
transform t=shift(6dir(15));
pair M=t*A,N=t*B,P=t*C;
draw(A--B--C--cycle^^M--N--P--cycle);
// marking sides.
draw(A--B^^M--N,CrossIntervalMarker(1,4,magenta));
draw(B--C^^N--P,StickIntervalMarker(1,1));
draw(C--A^^P--M,StickIntervalMarker(1,2,blue+1pt));
//draw(p,StickIntervalMarker(1,2,angle=-25,size=5mm,space=1mm,blue+1pt));
// marking angles
markangle("$\beta$",C,B,A,radius=6mm,StickIntervalMarker(1,1,size=2mm));
markangle("$\beta$",P,N,M,StickIntervalMarker(1,1,size=2mm));
markangle(B,A,C,n=2,radius=4mm,Fill(yellow));
markangle(N,M,P,n=2,space=2mm);
markangle(A,C,B,Arrow,Fill(green));
markangle(M,P,N,Arrows);
// legend sides
label(Label("side $a=BC$",Rotate(B-C),align=3NE),C--B,red);
label(Label("side $a=AC$",Rotate(C-A),align=3W+plain.N),A--C,red);
label(Label("side $c=AB$",align=2S),A--B,red);
label("$A$",A,SW);
label("$B$",B,SE);
label("$C$",C,plain.N);
label("$M$",M,SW);
label("$N$",N,SE);
label("$P$",P,plain.N);
shipout(bbox(5mm,invisible));