有一个问题困扰我很久了,在没有学习用tkz-euclide
宏包前就有了。如果题目中有几个图,需要并排放在一起,感觉总不很协调。
接着这几天学习用tkz-euclide
宏包,一起来请教一下大佬们。
上面是这几天遇到的一个压轴题,请教大家怎么绘制。
本质上与 tkz-euclide 无关,给几个简单的办法:
\documentclass{article}
\usepackage{lipsum,tikz,tkz-euclide}
\usetikzlibrary{scopes}
\begin{document}
\lipsum[1][1-3]
\vskip2em
% 方法一 scopes
\begin{tikzpicture}
{[]
\tkzDefPoint(0,0){A}
\tkzDefPoint(2.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
}
{[xshift=3.5cm]
\tkzDefPoint(0,0){A}
\tkzDefPoint(3.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
}
{[xshift=8cm]
\tkzDefPoint(0,0){A}
\tkzDefPoint(3,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
}
\end{tikzpicture}
\vskip2em
\lipsum[1][1-3]
\vskip2em
% 方法二 tabular
\begin{tabular}{ccc}
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(2.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
&
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(3.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
&
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(3,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
\end{tabular}
\vskip2em
\lipsum[1][1-3]
\vskip2em
% 方法三 \hfill
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(1.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(1.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(1.5,0){B}
\tkzDefPoint(1.5,2){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(1.5,0){B}
\tkzDefPoint(1.5,1.5){C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints(A,B,C)
\end{tikzpicture}
\end{document}
上面是这几天遇到的一个压轴题,请教大家怎么绘制。
其实也还是和tkz-euclide
有些关系的
先上完整代码:
\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}
所以核心代码是:
\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}
之前的问题也介绍过了,有projection
方法:
\tkzDefPointBy[projection=onto C--D](B)
\tkzGetPoint{G}
但其实你用了tkz-euclide
也不难....熟知等边三角形的英文为equilateral,在文档中搜索即可:
\tkzDefTriangle[equilateral](M,C)
\tkzGetPoint{N}
P.S.1 如果没有@u26254 老师的回答,我是万万不会想到用scope
的(哭)
P.S.2 最好不要不做任何尝试就提问,单独画每一个图都不算难....