summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex')
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex500
1 files changed, 500 insertions, 0 deletions
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex
new file mode 100644
index 0000000000..738221b1b6
--- /dev/null
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-triangles.tex
@@ -0,0 +1,500 @@
+% tkz-obj-eu-triangles.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-triangles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Triangle Equilateral
+%<--------------------------------------------------------------------------–>
+\def\tkzDefEquilateral(#1,#2){
+\begingroup
+ %\tkzDefMidPoint(#1,#2)
+ \tkzURotateAngle(#1,60)(#2)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Triangle Isosceles Right
+%<--------------------------------------------------------------------------–>
+\def\tkzDefIsoscelesRightTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,45)(#2)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzUHomo(#1,\tkzSqrTwobyTwo)(tkz@a)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefIsoscelesRightTriangle(#1,#2){%
+\begingroup
+ \tkzURotateAngle(#1,45)(#2)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzUHomo(#1,\tkzSqrTwobyTwo)(tkz@a)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Triangle OneTwo
+%<--------------------------------------------------------------------------–>
+\def\tkzDefTwoOne(#1,#2){
+\begingroup
+ \iftkz@swap@tr
+ \tkzDefPointWith[K=-.5](#2,#1)
+ \else
+ \tkzDefPointWith[K=.5](#2,#1)
+ \fi
+ \endgroup
+}
+%<--------------------------------------------------------------------------–
+% Pythagore
+%<--------------------------------------------------------------------------–
+\def\tkzDefPythagore(#1,#2){
+\begingroup
+\iftkz@swap@tr
+ \tkzDefPointWith[K=-.75](#2,#1)
+ \else
+ \tkzDefPointWith[K=.75](#2,#1)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+% School
+%<--------------------------------------------------------------------------–
+\def\tkzDefSchoolTriangle(#1,#2){
+\begingroup
+\iftkz@swap@tr
+ \tkzDefPointWith(#2,#1)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzURotateAngle(#1,-30)(#2)
+ \tkzInterLL(#1,tkzPointResult)(#2,tkz@a)
+\else
+ \tkzDefPointWith(#2,#1)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzURotateAngle(#1,30)(#2)
+ \tkzInterLL(#1,tkzPointResult)(#2,tkz@a)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+% Gold
+%<--------------------------------------------------------------------------–
+\def\tkzDefGoldTriangle(#1,#2){
+\begingroup
+ \iftkz@swap@tr
+ \tkzDefPointWith[K=-\tkzInvPhi](#2,#1)
+ \else
+ \tkzDefPointWith[K=\tkzInvPhi](#2,#1)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+%
+%<--------------------------------------------------------------------------–
+\def\tkzDefEuclideTriangle(#1,#2){
+\begingroup
+ \iftkz@swap@tr
+ \tkzURotateAngle(#1,36)(#2)
+ \else
+ \tkzURotateAngle(#1,-36)(#2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+%
+%<--------------------------------------------------------------------------–
+\def\tkzDefGoldenTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,72)(#2)
+ \tkzUHomo(#1,\tkzPhi)(tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+%
+%<--------------------------------------------------------------------------–
+\def\tkzDefCheopsTriangle(#1,#2){
+\begingroup
+ \tkzDefMidPoint(#1,#2)
+ \tkzDefPointWith[K=-\tkzSqrtPhi](tkzPointResult,#1)
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+%
+%<--------------------------------------------------------------------------–
+\def\tkzDefTwoAnglesTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,\tkz@alpha)(#2)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzURotateAngle(#2,-\tkz@beta)(#1)
+ \pgfnodealias{tkz@b}{tkzPointResult}
+ \tkzInterLL(#1,tkz@a)(#2,tkz@b)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Triangles
+%<--------------------------------------------------------------------------–>
+
+\def\tkz@numtr{0}
+\pgfkeys{/deftriangle/.cd,
+ equilateral/.code = \def\tkz@numtr{0},
+ half/.code = \def\tkz@numtr{1},
+ two one/.code = \def\tkz@numtr{1},
+ pythagore/.code = \def\tkz@numtr{2},
+ pythagoras/.code = \def\tkz@numtr{2},
+ right/.code = \def\tkz@numtr{2},
+ egyptian/.code = \def\tkz@numtr{2},
+ school/.code = \def\tkz@numtr{3},
+ golden/.code = \def\tkz@numtr{4},
+ sublime/.code = \def\tkz@numtr{4},
+ euclid/.code = \def\tkz@numtr{5},
+ euclide/.code = \def\tkz@numtr{5},
+ gold/.code = \def\tkz@numtr{6},
+ cheops/.code = \def\tkz@numtr{7},
+ two angles/.code args = {#1 and #2} { \def\tkz@numtr{8}%
+ \def\tkz@alpha{#1}%
+ \def\tkz@beta{#2}},
+ isosceles right/.code = \def\tkz@numtr{9},
+ swap/.is if = tkz@swap@tr,
+ swap/.default = true,
+ swap = false,
+ equilateral
+}
+
+\def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{\tkz@DefTriangle[]}}
+\def\tkz@DefTriangle[#1](#2,#3){%
+\begingroup
+\pgfqkeys{/deftriangle}{#1}
+\ifcase\tkz@numtr%
+ \tkzDefEquilateral(#2,#3)
+ \or% 1
+ \tkzDefTwoOne(#2,#3)
+ \or% 2
+ \tkzDefPythagore(#2,#3)
+ \or% 3
+ \tkzDefSchoolTriangle(#2,#3)
+ \or% 4
+ \tkzDefGoldenTriangle(#2,#3)
+ \or% 5
+ \tkzDefEuclideTriangle(#2,#3)
+ \or% 6
+ \tkzDefGoldTriangle(#2,#3)
+ \or% 7
+ \tkzDefCheopsTriangle(#2,#3)
+ \or% 8
+ \tkzDefTwoAnglesTriangle(#2,#3)
+ \or% 9
+ \tkzDefIsoscelesRightTriangle(#2,#3)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% les triangles sspécifiques
+%<--------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–
+\def\tkz@numtspc{0}
+\pgfkeys{/tkzDefSpcTriangle/.cd,
+ in/.code = \def\tkz@numtspc{0},
+ incentral/.code = \def\tkz@numtspc{0},
+ ex/.code = \def\tkz@numtspc{1},
+ excentral/.code = \def\tkz@numtspc{1},
+ extouch/.code = \def\tkz@numtspc{2},
+ intouch/.code = \def\tkz@numtspc{3},
+ contact/.code = \def\tkz@numtspc{3},
+ centroid/.code = \def\tkz@numtspc{4},
+ medial/.code = \def\tkz@numtspc{4},
+ orthic/.code = \def\tkz@numtspc{5},
+ ortho/.code = \def\tkz@numtspc{5},
+ feuerbach/.code = \def\tkz@numtspc{6},
+ euler/.code = \def\tkz@numtspc{7},
+ tangential/.code = \def\tkz@numtspc{8},
+ symmedial/.code = \def\tkz@numtspc{9},
+ name/.store in = \tkz@pttr@name,
+ name = {},
+ centroid,
+ }
+\def\tkzDefSpcTriangle{\pgfutil@ifnextchar[{\tkz@DefSpcTriangle}{%
+ \tkz@DefSpcTriangle[]}}
+\def\tkz@DefSpcTriangle[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/tkzDefSpcTriangle}{#1}
+\ifcase\tkz@numtspc%
+ \tkzDefIncentralTriangle(#2){#3}
+ \or% 1
+ \tkzDefExcentralTriangle(#2){#3}
+ \or% 2
+ \tkzDefExtouchTriangle(#2){#3}
+ \or% 3
+ \tkzDefIntouchTriangle(#2){#3}
+ \or% 4
+ \tkzDefCentroidTriangle(#2){#3}
+ \or% 5
+ \tkzDefOrthicTriangle(#2){#3}
+ \or% 6
+ \tkzDefFeuerbachTriangle(#2){#3}
+ \or% 7
+ \tkzDefEulerTriangle(#2){#3}
+ \or% 8
+ \tkzDefTangentialTriangle(#2){#3}
+ \or% 8
+ \tkzDefSymmedialTriangle(#2){#3}
+ \fi
+\endgroup
+}
+
+\pgfkeys{/setuppttr/.is family}
+\def\SetUpPTTR#1{\pgfqkeys{/setuppttr}{#1}}
+\pgfkeys{/setuppttr/.cd,
+ name/.store in = \tkz@pttr@name,
+ name = {}
+}
+%<--------------------------------------------------------------------------–
+% InCentral
+%<--------------------------------------------------------------------------–
+%<--------------------------------------------------------------------------–>
+\def\@DefIncentralTriangle(#1,#2,#3)(#4,#5){%
+\def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefBisectorLine(#2,#1,\tkz@last)
+ \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult)
+ \pgfnodealias{\tkz@pttr@name#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefIncentralTriangle(#2,#3)(#5)\fi
+}
+
+\def\tkzDefIncentralTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefIncentralTriangle}{%
+ \tkz@DefIncentralTriangle[]}}
+
+\def\tkz@DefIncentralTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \@DefIncentralTriangle(#2,#2)(#3,\tkz@stop)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzIncentralTriangle\tkzInExcentralTriangle
+%<--------------------------------------------------------------------------–
+% ExCentral
+%<--------------------------------------------------------------------------–
+
+%<--------------------------------------------------------------------------–>
+\def\@DefExcentralTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefExCircle(#2,#1,\tkz@last)
+ \pgfnodealias{\tkz@pttr@name#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefExcentralTriangle(#2,#3)(#5)\fi
+}
+
+\def\tkzDefExcentralTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefExcentralTriangle}{%
+ \tkz@DefExcentralTriangle[]}}
+
+\def\tkz@DefExcentralTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefExcentralTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzExcentralTriangle\tkzDefExcentralTriangle
+%<--------------------------------------------------------------------------–>
+% Intouch Triangle
+%<--------------------------------------------------------------------------–>
+\def\@DefIntouchTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzUProjection(#2,\tkz@last)(tkz@pt)
+ \pgfnodealias{\tkz@pttr@name#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefIntouchTriangle(#2,#3)(#5)\fi
+}
+
+\def\tkzDefIntouchTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefIntouchTriangle}{%
+ \tkz@DefIntouchTriangle[]}}
+
+\def\tkz@DefIntouchTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \tkzInCenter(#2)
+ \pgfnodealias{tkz@pt}{tkzPointResult}
+ \@DefIntouchTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefContactTriangle\tkzDefIntouchTriangle
+%<--------------------------------------------------------------------------–>
+% Extouch Triangle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExtouchTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefExtouchTriangle}{%
+ \tkz@DefExtouchTriangle[]}}
+
+\def\tkz@DefExtouchTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz@point\i\endcsname{\name}
+ }
+ \begingroup
+ \def\tkz@pttr@name{}
+ \tkzDefExcentralTriangle(#2,#3,#4){tkz@a,tkz@b,tkz@c}
+ \endgroup
+ \tkzUProjection(#3,#4)(tkz@a)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point1\endcsname}{tkzPointResult}
+ \tkzUProjection(#2,#3)(tkz@c)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point3\endcsname}{tkzPointResult}
+ \tkzUProjection(#2,#4)(tkz@b)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point2\endcsname}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Feuerbach triangle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefFeuerbachTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefFeuerbachTriangle}{\tkz@DefFeuerbachTriangle[]}}
+
+\def\tkz@DefFeuerbachTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz@point\i\endcsname{\name}
+ }
+ \tkzDefExCircle(#2,#3,#4) \tkzGetPoints{tkz@b}{tkz@hb}
+ \tkzDefExCircle(#3,#4,#2) \tkzGetPoints{tkz@c}{tkz@hc}
+ \tkzDefExCircle(#4,#2,#3) \tkzGetPoints{tkz@a}{tkz@ha}
+ \tkzInterLC[near](#3,tkz@b)(tkz@b,tkz@hb)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point2\endcsname}
+ \tkzInterLC[near](#4,tkz@c)(tkz@c,tkz@hc)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point3\endcsname}
+ \tkzInterLC[near](#2,tkz@a)(tkz@a,tkz@ha)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point1\endcsname}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Centroid
+%<--------------------------------------------------------------------------–>
+% The medial triangle or midpoint triangle of a triangle ABC
+\def\@DefCentroidTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \pgfcoordinate{\tkz@pttr@name#4}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{\tkz@last}{center}}}
+ }%
+ \ifx\tkz@tmp\tkz@stop\else\@DefCentroidTriangle(#2,#3)(#5)\fi
+ }
+\def\tkzDefCentroidTriangle{\pgfutil@ifnextchar[{\tkz@DefCentroidTriangle}
+ {\tkz@DefCentroidTriangle[]}}
+\def\tkz@DefCentroidTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefCentroidTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefMedialTriangle\tkzDefCentroidTriangle
+\let\tkzDefMidpointTriangle\tkzDefCentroidTriangle
+%<--------------------------------------------------------------------------–>
+% Orthic Triangle H Ha Hb Hc modif 3.03
+%<--------------------------------------------------------------------------–>
+\def\@DefOrthicTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzUProjection(#2,\tkz@last)(#1)
+ \pgfnodealias{\tkz@pttr@name#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefOrthicTriangle(#2,#3)(#5)\fi
+}
+
+\def\tkzDefOrthicTriangle{\pgfutil@ifnextchar[{\tkz@DefOrthicTriangle}
+ {\tkz@DefOrthicTriangle[]}}
+\def\tkz@DefOrthicTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefOrthicTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefAltitudeTriangle\tkzDefOrthicTriangle
+
+%<--------------------------------------------------------------------------–>
+% The Euler triangle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefEulerTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefEulerTriangle}{\tkz@DefEulerTriangle[]}}
+\def\tkz@DefEulerTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \tkzOrthoCenter(#2,#3,#4)
+ \pgfnodealias{tkz@e}{tkzPointResult}
+ \tkzDefMidPoint(#2,tkz@e)
+ \pgfnodealias{tkz@m1}{tkzPointResult}
+ \tkzDefMidPoint(#3,tkz@e)
+ \pgfnodealias{tkz@m2}{tkzPointResult}
+ \tkzDefMidPoint(#4,tkz@e)
+ \pgfnodealias{tkz@m3}{tkzPointResult}
+ \endpgfinterruptboundingbox
+ \foreach \name [count=\i] in {#5} {%
+ \coordinate (\tkz@pttr@name\name) at (tkz@m\i);
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% TangentialTriangle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefTangentialTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefTangentialTriangle}{\tkz@DefTangentialTriangle[]}}
+\def\tkz@DefTangentialTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \tkzCircumCenter(#2,#3,#4)
+ \pgfnodealias{tkz@circ}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #2](tkz@circ,#2)
+ \pgfnodealias{tkz@pta}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #3](tkz@circ,#3)
+ \pgfnodealias{tkz@ptb}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #4](tkz@circ,#4)
+ \pgfnodealias{tkz@ptc}{tkzPointResult}
+ \tkzInterLL(#2,tkz@pta)(#3,tkz@ptb)
+ \pgfnodealias{tkz@tg3}{tkzPointResult}
+ \tkzInterLL(#3,tkz@ptb)(#4,tkz@ptc)
+ \pgfnodealias{tkz@tg1}{tkzPointResult}
+ \tkzInterLL(#4,tkz@ptc)(#2,tkz@pta)
+ \pgfnodealias{tkz@tg2}{tkzPointResult}
+ \foreach \name [count=\i] in {#5} {%
+ \coordinate (\tkz@pttr@name\name) at (tkz@tg\i);
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+% tkzDefSymmedianLine
+%<--------------------------------------------------------------------------–
+\def\@DefSymmedialTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefSymmedianLine(#2,#1,\tkz@last)
+ \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult)
+ \pgfnodealias{\tkz@pttr@name#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefSymmedialTriangle(#2,#3)(#5)\fi
+}
+
+\def\tkzDefSymmedialTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefSymmedialTriangle}{%
+ \tkz@DefSymmedialTriangle[]}}
+
+\def\tkz@DefSymmedialTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \@DefSymmedialTriangle(#2,#2)(#3,\tkz@stop)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\makeatother
+\endinput \ No newline at end of file