使用 Tkz-euclide 对拿破仑定理进行可视化

使用 Tkz-euclide 对拿破仑定理进行可视化

这里有一个拿破仑定理的简短维基百科定义

“拿破仑定理指出,如果在任意三角形的边上构造等边三角形,无论是全部向外还是全部向内,连接这些等边三角形中心的线本身就会形成一个等边三角形。”

我尝试在 tkz-euclide 中将其可视化,但是没有成功。MWE:

\documentclass[border=2mm]{standalone}

\usepackage{tkz-euclide}

\begin{document}
\begin{tikzpicture}
\tkzDefPoint(0,0){a}
\tkzDefPoint(5,1){b}
\tkzDefPoint(1,4){c}
\tkzDefPoint(1,-3){d}
\tkzDefPoint(6,4){e}
\tkzDefPoint(-1,3){f}

\tkzDrawPolygon(a,b,c)
\tkzDrawPolygon(a,b,d)
\tkzDrawPolygon(b,c,e)
\tkzDrawPolygon(a,c,f)

\tkzInCenter(a,b,c)\tkzGetPoint{D}

\tkzInCenter(a,b,d)\tkzGetPoint(A)

\tkzInCenter(b,c,e)\tkzGetPoint(B)

\tkzInCenter(a,c,f)\tkzGetPoint(C)

\tkzDrawPoint[red](D)
\tkzDrawPoint[red](A)
\tkzDrawPoint[red](B)
\tkzDrawPoint[red](C)
\tkzDrawPolygon(A,B,C) 
\end{tikzpicture}

\end{document}

我收到以下错误消息:,,No shape named 'A' is known.这很奇怪,因为它显然适用于 D。No shape named 'B' is known.No shape named 'C' is known.

是我做错了什么还是这是一个错误?

小提示:这些点的定义还不能形成三个等边三角形。我首先选择了一些点,并想先处理几何质心。

提前致谢!

答案1

这只是一个拼写错误:使用{ }而不是( )

结果

\documentclass[border=2mm]{standalone}

%\usepackage{tikz}
\usepackage{tkz-euclide}

\begin{document}
 \begin{tikzpicture}
    \tkzDefPoint(0,0){a}
    \tkzDefPoint(5,1){b}
    \tkzDefPoint(1,4){c}
    \tkzDefPoint(1,-3){d}
    \tkzDefPoint(6,4){e}
    \tkzDefPoint(-1,3){f}
    
    \tkzDrawPolygon(a,b,c)
    \tkzDrawPolygon(a,b,d)
    \tkzDrawPolygon(b,c,e)
    \tkzDrawPolygon(a,c,f)
    
    \tkzInCenter(a,b,c)\tkzGetPoint{D}
    
    \tkzInCenter(a,b,d)\tkzGetPoint{A}% ! { }
    
    \tkzInCenter(b,c,e)\tkzGetPoint{B}%(B)
    
    \tkzInCenter(a,c,f)\tkzGetPoint{C}%(C)
    
    \tkzDrawPoint[red](D)
    \tkzDrawPoint[red](A)
    \tkzDrawPoint[red](B)
    \tkzDrawPoint[red](C)
    \tkzDrawPolygon(A,B,C) 
 \end{tikzpicture}

\end{document}

答案2

最后,这个问题很有用,因为它使我能够改进我的程序。例如引入参数indirect来定义间接方向的等边三角形。我还介绍了该check_equilateral函数。

以下代码仅适用于tkz-elements本周发布的 1.40 版。该代码的优点是它概括了答案。您可以修改初始三角形,而无需修改其他任何内容。

一些解释。

T.ABC是初始三角形。它是一个对象,其属性包括顶点定义的线(或线段)。我们 get_points ( )T.A = T.ABC.bc对应于直线 (BC) 等的线。其他线属性为caab

T.BCD = T.ABC.bc:等边(间接)定义等边三角形。间接参数用于获得满足 (BC,BD)=-60° 的三角形

一个三角形有三个顶点,分别由属性 (pa,pb,pc) 表示。我们通过以下方式获得顶点:z.D = T.BCD.pc

然后我们 get_points() 每个三角形的质心点。 check_equilateral是一个测试,确定三角形是否是等边的。

% !TEX TS-program = lualatex
\documentclass[border=2mm]{standalone}
\usepackage{tkz-euclide,tkz-elements,ifthen}
\begin{document}
   
 \begin{tkzelements}
   z.A = point :  new ( 0 , 0 )
   z.B = point :  new ( 5 , 1 ) 
   z.C = point :  new ( 1 , 3 ) 
   T.ABC = triangle  :  new (z.A,z.B,z.C)
   T.BCD = T.ABC.bc : equilateral (indirect)
   T.CAE = T.ABC.ca : equilateral (indirect)
   T.ABF = T.ABC.ab : equilateral (indirect)
   z.D = T.BCD.pc
   z.E = T.CAE.pc
   z.F = T.ABF.pc
   z.G = T.BCD.centroid
   z.H = T.CAE.centroid
   z.I = T.ABF.centroid
   T.GHI = triangle : new (z.G,z.H,z.I)
   bool_GHI = T.GHI : check_equilateral ()
   bool_ABC = T.ABC : check_equilateral ()
\end{tkzelements}
   
\begin{tikzpicture} 
\tkzGetNodes
\tkzDrawPolygons[thick](B,C,D A,C,E A,B,F) 
\tkzDrawPoints(A,B,C,D,E,F,G,H,I)
\tkzLabelPoints(A,B,C,D,E,F,G,H,I)

\ifthenelse{\equal{\tkzUseLua{bool_GHI}}{false}}{%
\tikzset{col/.style = {green}}}{\tikzset{col/.style = {red}}}
\tkzDrawPolygons[thick,col](G,H,I)

\ifthenelse{\equal{\tkzUseLua{bool_ABC}}{false}}{%
\tikzset{col/.style = {green}}}{\tikzset{col/.style = {red}}}
\tkzDrawPolygons[thick,col](A,B,C)
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容