10 三角形中高的绘制方法

发布于 2025-07-30 22:16:39

晚上在做下面这个图,看起来很简单,但最后居然还是用自己的想法没有做出来。后来用腾讯元宝做了个近似的出来。

image.png

我的构思如下:

  1. 做一个等腰三角形;
  2. 找到三条高的交点;
  3. 然后有选择的绘制其中的高;
  4. 题目中要求的AE=BE,通过微调顶点A的坐标,得到肉眼近似相等。

但按照上面的方法绘制近似的图形,最后报错了。

Package pgf Error: No shape named `D' is known. ^^I^^I\tkzLabelPoint[below](D){$D$}
Package pgf Error: No shape named `E' is known. ^^I^^I\tkzLabelPoint[right](E){$E$}

想请教下大佬们报错的原因以及怎么应该怎么改正?

另外如果想要精确地按照题目中的要求AE=BE来绘制,应该是什么样的思路。

三角形高或者从某点到一条线的高绘制方法有哪些。

谢谢!附件如后。

005.tex

\documentclass[tikz, border=5mm]{standalone}
\usepackage{tkz-euclide}
%\usetkzobj{all} % 解决命令未定义问题 - 加载所有对象类型
\usetikzlibrary{angles, quotes} % 用于绘制角度标记

\begin{document}
    \begin{tikzpicture}[scale=0.8]
        % 定义三个顶点
        \tkzDefPoints{-1.5/0/B, 1.5/0/C, 0/4/A}
        % 定义垂心
        \tkzDefTriangleCenter[ortho](A,B,C)
        \tkzGetPoint{P}
        % 定义三个垂足
        \tkzDefSpcTriangle[ortho,name=P](A,B,C){D,E,F}
        % 画三角形ABC,画三个顶点,连三条高线
        \tkzDrawPolygon[thick][color=blue](A,B,C)
%        \tkzDrawPoints(A,B,C,P)
%        \tkzDrawSegments[thick](A,PD B,PE C,Pc)
        \tkzDrawSegments[thick](A,PD B,PE)
        % 添加标签
        \tkzLabelPoint[above left](P){$P$}
        \tkzLabelPoint[above](A){$A$}
        \tkzLabelPoint[below left](B){$B$}
        \tkzLabelPoint[below right](C){$C$}
        \tkzLabelPoint[below](D){$D$}
        \tkzLabelPoint[right](E){$E$}
%        \tkzAutoLabelPoints[center=P](A,B,C)        
    \end{tikzpicture}
\end{document}

查看更多

关注者
0
被浏览
86
Sagittarius Rover
Sagittarius Rover 22小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

很棒!学以致用!

也许从下面这个例子里可以找到原因:

image.png

name=H意味着得到的垂直实际上名为HaHbHc...

\documentclass[tikz, border=5mm]{standalone}
\usepackage{tkz-euclide}
%\usetkzobj{all} % 解决命令未定义问题 - 加载所有对象类型
\usetikzlibrary{angles, quotes} % 用于绘制角度标记

\begin{document}
    \begin{tikzpicture}[scale=0.8]
        % 定义三个顶点
        \tkzDefPoints{-1.5/0/B, 1.5/0/C, 0/4/A}
        % 定义垂心
        \tkzDefTriangleCenter[ortho](A,B,C)
        \tkzGetPoint{P}
        % 定义三个垂足
        \tkzDefSpcTriangle[ortho,name=P](A,B,C){D,E,F}
        % 画三角形ABC,画三个顶点,连三条高线
        \tkzDrawPolygon[thick][color=blue](A,B,C)
%        \tkzDrawPoints(A,B,C,P)
%        \tkzDrawSegments[thick](A,PD B,PE C,Pc)
        \tkzDrawSegments[thick](A,PD B,PE)
        % 添加标签
        \tkzLabelPoint[above left](P){$P$}
        \tkzLabelPoint[above](A){$A$}
        \tkzLabelPoint[below left](B){$B$}
        \tkzLabelPoint[below right](C){$C$}
        \tkzLabelPoint[below](PD){$D$}
        \tkzLabelPoint[right](PE){$E$}
%        \tkzAutoLabelPoints[center=P](A,B,C)        
    \end{tikzpicture}
\end{document}

image.png


如何debug?

Package pgf Error: No shape named `D' is known. ^^I^^I\tkzLabelPoint[below](D){$D$}
Package pgf Error: No shape named `E' is known. ^^I^^I\tkzLabelPoint[right](E){$E$}

查看报错信息,为什么只有DE找不到,看看这两个点是在\tkzDefSpcTriangle里定义的,回去翻\tkzDefSpcTriangle的文档:

(此事在文档中亦有记载...)

image.png


关于如何精确让AE=BE...

这里的E点如果直接用AE=BE个人觉得会稍显复杂,因为衡量长度似乎稍显代码冗长....

条条大道通罗马...

第一个思路:「高+等腰=等腰直角大概可以想到中垂线」

  • 确定A、B、C
  • 作高AD⊥BC
  • 作AB上的中垂线交AC于E
\documentclass[tikz,border=5mm]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{angles}
\begin{document}
    \begin{tikzpicture}[line cap=round,line join=round]
        \tkzDefPoints{-1.5/0/B, 1.5/0/C, 0/4/A}
        \tkzDefPointBy[projection = onto B--C](A)
        \tkzGetPoint{D}

        \tkzDefLine[mediator](A,B)
        \tkzGetPoints{P1}{P2}
        \tkzInterLL(A,C)(P1,P2) 
        \tkzGetPoint{E}

        \tkzInterLL(A,D)(B,E) 
        \tkzGetPoint{P}

        \tkzDrawSegments[thick](A,D B,E)
        \tkzDrawPolygon[semithick](A,B,C)
 
        \tkzLabelPoint[above](A){$A$}
        \tkzLabelPoint[below left](B){$B$}
        \tkzLabelPoint[below right](C){$C$}
        \tkzLabelPoint[below](D){$D$}
        \tkzLabelPoint[right](E){$E$}
    \end{tikzpicture}
\end{document}

image.png

不过这似乎不太直角...

再看看「点A」应该如何定位吧...

嗯,显然∠BAC是45°,对于(-1.5,0) (1.5,0)和(0,4)用余弦定理理论上这个角不是45°,所以要想完全精确最好是不要直接给定ABC的坐标,应该另谋他路来「用最少的点唯一确定这个图形」...


未完待续....

2 个回答
Balance
Balance 12小时前
这家伙很懒,什么也没写!

最开始您回复,修改我没有定义「D」「E」的那个地方,后面提供的修改代码,我好像没有看出来区别,是该加什么句子,但是就画出来图了。可以指点下具体增加哪句代码么。感谢!

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览