今天尝试着在图形中进行填充,但遇到一个问题:
有些重叠的区域填充两种不同的颜色,会互相遮挡和影响。
我想着主要填充的区域用颜色;次要或者小点的填充区域用阴影,就是哪种相对稀疏的斜杠线阴影。但一直操作不成功。
请教下大佬们上面的构思怎么实现,以及在绘图过程中有哪些好的填充方式。
谢谢!
\documentclass{standalone}
\usepackage{tkz-base}
\usepackage{tkz-euclide}
\usetikzlibrary{calc}
\usetikzlibrary{shadows, patterns}
\begin{document}
\begin{tabular}{@{}c@{}}
%%%%%%% 第一张图 %%%%%%%
\begin{tikzpicture}[scale=0.8, font=\small]
% ===== 1. 绘制平面直角坐标系 =====
\tkzInit[xmin=-2.5, xmax=4.5, ymin=-1, ymax=6.3]
\tkzDrawXY[thick, noticks, >=latex]
% ===== 定义点 =====
\tkzDefPoints{0/0/O, 0/4/A, 2/0/B, 0/2/E}
\tkzDefTriangle[two angles=90 and 45](A,B)
\tkzGetPoint{C}
\tkzDefPointBy[projection=onto O--B](C)
\tkzGetPoint{c}
\tkzDefPointBy[projection=onto C--c](E)
\tkzGetPoint{e}
\tkzInterLL(C,c)(E,e)
\tkzGetPoint{D}
\tkzDefMidPoint(E,B)
\tkzGetPoint{M}
\tkzInterLL(D,M)(O,B)
\tkzGetPoint{Q}
% ===== 绘制图形 =====
\tkzDrawSegments[thick](E,B A,M D,M)
\tkzDrawPolygon[red, thick](A,B,C)
\tkzDrawPolygon[blue, thick](E,C,D)
\tkzDrawSegments[dashed, purple!50, thick](Q,M Q,A D,A)
% ===== 标示点 =====
\tkzLabelPoints[above right](C)
\tkzLabelPoints[left](A,E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[below](B,Q)
\tkzLabelPoints[below left](O,M)
% \node at (2,-1.8) {图 3};
\end{tikzpicture}
\\[1em]
%%%%%%% 第二张图 %%%%%%%
\begin{tikzpicture}[scale=0.8, font=\small]
% ===== 1. 绘制平面直角坐标系 =====
\tkzInit[xmin=-2.5, xmax=4.5, ymin=-1, ymax=6.3]
\tkzDrawXY[thick, noticks, >=latex]
% ===== 定义点 =====
\tkzDefPoints{0/0/O, 0/4/A, 2/0/B, 0/2/E}
\tkzDefTriangle[two angles=90 and 45](A,B)
\tkzGetPoint{C}
\tkzDefPointBy[projection=onto O--B](C)
\tkzGetPoint{c}
\tkzDefPointBy[projection=onto C--c](E)
\tkzGetPoint{e}
\tkzInterLL(C,c)(E,e)
\tkzGetPoint{D}
\tkzDefMidPoint(E,B)
\tkzGetPoint{M}
\tkzInterLL(D,M)(O,B)
\tkzGetPoint{Q}
\tkzCalcLength(A,M)
\tkzGetLength{dAM}
\tkzDefPointWith[linear normed,K=-\dAM](M,A)
\tkzGetPoint{Q}
\tkzInterLL(E,D)(A,B)
\tkzGetPoint{N}
% ===== 绘制图形 =====
\tkzDrawSegments[thick](E,B A,M D,M)
\tkzDrawPolygon[red, thick](A,B,C)
\tkzDrawPolygon[blue, thick](E,C,D)
\tkzDrawSegments[dashed, purple!50, thick](Q,M A,D D,Q E,Q)
% ===== 标示点 =====
\tkzLabelPoints[above right](C,N)
\tkzLabelPoints[left](A,E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[below](B,Q)
\tkzLabelPoints[below left](O,M)
\tkzFillPolygon[yellow!50, opacity=.5](A,D,C)
\tkzFillPolygon[yellow!50, opacity=.5](E,Q,D)
\tkzFillPolygon[green!50, opacity=.3](E,Q,M)
\tkzFillPolygon[green!50, opacity=.3](A,B,M)
% \node at (2,-3.35) {图 3};
\end{tikzpicture}
\end{tabular}
\end{document}
上面的图中,我把三角形DCA和三角形DEQ用浅黄色标识,三角形AMB和三角形QME用浅绿色标识。如果三角形AMB和三角形QME用合适的阴影方式来填充的话,怎么处理为宜。
谢谢!
有些重叠的区域填充两种不同的颜色,会互相遮挡和影响。
从你的第二张图来看,这种遮挡似乎不影响你看图、识别三角形和做题.
如果三角形AMB和三角形QME用合适的阴影方式来填充的话,怎么处理为宜。我想着主要填充的区域用颜色;次要或者小点的填充区域用阴影,就是哪种相对稀疏的斜杠线阴影。但一直操作不成功。
在tikz中可以使用patterns库,详见这个链接. 事实上你已经调用了,但不知为何你没有去查阅这部分的文档.
\documentclass[tikz,border=5pt]{standalone}
\usepackage{tkz-base}
\usepackage{tkz-euclide}
\usetikzlibrary{patterns,patterns.meta}
\begin{document}
\begin{tikzpicture}
% ===== 1. 绘制平面直角坐标系 =====
\tkzInit[xmin=-2.5, xmax=4.5, ymin=-1, ymax=6.3]
\tkzDrawXY[thick, noticks, >=latex]
% ===== 定义点 =====
\tkzDefPoints{0/0/O, 0/4/A, 2/0/B, 0/2/E}
\tkzDefTriangle[two angles=90 and 45](A,B)
\tkzGetPoint{C}
\tkzDefPointBy[projection=onto O--B](C)
\tkzGetPoint{c}
\tkzDefPointBy[projection=onto C--c](E)
\tkzGetPoint{e}
\tkzInterLL(C,c)(E,e)
\tkzGetPoint{D}
\tkzDefMidPoint(E,B)
\tkzGetPoint{M}
\tkzInterLL(D,M)(O,B)
\tkzGetPoint{Q}
\tkzCalcLength(A,M)
\tkzGetLength{dAM}
\tkzDefPointWith[linear normed,K=-\dAM](M,A)
\tkzGetPoint{Q}
\tkzInterLL(E,D)(A,B)
\tkzGetPoint{N}
\tkzFillPolygon[yellow!50, opacity=.5](A,D,C)
\tkzFillPolygon[yellow!50, opacity=.5](E,Q,D)
\tkzFillPolygon[pattern=north east lines, pattern color=teal](E,Q,M)
\tkzFillPolygon[pattern={Stars[points=6]},pattern color=magenta](A,B,M)
% ===== 绘制图形 =====
\tkzDrawSegments[thick](E,B A,M D,M)
\tkzDrawPolygon[red, thick](A,B,C)
\tkzDrawPolygon[blue, thick](E,C,D)
\tkzDrawSegments[dashed, purple!50, thick](Q,M A,D D,Q E,Q)
% ===== 标示点 =====
\tkzLabelPoints[above right](C,N)
\tkzLabelPoints[left](A,E)
\tkzLabelPoints[right](D)
\tkzLabelPoints[below](B,Q)
\tkzLabelPoints[below left](O,M)
\end{tikzpicture}
\end{document}
注意最好把:
\tkzFillPolygon[yellow!50, opacity=.5](A,D,C)
\tkzFillPolygon[yellow!50, opacity=.5](E,Q,D)
\tkzFillPolygon[pattern=north east lines, pattern color=teal](E,Q,M)
\tkzFillPolygon[pattern={Stars[points=6]},pattern color=magenta](A,B,M)放到:
% ===== 绘制图形 =====
\tkzDrawSegments[thick](E,B A,M D,M)
\tkzDrawPolygon[red, thick](A,B,C)
\tkzDrawPolygon[blue, thick](E,C,D)
\tkzDrawSegments[dashed, purple!50, thick](Q,M A,D D,Q E,Q) 之前,避免不正确的绘制顺序带来的遮挡。