教学笔记
7858 字
约 22 分钟
1 图
tkz-euclid常用作图代码分享
前段时间不少人问到LaTeX作图的教程,这里分享一下刘金波老师整理的tkz-euclid的常用作图代码。(可以按照关键词搜索)更多信息参见tkz-euclid的宏包文件。
有兴趣的也可以加入我创建的tzk-euclid的学习交流群,大家共同进步。

\usepackage{tkz-euclide}%调用画图宏包\begin{tikzpicture}[scale=1]%开始绘图环境,比例=1\tkzDefPoint(0,0){A}%定义原点为A(单点定义)平面直角坐标系\tkzDefPoints{0/0/A,4/0/B}%定义原点为A,(4,0)为B(多点定义)平面直角坐标系\tkzDefPoint(30:4){A}%定义(30°,4)为A(单点定义)极坐标系\tkzDefShiftPoint[A](30:4){B}%以A为原点的极坐标系\tkzDefMidPoint(A,B) \tkzGetPoint{C}%定义AB中点为C\tkzDefSpcTriangle[ortho,name=H](A,B,C){_A,_B,_C}%\tkzDefSpcTriangle[orthic,name=H](A,B,C){a,b,c}%定义三角形ABC高线与对边交点为H_A,H_B,H_C\tkzDefTriangleCenter[centroid](A,B,C) \tkzGetPoint{G}%定义三角形ABC重心为G\tkzDefTriangleCenter[median](A,B,C)\tkzGetPoint{G}%定义三角形ABC重心为G\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{G}\tkzGetLength{rG}%定义三角形ABC外心为G,半径为rG\tkzDefTriangleCenter[in](A,B,C)\tkzGetPoint{I}%定义三角形ABC内心为I\tkzInCenter(A,B,C)\tkzGetPoint{I}%定义三角形ABC内心为I\tkzDefSpcTriangle[in,name=I](A,B,C){_a,_b,_c}%定义三角形ABC角平分线与对边交点为I_a,I_b,I_c\tkzDefSpcTriangle[in](A,B,C){D,E,F}%定义同上,其余同理\tkzDefSpcTriangle[intouch,name=X](A,B,C){_a,_b,_c}%定义三角形ABC角平分线与对边交点为X_a,X_b,X_c\tkzDefSpcTriangle[excentral,name=J](A,B,C){_a,_b,_c}%定义三角形ABC的三个旁心\tkzDefSpcTriangle[extouch,name=T](A,B,C){_a,_b,_c}%定义三角形ABC三个旁心到三边的垂足\tkzDefTriangleCenter[ex](B,C,A)\tkzGetPoint{J_c}%定义三角形ABC旁心为Jc\tkzDefSpcTriangle[medial,name=M](A,B,C){_A,_B,_C}%定义三角形ABC中线与对边交点为M_A,M_B,M_C\tkzDefTriangleCenter[euler](A,B,C)\tkzGetPoint{N}%定义三角形ABC九点圆圆心为N\tkzDefTriangleCenter[symmedian](A,B,C)\tkzGetPoint{K}%定义三角形ABC陪位重心为K\tkzDefSpcTriangle[extouch](A,B,C){Ta,Tb,Tc}\tkzDefTriangleCenter[nagel](A,B,C) \tkzGetPoint{Na}%定义三角形ABC界心(奈格尔点)为Na\tkzDefTriangleCenter[mittenpunkt](A,B,C)\tkzGetPoint{Mi}\tkzDefPointOnLine[pos=-0.2](A,B)%在BA延长线上定义比例为20%的一个点\tkzDefPointOnLine[pos=0.5](A,B)%在AB上定义比例为50%的一个点\tkzDefPointOnLine[pos=1.2](A,B)%在AB延长线上定义比例为20%的一个点\tkzDefPointWith[linear,K=0.5](A,B)\tkzGetPoint{C}%在线段AB上点定义AC=0.5AB\tkzDefPointWith[linear normed](A,B)\tkzGetPoint{C}%在线段AB上点定义AC为1个单位长度\tkzDefPointWith[linear normed,K=sqrt(10)](A,B)\tkzGetPoint{C}%在线段AB上点定义AC为根号10个单位长度\tkzDefPointOnCircle[angle=30,center=G,radius=\rG pt]\tkzGetPoint{J}%定义圆G上逆时针30°的点\tkzDefPointBy[translation= from B to A](C)\tkzGetPoint{D}%定义C沿向量BA平移后的点为D\tkzDefPointsBy[translation= from A to A'](B,C){}%定义B,C沿向量AA'平移后的点为B',C',{}里空白默认为X',可自定义\tkzDefPointBy[reflection = over C--D](A)\tkzGetPoint{A'}%定义A关于直线CD的对称点为A'\tkzDefPointBy[homothety=center A ratio .5](B) \tkzGetPoint{B'}%定义B以A为位似中心且位似比为0.5的点为B'\tkzDefPointBy[projection = onto A--B](C) \tkzGetPoint{D}%定义点C在AB上的射影为D\tkzDefTriangle[pythagore](B,A) \tkzGetPoint{C}%在过点A且垂直于AB的直线上取一点定义为C\tkzDefLine[bisector](B,C,A) \tkzGetPoint{D}%在∠BCA的角平分线上取一点定义为D\tkzInterLL(C,D)(A,B) \tkzGetPoint{E}%定义直线CD,AB交点为E\tkzInterLC(C,D)(D,A) \tkzGetPoints{E}{F}%定义直线CD与圆D的交点为E,F\tkzInterCC[R](A,4 cm)(B,4 cm)\tkzGetPoints{I}{I'}%定义圆A与圆B交点为I,I'\tkzDefPointsBy[symmetry=center O](B,A){D,C}%定义A,B关于点O的对称点为C,D(D,C可不写,默认A',B'),其余变换可类比此代码\tkzDefPointsBy[translation= from A to A'](B,C){}%定义B,C按向量AA'平移之后的点为B',C'\tkzDefPointBy[rotation=center A angle 60](B)\tkzGetPoint{C}%定义B绕A逆时针旋转60°后对应点为C\tkzDefPointBy[rotation in rad= center A angle pi/3](B)\tkzGetPoint{C}%定义B绕A逆时针旋转π/3后对应点为C\tkzDefPointBy[inversion =center O through A](z1)\tkzGetPoint{Z1}%反演变换相关...宏包手册44页\tkzDefPointWith[colinear=at C](A,B)\tkzGetPoint{D}%定义C沿向量AB位移后的对应点为D\tkzDefPointWith[colinear=at C,K=0.5](A,B)\tkzGetPoint{H}%定义C沿½向量AB平移后对应点为H,K可为无理数等等\tkzDefPointWith[colinear=at C,K=sqrt(2)/2](A,B)\tkzGetPoint{D}%\tkzDefPointWith[orthogonal,K=1](A,B)\tkzGetPoint{C}%定义向量AB的正交向量为AC(逆时针),且模相等,可调整\tkzDefPointWith[orthogonal](O,I)\tkzGetPoint{J}%定义向量AB的正交向量为AC(逆时针),且模默认相等\tkzDefLine[orthogonal=through C](B,A) \tkzGetPoint{c}%过点C定义向量AB的正交向量为Cc\tkzDefPointWith[orthogonal normed](A,B)\tkzGetPoint{C}%定义向量AB的正交向量为AC(逆时针),且模为1个单位长度\tkzDefPointWith[orthogonal normed,K=2](A,B)\tkzGetPoint{C}%定义向量AB的正交向量为AC(逆时针),且模为2个单位长度\tkzDefPointWith[orthogonal,K=-1](O,I)\tkzGetPoint{K}%定义向量AB的正交向量为AC(顺时针),且模相等,可调整\tkzDefLine[parallel=through C](A,B) \tkzGetPoint{c'}%过点C定义Cc‘∥AB,平行\tkzDuplicateSegment(B,F)(A,F)\tkzGetPoint{E}%在线段AF上截取AE=BF\tkzGetVectxy(A,B){v}%向量拆分相关...宏包手册50页\tkzDefPoint(\vx,\vy){V}%与上面相关...宏包手册50页\tkzDefRandPointOn[rectangle = A and B]\tkzGetPoint{a}%在AB为对角线且水平放置的矩形内部随机定义一点a\tkzDefRandPointOn[segment = A--B]\tkzGetPoint{a}%在线段AB上随机定义一点a\tkzDefRandPointOn[line = A--B]\tkzGetPoint{E}%在直线AB上随机定义一点E\tkzCalcLength[cm](A,B) \tkzGetLength{rAB}%定义AB为半径rAB,单位为cm\tkzDefRandPointOn[circle=center A radius \rAC pt]\tkzGetPoint{d}%在圆A(半径为rAC)上随机定义一点E,rAC需要提前定义\tkzDefRandPointOn[circle through= center A through B]\tkzGetPoint{c}%在圆A(半径为AB)上随机定义一点c\tkzDefRandPointOn[disk through=center A through B]\tkzGetPoint{e}%在圆A(半径为AB)内随机定义一点e\def\coeffK{2}%定义\coeffK代码为2,coeffK可自定义\tkzApolloniusCenter[K=2](A,B)\tkzGetPoint{P}%定义到AB距离之比2的阿氏圆圆心为P\tkzDefApolloniusPoint[K=2](A,B)\tkzGetPoint{M}%定义到AB距离之比2的阿氏圆与AB交点为M\tkzDefApolloniusRadius[K=2](A,B)%定义到AB距离之比2的阿氏圆\tkzDefLine[mediator](A,B) \tkzGetPoints{C}{D}%定义AB中垂线且在其上定义两点C,D(对称取点)\tkzDefLine[bisector,normed](B,A,C) \tkzGetPoint{a}%在∠BAC的角平分线定义一点a\tkzDefLine[bisector out](I,O,J)\tkzGetPoint{j}%在∠IOJ的邻补角的平分线定义一点j\tkzDefTangent[at=A](O)\tkzGetPoint{h}%在圆O的切线(过圆上一点A)上定义一点为h\foreach \an in {0,10,...,350}{\tkzDefPointBy[rotation=center c angle \an](a0)\tkzGetPoint{a}%...宏包手册58\tkzDefTangent[from = A](C,R) \tkzGetPoints{D}{E}%过圆外点A作圆C的切线,定义切点为D,E\tkzDefSquare(A,B)\tkzGetPoints{C}{D}%定义AB为边的正方形ABCD,接下来两点为C,D\tkzDrawLine(A,B)%定义直线AB\tkzSetUpLine[color=blue]%定义后续绘制直线为蓝色\tkzDefLine[perpendicular=through C,K=-1](A,B)\tkzGetPoint{c}%过点C作AB的高,在其延长线上(-1表示延长)定义一点为c\tkzDefEquilateral(A,P) \tkzGetPoint{P'}%以AP为边定义等边三角形APP'(逆时针)第三点为P'\tkzDefTriangle[equilateral](A,B)\tkzGetPoint{C}%以AB为边定义等边三角形ABC(逆时针)第三点为C\tkzDefTriangle[euclide](A,B)\tkzGetPoint{C}%以AB为底边的等腰三角形ABC(逆时针)第三点为C\tkzDefTriangle[golden](A,B)\tkzGetPoint{C}%定义BC⊥AB且比例为黄金比\tkzClipBB \tkzShowBB%...宏包手册75页\tkzDefSpcTriangle[feuerbach,name=F](A,B,C){_a,_b,_c}%定义费尔巴哈圆(九点圆)与三角形ABC三个旁切圆的切点\tkzDefSpcTriangle[tangential,name=T](A,B,C){_a,_b,_c}%定义三角形外接圆过点A,B,C的三条切线交点\tkzDefSquare(A,B) \tkzGetFirstPoint{C}%以AB为边逆时针作正方形ABCD,定义第一个为C\tkzDefSquare(A,B)\tkzGetPoints{C}{D}%以AB为边逆时针作正方形ABCD,定义接下来两个点分别为C,D\tkzDefParallelogram(A,B,C)\tkzGetPoint{D}%以ABC逆时针作平行四边形ABCD,定义第4点为D\tkzDefGoldRectangle(A,B) \tkzGetPoints{C}{D}%以AB为长边定义黄金矩形ABCD,定义接下来两点分别为C,D\tkzDrawPolySeg(A,...,D)%定义折线ABCD\foreach \pt in {1,2,...,8} {\tkzDefPoint(\pt*20:3){P_\pt}}%定义\pt为集合{1,2,…,8}中的元素,然后再定义点P_1,P_2...\tkzDefCircle[diameter](A,B)\tkzGetPoint{O}%定义AB为直径的圆的圆心为O\tkzInit[xmax=6,ymax=5]\tkzGrid%绘制6×5的网格\tkzDrawSegment[blue,->](A,B)%绘制蓝色线段AB,无[blue]默认为黑,->单向箭头\tkzDrawPolySeg(P',C',A,P,B)%绘制折线PP'APB\tkzDrawSegments[color = gray,->,style=dashed](A,A' B,B' C,C')%绘制灰色虚线箭头AA'等\tkzDrawSegments[vect](A,B C,D)%绘制向量AB,CD\tkzDrawLines(A,B C,D A,C B,D)%绘制直线AB,CD,BD\tkzDrawLine[add = 1 and 1](E,F)%绘制直线EF,E,F各向外延长1\tkzDrawLines[add= 0 and .5](A,B A,C)%绘制射线AB,AC\tkzDrawPoints[red](A,B)%绘制红点A,B\tkzDrawPoints[size=6](A,...,D)%绘制点A,B,C,D,大小为6\tkzDrawPoints[](A,B,C,a,b,...,e)\tkzDrawPoints[size=6,color=red,fill=red!50](A,B,C)%绘制尺寸为6,红色,填充不透明度50%的红色阴影的点\tkzDrawSegments[arr=stealth](A,B)%绘制线段AB且居中绘制箭头\tkzMarkSegment[color=red,size=2pt,pos=0.4, mark=z](A,B)%在线段AB上绘制标记z(颜色,大小,位置,记号)\tkzMarkSegment[color=gray,pos=0.2,mark=s|](A,B)%在线段AB上标记/,s表示倾斜,无poss默认居中\tkzMarkSegment[color=gray,pos=0.4,mark=s||](A,B)%在线段AB上标记//\tkzMarkSegment[color=brown,pos=0.6,mark=||](A,B)%在线段AB上标||\tkzMarkSegment[color=red,pos=0.8,mark=|||](A,B)%在线段AB上标|||\tkzMarkSegments[mark=s|,size=6pt,color=blue](A,P P,P' P',A)\tkzMarkAngles[size=1cm,color=cyan,mark=|](C,B,A A,C,P)%在角标上标记记号|\tkzDrawPolygon(A,B,C)%绘制多边形ABC\tkzDrawRectangle(A,B)%绘制AB为斜边且水平放置的矩形\tkzDrawSquare(A,B)%绘制AB为边的正方形(ABCD顺时针方向)\tkzDrawCircle(G,A)%绘制G为圆心,GA为半径的圆\tkzDrawCircle[R](A,\rAB cm)%绘制G为圆心,rAB为半径的圆,rAB需提前定义\tkzRadius=1 cm%定义\tkzRadius代码为1cm半径\tkzDrawCircle[R](c,\tkzRadius)%以c为圆心1cm为半径绘制圆\tkzMarkRightAngle[fill=red!20](D,G,B)%标记∠DGB,填充不透明度为20%的红色阴影,可用size调大小\tkzMarkRightAngles[german](A,C,B B,P,C)%标记∠ACB,∠BPC为·角\tkzCompass[color=red](A,C)%绘制A为圆心且过点C的弧\tkzCompasss[color=red,style=solid](B,I I,J J,C)\tkzDrawArc[delta=5](F,E)(B)%绘制F为圆心,FE为半径且圆心角为∠EFB的弧(逆时针)\tikzset{arc/.style={color=brown,style=dashed,delta=10}}%...宏包手册54页\tkzDrawArc[arc](C,D)(E)%...宏包手册53页\tkzDrawCircle[R,color = blue!50!black,fill=blue!20,opacity=.4](tkzPointResult,\tkzLengthResult pt)%...宏包手册53页\tkzFillPolygon[color=orange!30](A,C,B,D)%在四边形ACBD内部填充不透明度30%的橙色阴影\tkzDrawSector[fill=blue!80!black,opacity=0.5](A,D)(E)%在扇形内部填充阴影\tkzShowLine[bisector,gap=4,size=2,color=red](B,A,C)%显示∠BAC的平分线作法\tkzDrawLine[median](B,C,A)%绘制△ABC边BA上的中线\tkzDrawLine[altitude](B,C,A)%绘制△ABC边BA上的高线\tkzDrawLine[bisector](B,C,A)%绘制△ABC边BA上的角平分线\tkzDrawLine[altitude,dashed,color=magenta](B,C,A)\tkzGetPoint{P}%dashed表示虚线\tkzDrawBisector(A,C,B)%绘制三角形ABC边AB上的角平分线\tkzDrawCircle[euler,red](A,B,C)%绘制三角形ABC的九点圆,颜色为红色\tkzDrawCircle[in](A,B,C)%绘制三角形ABC的内接圆\tkzDrawTriangle[pythagore,fill=blue!30](A,B)%以AB为边绘制直角三角形ABC(4:3:5),AB为较长直角边且B为直角顶点,逆时针\tkzDrawTriangle[school,fill=red!30](A,B)%以AB为边绘制30°的直角三角形ABC,AB为较长直角边且B为直角顶点,逆时针\tkzDrawTriangle[gold,color=blue!50](A,B)%以AB为腰绘制黄金三角形ABC,逆时针(可加\tkzGetPoint{C})\tkzDrawTriangle[euclide,color=blue,fill=blue!10](A,B)%以AB为底绘制欧几里得三角形...宏包手册72页\tkzDefRegPolygon[center,sides=7,name=M](P0,P1)%以P0为中心,P1为顶点逆时针定义正7边形,从P1开始依次命名为M1,M2,,M7\tkzDefRegPolygon[side,sides=5,name=P](A,B)%以AB为边逆时针定义正5边形,从A开始依次命名为P1,P2,,P5\tkzDrawPolygon(M1,M...,M7)%绘制多边形\tkzLablePoints[right=±1pt](A,B,C)%在多点右侧绘制标签,left-左,above-上,below-下,above left-左上(其余同理),共八个方位,±1pt为调整标签距离,﹢为远离点,-为靠近点\tkzLabelLine[pos=1.25,left](C,c){$(\delta)$}%在直线Cc左侧上绘制标签\tkzLabelSegment[above,pos=.8](A,B){$a$}%在线段AB比例80%处上方绘制标签a\tkzLabelSegment[](B,A){$c$}%空白表示在线段AB左侧或下方绘制标签c\tkzLabelSegment[swap](B,C){$a$}%swap表示在线段BC右侧或或上方绘制标签a\tkzLabelSegments[color=red,above=4pt](O,A A,B){$a$}%在线段OA,AB上方绘制标签a\tkzAutoLabelPoints[center=M,font=\scriptsize](A,B,C,M_A,M_B,M_C)%图形外部绘制多点标签...宏包手册73页\tkzLabelPoints[font=\scriptsize](M)%...宏包手册73页\tkzLabelCircle[R,draw,fill=green!10,text width=3cm,text centered](P,\tkzLengthResult pt-20pt)(-120){ $MA/MB=2$\\$NA/NB=2$}%...宏包手册53页\end{tikzpicture}%结束绘图环境



留言
解法、疑问、勘误都可以说。公式用 LaTeX:行内
$…$,整行$$…$$。留言区还没开。想聊这道题,可以点上面的「在公众号查看原文」,到公众号那边留言。