上面是这几天遇到的一个压轴题,请教大家怎么绘制。
其实也还是和tkz-euclide
有些关系的
Code
先上完整代码:
\documentclass[border=3pt]{standalone}
\usepackage{libertine}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=1.5,thick,line cap=rounded]
\tkzDefPoints{-1/0/B,1/0/C,0/sqrt(3)/A}
\tkzDefPointWith[linear,K=.35](A,B)\tkzGetPoint{D}
\tkzDefPointWith[linear,K=.35](C,A)\tkzGetPoint{E}
\tkzInterLL(D,C)(B,E) \tkzGetPoint{F}
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments(C,D B,E)
\tkzLabelPoints[left](A,B,D)
\tkzLabelPoints[right](C,E)
\tkzLabelPoints[below](F)
\node at (0,-.5) {Figure 1};
\begin{scope}[xshift=3cm]
\tkzDefPoints{-1/0/B,1/0/C,0/sqrt(3)/A}
\tkzDefPointWith[linear,K=.35](A,B)\tkzGetPoint{D}
\tkzDefPointWith[linear,K=.35](C,A)\tkzGetPoint{E}
\tkzInterLL(D,C)(B,E) \tkzGetPoint{F}
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments(C,D B,E)
\tkzLabelPoints[left](A,B,D)
\tkzLabelPoints[right](C,E)
\tkzLabelPoints[below](F)
%%%%%%%%%%%%%%%%%%%%
\tkzDefPointBy[projection=onto C--D](B) \tkzGetPoint{G}
\tkzDrawSegments(B,G A,G)
\tkzLabelPoints[right](G)
\node at (0,-.5) {Figure 2};
\end{scope}
\begin{scope}[xshift=6cm]
\tkzDefPoints{-1/0/B,1/0/C,0/sqrt(3)/A,0/0/H,0/-0.2/l}
\tkzDrawLine(A,H)
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints[right](l)
%%%%%%%%%%%%%%%%%%%%
\tkzDefPointWith[linear,K=.3](A,H)\tkzGetPoint{M}
%%%%%%%%%%%%%%%%%%%%
\tkzDefTriangle[equilateral](M,C)
\tkzGetPoint{N}
\tkzDrawSegments(B,N A,N)
\tkzDrawPolygon(C,M,N)
\tkzLabelPoints[below left](B,H)
\tkzLabelPoints[below right](C)
\tkzLabelPoints[left=-3pt](M)
\tkzLabelPoints[right=-2pt](N)
\tkzLabelPoints[above left](A)
\node at (0,-.5) {Figure 3};
\end{scope}
\end{tikzpicture}
\end{document}
大致思路
图一:基本问题点在于确定D和E的位置,在文档中找到:
所以核心代码是:
\tkzDefPointWith[linear,K=.35](A,B)\tkzGetPoint{D}
\tkzDefPointWith[linear,K=.35](C,A)\tkzGetPoint{E}
这里的K=0.35
是可供调整的参数,我不懂初中几何,算不出来...算得出来准确比例直接写会更准确...
至于求交点,在之前的回答里也已经用过了:
\tkzInterLL(D,C)(B,E) \tkzGetPoint{F}
图二:基本难点在于「根据B向CD作垂线」
之前的问题也介绍过了,有projection
方法:
\tkzDefPointBy[projection=onto C--D](B)
\tkzGetPoint{G}
图三:难点在于「根据CM作等边三角形」
但其实你用了tkz-euclide
也不难....熟知等边三角形的英文为equilateral,在文档中搜索即可:
\tkzDefTriangle[equilateral](M,C)
\tkzGetPoint{N}
P.S.1 如果没有@u26254 老师的回答,我是万万不会想到用scope
的(哭)
P.S.2 最好不要不做任何尝试就提问,单独画每一个图都不算难....
问 tkz-euclide 宏包中如何合理地排布多个图形