10 tkz-euclide 宏包绘图中图形填充方式 6天15时23分01秒

发布于 2025-11-02 21:42:11

今天尝试着在图形中进行填充,但遇到一个问题:

有些重叠的区域填充两种不同的颜色,会互相遮挡和影响。

我想着主要填充的区域用颜色;次要或者小点的填充区域用阴影,就是哪种相对稀疏的斜杠线阴影。但一直操作不成功。

请教下大佬们上面的构思怎么实现,以及在绘图过程中有哪些好的填充方式。

谢谢!

\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}

image.png

上面的图中,我把三角形DCA和三角形DEQ用浅黄色标识,三角形AMB和三角形QME用浅绿色标识。如果三角形AMB和三角形QME用合适的阴影方式来填充的话,怎么处理为宜。

谢谢!

查看更多

关注者
0
被浏览
32
1 个回答
Sagittarius Rover
Sagittarius Rover 8小时前
这家伙很懒,什么也没写!
有些重叠的区域填充两种不同的颜色,会互相遮挡和影响。

从你的第二张图来看,这种遮挡似乎不影响你看图、识别三角形和做题.

如果三角形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}

image.png

注意最好把:

        \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) 

之前,避免不正确的绘制顺序带来的遮挡。

撰写答案 当前问题悬赏金额为¥10 元,被提问者采纳后将获得赏金

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览