diff options
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-elements')
39 files changed, 5091 insertions, 2404 deletions
diff --git a/macros/latex/contrib/tkz/tkz-elements/README.md b/macros/latex/contrib/tkz/tkz-elements/README.md index a4d8d90fad..66c11bf62f 100644 --- a/macros/latex/contrib/tkz/tkz-elements/README.md +++ b/macros/latex/contrib/tkz/tkz-elements/README.md @@ -1,10 +1,10 @@ # tkz-elements — for euclidean geometry -Release 2.25c 2024/04/28 +Release 2.30c 2024/07/16 ## Description -`tkz-elements v.2.25c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`. +`tkz-elements v.2.30c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`. The main possibility of programmation proposed is oriented "object programming" with object classes like point, line, triangle, circle and ellipse. For the moment, once the calculations are done, it is `tkz-euclide` or `TikZ` which allows the drawings. You can use the option `mini` with `tkz-euclide` to load only the modules required for tracing. @@ -62,6 +62,15 @@ An important example `Golden Arbelos` using the package is on the site. All the are on the site. ## History + + - version 2.30c + - new version of the macro `\tkzGetNodes` written by Sanskar Singh. This version now fixes a bug that prevented a figure from being centred with `centering` or the `center` environment. + - adding methods `bevan_circle`, `symmedial_circle`. + - correction of the methods `function triangle: bevan_point ()` and `function triangle: mittenpunkt_point ()`. + - adding `function triangle: similar ()` + - adding `function line : perpendicular_bisector ()` which is similar to `function line : mediator ()` + - correction of documentation. + - version 2.25c - French documentation at my site: [http://altermundus.fr](http://altermundus.fr) - Added `colinear_at` a new method for the classe `line` diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex index 7ae96c7ada..85e7359518 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex @@ -25,8 +25,8 @@ This class is defined by two points: the center and a point through which the ci \Iattr{circle}{south} & |C.AB.south| & |z.S = C.OA.south| \\ \Iattr{circle}{east} & |C.AB.east| & |z.E = C.OA.east| \\ \Iattr{circle}{west} & |C.AB.west| & |z.W = C.OA.west| \\ -\Iattr{circle}{opp} & |z.Ap = C.AB.opp| & Refer to (\ref{ssub:example_circle_attributes}) \\ -\Iattr{circle}{ct} & |L = C.AB.ct| & Refer to (\ref{ssub:example_circle_attributes}) \\ +\Iattr{circle}{opp} & |z.Ap = C.AB.opp| & [\ref{ssub:example_circle_attributes}] \\ +\Iattr{circle}{ct} & |L = C.AB.ct| [ \ref{ssub:example_circle_attributes} ] \\ \bottomrule % \end{tabular} \egroup @@ -71,16 +71,16 @@ Three attributes are used (south, west, radius). z.c = C.ab.opp z.r,z.t = get_points (C.ab.ct : ortho_from (z.b)) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} + +\emph{\begin{tikzpicture} \tkzGetNodes \tkzDrawPoints(a,b,c,s,w) \tkzLabelPoints(a,b,c,s,w) \tkzDrawCircle(a,b) \tkzDrawSegments(a,b r,t b,c) \tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}} -\end{tikzpicture} -\hspace*{\fill} +\end{tikzpicture}} + \end{minipage} % subsubsection example_circle_attributes (end) % subsection attributes_of_a_circle (end) @@ -96,184 +96,314 @@ Three attributes are used (south, west, radius). \toprule \textbf{Methods} & \textbf{Comments} & \\ \midrule \\ -\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & circle center $O$ through $A$\\ -\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & circle center $O$ radius =2 cm\\ -\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & circle diameter $[AB]$ \\ +\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & center $O$ through $A$; [\ref{ssub:method_imeth_circle_new}]\\ +\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & center $O$ radius =2 cm; [\ref{ssub:method_imeth_circle_radius}]\\ +\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & diameter $[AB]$; [\ref{ssub:method_imeth_circle_diameter}] \\ \midrule \textbf{Points} &&\\ \midrule -\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| & $[BC]$ is a diameter \\ -\Imeth{circle}{inversion (pt)} & |z.Bp = C.AC: inversion (z.B)|&\\ -\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$\\ -\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1\\ +\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| & $[BC]$ = diameter; [\ref{ssub:method_imeth_circle_antipode}] \\ +\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$; [\ref{ssub:method_imeth_circle_midarc}]\\ +\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1; [\ref{ssub:method_imeth_circle_point}]\\ \Imeth{circle}{random\_pt(lower, upper)} & &\\ -\Imeth{circle}{internal\_similitude (C)} & |z.I = C.one : internal_similitude (C.two)| &\\ -\Imeth{circle}{external\_similitude (C)} & |z.J = C.one : external_similitude (C.two)| & \\ -\Imeth{circle}{radical\_center (C1<,C2>)} & or only (C1) & Refer to \ref{sub:radical_center} \\ +\Imeth{circle}{inversion (obj)} & |z.Bp = C.AC: inversion (z.B)|& [\ref{ssub:inversion}]\\ +\Imeth{circle}{internal\_similitude (C)} & |z.I= C.one: internal_similitude(C.two)| & [\ref{ssub:method_imeth_circle_internal__similitude}]\\ +\Imeth{circle}{external\_similitude (C)} & |z.J= C.one: external_similitude(C.two)| & [\ref{ssub:method_imeth_circle_external__similitude}] \\ +\Imeth{circle}{radical\_center (C1<,C2>)} & or only (C1) & [\ref{ssub:radical_center} ] \\ \midrule \textbf{Lines} & & \\ \midrule -\Imeth{circle}{radical\_axis (C)} & Refer to ( \ref{sub:d_alembert_2} ; \ref{sub:radical_axis_v1} ; \ref{sub:radical_axis_v2} ; \ref{sub:radical_axis_v3} ; \ref{sub:radical_axis_v4})& \\ -\Imeth{circle}{tangent\_at (pt)} & |z.P = C.OA: tangent_at (z.M)| & Refer to (\ref{ssub:lemoine} ; \ref{ssub:example_combination_of_methods})\\ -\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N = C.OA: tangent_from (z.P)| & Refer to (\ref{tangent_from})\\ -\Imeth{circle}{inversion (line)} & |L or C = C.AC: inversion (L.EF)|& Refer to (\ref{ssub:inversion_line})\\ -\Imeth{circle}{common\_tangent (C)} & |z.a,z.b = C.AC: common_tangent (C.EF)|& Refer to (\ref{sub:common_tangent} ; \ref{sub:common_tangent_orthogonality})\\ +\Imeth{circle}{radical\_axis (C)} & [ \ref{ssub:method_imeth_circle_radical__axis_c} ; \ref{sub:d_alembert_2} ] & \\ +\Imeth{circle}{tangent\_at (pt)} & |z.P=C.OA:tangent_at(z.M)| & [\ref{ssub:method_imeth_circle_tangent}] \\ +\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N=C.OA: tangent_from (z.P)| & [\ref{ssub:method_imeth_circle_tangent} ] \\ +\Imeth{circle}{common\_tangent (C)}& |z.a,z.b = C.AC: common_tangent (C.EF)|& [\ref{ssub:common_tangent} ; \ref{sub:common_tangent_orthogonality}] \\ \midrule \textbf{Circles}& &\\ \midrule -\Imeth{circle}{orthogonal\_from (pt)} &|C=C.OA:orthogonal_from (z.P)| & Refer to (\ref{ssub:altshiller} ; \ref{sub:common_tangent_orthogonality} ; \ref{sub:orthogonal_circles_v1} ; \ref{sub:pencil_v1}) \\ -\Imeth{circle}{orthogonal\_through (pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| & Refer to (\ref{sub:orthogonal_circle_through})\\ -\Imeth{circle}{inversion (...)} &|C.AC:inversion (pt, pts, L or C)|& Refer to \ref{ssub:inversion}, \ref{ssub:inversion_point}, \ref{ssub:inversion_line}, \ref{ssub:inversion_circle}\\ -\Imeth{circle}{midcircle (C)} & |C.inv = C.OA: midcircle (C.EF)| & Refer to \ref{ssub:midcircle} \\ -\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & Refer to \ref{sub:radical_circle}\\ +\Imeth{circle}{orthogonal\_from (pt)} &|C=C.OA:orthogonal_from (z.P)| & [\ref{ssub:method_imeth_circle_orthogonal_from_pt} ;\ref{sub:altshiller} ; \ref{sub:pencil_v1}] \\ +\Imeth{circle}{orthogonal\_through(pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| & [\ref{ssub:method_imeth_circle_orthogonal_through}]\\ +\Imeth{circle}{midcircle (C)} & |C.inv = C.OA: midcircle (C.EF)| & [\ref{ssub:midcircle}] \\ +\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & [\ref{ssub:radical_circle}] \\ \midrule \textbf{Miscellaneous} &&\\ \midrule -\Imeth{circle}{power (pt)} &|p = C.OA: power (z.M)| & Refer to (\ref{sub:power_v1} ; \ref{sub:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion}) \\ -\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk}) \\ -\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk}) \\ +\Imeth{circle}{power (pt)} &| r = C.OA: power (z.M)| & [\ref{par:power_v1} ; \ref{par:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion} ] \\ +\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}] \\ +\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}] \\ \Imeth{circle}{draw ()} & for further use &\\ -\Imeth{circle}{circles\_position (C1)} & result = string &Refer to (\ref{sub:circles_position}) \\ +\Imeth{circle}{circles\_position (C1)} & result = string & [\ref{ssub:circles_position}] \\ \bottomrule \end{tabular} \egroup % subsection methods_circle (end) -\subsubsection{Altshiller} % (fold) -\label{ssub:altshiller} +\subsubsection{Method \Imeth{circle}{new}} % (fold) +\label{ssub:method_imeth_circle_new} + +A circle is defined by its centre and a point through which it passes. +\vspace{6pt} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} - z.P = point : new (0,0) - z.Q = point : new (5,0) - z.I = point : new (3,2) - C.QI = circle : new (z.Q,z.I) - C.PE = C.QI : orthogonal_from (z.P) - z.E = C.PE.through - C.QE = circle : new (z.Q,z.E) - _,z.F = intersection (C.PE,C.QE) - z.A = C.PE: point (1/9) - L.AE = line : new (z.A,z.E) - _,z.C = intersection (L.AE,C.QE) - L.AF = line : new (z.A,z.F) - L.CQ = line : new (z.C,z.Q) - z.D = intersection (L.AF,L.CQ) +z.O = point: new (0,0) +z.A = point: new (2,1) +C = circle: new (z.O , z.A) \end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(P,E Q,E) - \tkzDrawLines[add=0 and 1](P,Q) - \tkzDrawLines[add=0 and 2](A,E) - \tkzDrawSegments(P,E E,F F,C A,F C,D) - \tkzDrawPoints(P,Q,E,F,A,C,D) - \tkzLabelPoints(P,Q,E,F,A,C,D) +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,O) +\tkzLabelPoints[right](A,O) \end{tikzpicture} \end{Verbatim} \end{minipage} -\hspace*{\fill} \begin{minipage}{.5\textwidth} - \begin{tkzelements} - scale =.5 - z.P = point : new (0,0) - z.Q = point : new (5,0) - z.I = point : new (3,2) - C.QI = circle : new (z.Q,z.I) - C.PE = C.QI : orthogonal_from (z.P) - z.E = C.PE.through - C.QE = circle : new (z.Q,z.E) - _,z.F = intersection (C.PE,C.QE) - z.A = C.PE: point (1/9) - L.AE = line : new (z.A,z.E) - _,z.C = intersection (L.AE,C.QE) - L.AF = line : new (z.A,z.F) - L.CQ = line : new (z.C,z.Q) - z.D = intersection (L.AF,L.CQ) - \end{tkzelements} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(P,E Q,E) - \tkzDrawLines[add=0 and 1](P,Q) - \tkzDrawLines[add=0 and 2](A,E) - \tkzDrawSegments(P,E E,F F,C A,F C,D) - \tkzDrawPoints(P,Q,E,F,A,C,D) - \tkzLabelPoints(P,Q,E,F,A,C,D) - \end{tikzpicture} +\begin{tkzelements} +z.O = point: new (0,0) +z.A = point: new (2,1) +C = circle: new (z.O , z.A) +\end{tkzelements} + \begin{center} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,O) +\tkzLabelPoints[right](A,O) +\end{tikzpicture} + \end{center} + \end{minipage} -%subsubsection altshiller (end) -\subsubsection{Lemoine} % (fold) -\label{ssub:lemoine} +% subsubsection method_imeth_circle_new (end) +\subsubsection{Method \Imeth{circle}{radius}} % (fold) +\label{ssub:method_imeth_circle_radius} + + +We define a circle with its centre and radius. + +\vspace{6pt} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} - scale = 1.25 - z.A = point: new (1,0) - z.B = point: new (5,2) - z.C = point: new (1.2,2) - T = triangle: new(z.A,z.B,z.C) - z.O = T.circumcenter - C.OA = circle: new (z.O,z.A) - L.tA = C.OA: tangent_at (z.A) - L.tB = C.OA: tangent_at (z.B) - L.tC = C.OA: tangent_at (z.C) - z.P = intersection (L.tA,T.bc) - z.Q = intersection (L.tB,T.ca) - z.R = intersection (L.tC,T.ab) +z.O = point: new (0,0) +z.A = point: new (2,1) +C = circle: radius (z.A , math.sqrt(5)) +z.T = C.through \end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon[teal](A,B,C) - \tkzDrawCircle(O,A) - \tkzDrawPoints(A,B,C,P,Q,R) - \tkzLabelPoints(A,B,C,P,Q,R) - \tkzDrawLine[blue](Q,R) - \tkzDrawLines[red](A,P B,Q R,C) - \tkzDrawSegments(A,R C,P C,Q) +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(A,T) +\tkzDrawPoints(A,O,T) +\tkzLabelPoints[right](A,O,T) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + z.O = point: new (0,0) + z.A = point: new (2,1) + C = circle: radius (z.A , math.sqrt(5)) + z.T = C.through + \end{tkzelements} + \begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawCircles(A,T) + \tkzDrawPoints(A,O,T) + \tkzLabelPoints[right](A,O,T) + \end{tikzpicture} + \end{center} +\end{minipage} +% subsubsection method_imeth_circle_radius (end) + +\subsubsection{Method \Imeth{circle}{diameter}} % (fold) +\label{ssub:method_imeth_circle_diameter} + +A circle is defined by two points at the ends of one of its diameters. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point: new (0,0) +z.B = point: new (2,1) +C = circle: diameter (z.A , z.B) +z.O = C.center +z.T = C.through +\end{tkzelements} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,T) +\tkzDrawPoints(A,B,O,T) +\tkzLabelPoints[right](A,B,O,T) \end{tikzpicture} \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +z.A = point: new (0,0) +z.B = point: new (2,1) +C = circle: diameter (z.A , z.B) +z.O = C.center +z.T = C.through +\end{tkzelements} + \begin{center} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,T) +\tkzDrawPoints(A,B,O,T) +\tkzLabelPoints[right](A,B,O,T) +\end{tikzpicture} + \end{center} +\end{minipage} +% subsubsection method_imeth_circle_diameter (end) +\subsubsection{Method \Imeth{circle}{antipode}} % (fold) +\label{ssub:method_imeth_circle_antipode} +This method is used to define a point that is diametrically opposed to a point on a given circle. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point: new (0,0) +z.O = point: new (2,1) +C = circle: new (z.O , z.A) +z.B = C : antipode (z.A) +\end{tkzelements} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,B,O) +\tkzLabelPoints[right](A,B,O) +\end{tikzpicture} +\end{Verbatim} \end{minipage} \begin{minipage}{.5\textwidth} \begin{tkzelements} -scale = .75 -z.A = point: new (1,0) -z.B = point: new (5,2) -z.C = point: new (1.2,2) -T = triangle: new(z.A,z.B,z.C) -z.O = T.circumcenter -C.OA = circle: new (z.O,z.A) -L.tA = C.OA: tangent_at (z.A) -L.tB = C.OA: tangent_at (z.B) -L.tC = C.OA: tangent_at (z.C) -z.R = intersection (L.tC,T.ab) -z.P = intersection (L.tA,T.bc) -z.Q = intersection (L.tB,T.ca) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[rotate=90] -\tkzGetNodes -\tkzDrawPolygon[teal](A,B,C) +z.A = point: new (0,0) +z.O = point: new (2,1) +C = circle: new (z.O , z.A) +z.B = C : antipode (z.A) +\end{tkzelements} + \begin{center} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,B,O) +\tkzLabelPoints[right](A,B,O) +\end{tikzpicture} + \end{center} +\end{minipage} + + +% subsubsection method_imeth_circle_antipode (end) + +\subsubsection{Method \Imeth{circle}{midarc}} % (fold) +\label{ssub:method_imeth_circle_midarc} +The definition given in [ \href{https://mathworld.wolfram.com/Mid-ArcPoints.html}{Weisstein, Eric W. "Mid-Arc Points." From MathWorld--A Wolfram Web Resource.}] is as follows: +The mid-arc points of a triangle as defined by Johnson (1929) are the points on the circumcircle of the triangle which lie half-way along each of the three arcs determined by the vertices. These points arise in the definition of the Fuhrmann circle and Fuhrmann triangle, and lie on the extensions of the perpendicular bisectors of the triangle sides drawn from the circumcenter. + +The definition I use here is more general: the defined point is simply the point that divides an arc into two arcs of the same length. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point: new (0,0) +z.O = point: new (2,1) +C = circle: new (z.O , z.A) +z.B = C : point (0.25) +z.M = C : midarc (z.A,z.B) +\end{tkzelements} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,B,O,M) +\tkzLabelPoints[right](A,B,O,M) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +z.A = point: new (0,0) +z.O = point: new (2,1) +C = circle: new (z.O , z.A) +z.B = C : point (0.25) +z.M = C : midarc (z.A,z.B) +\end{tkzelements} + \begin{center} +\begin{tikzpicture}[gridded] +\tkzGetNodes +\tkzDrawCircles(O,A) +\tkzDrawPoints(A,B,O,M) +\tkzLabelPoints[right](A,B,O,M) +\end{tikzpicture} + \end{center} +\end{minipage} + +% subsubsection method_imeth_circle_midarc (end) + +\subsubsection{Method \Imeth{circle}{point (r)}} % (fold) +\label{ssub:method_imeth_circle_point} + +Let $C$ be a circle with centre $O$ and passing through $A$ such that |z.A = C.through|. This method defines a point $M$ on the circle from A such that the ratio of the length of $\widearc{AM}$ to the circumference of the circle is equal to $r$. + +In the next example, $r=\dfrac{1}{6}$ corresponds to $\dfrac{\pi/3}{2\pi}$, so the angle $\widehat{AOE}$ has the measure $\pi/3$. + +If $r=.5$ the defined point is diametrically opposed to $A$, the angle $\widehat{AOD}$ has the measure $\pi$. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} + \begin{tkzelements} + z.O = point: new (0,0) + z.A = point: new (1,2) + C.OA = circle: new (z.O,z.A) + z.B = C.OA: point (1/6) + z.C = C.OA: point (0.25) + z.D = C.OA: point (0.5) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes \tkzDrawCircle(O,A) -\tkzDrawPoints(A,B,C,P,Q,R) -\tkzLabelPoints(A,B,C,P,Q,R) -\tkzDrawLine[blue](Q,R) -\tkzDrawLines[red](A,P B,Q R,C) -\tkzDrawSegments(A,R C,P C,Q) +\tkzDrawPoints(A,...,D,O) +\tkzLabelPoints(A,...,D,O) \end{tikzpicture} +\end{Verbatim} \end{minipage} -%\caption{Lemoine line} -% subsubsection lemoine (end) +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + z.O = point: new (0,0) + z.A = point: new (1,2) + C.OA = circle: new (z.O,z.A) + z.B = C.OA: point (1/6) + z.C = C.OA: point (0.25) + z.D = C.OA: point (0.5) +\end{tkzelements} +\begin{center} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawCircle(O,A) +\tkzDrawPoints(A,...,D,O) +\tkzLabelPoints(A,...,D,O) +\end{tikzpicture} +\end{center} +\end{minipage} -\subsubsection{Inversion: point, line and circle} % (fold) + +% subsubsection method_imeth_circle_point (end) + +\subsubsection{Method \Imeth{circle}{inversion (obj)}: point, line and circle} % (fold) \label{ssub:inversion} The \code{inversion} method can be used on a point, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use. -\subsubsection{Inversion: point} % (fold) -\label{ssub:inversion_point} +\paragraph{Inversion: point} % (fold) +\label{par:inversion_point} The \code{inversion} method can be used on a point, a group of points, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use. @@ -308,20 +438,23 @@ The \code{inversion} method can be used on a point, a group of points, a line or z.d = C.oa: inversion (z.c) p = C.oa: power (z.c) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircle(o,a) - \tkzDrawSegments(o,a o,c) - \tkzDrawPoints(a,o,c,d) - \tkzLabelPoints(a,o,c,d) - \tkzLabelSegment[sloped,above=1em](c,d){% - La puissance de c est \tkzUseLua{p}} - \end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(o,a) + \tkzDrawSegments(o,a o,c) + \tkzDrawPoints(a,o,c,d) + \tkzLabelPoints(a,o,c,d) + \tkzLabelSegment[sloped,above=1em](c,d){% + La puissance de c est \tkzUseLua{p}} + \end{tikzpicture} +\end{center} + \end{minipage} -\subsubsection{Inversion: line} % (fold) -\label{ssub:inversion_line} +\paragraph{Inversion: line} % (fold) +\label{par:inversion_line} The result is either a straight line or a circle. @@ -333,7 +466,7 @@ The result is either a straight line or a circle. C.oa = circle: new (z.o,z.a) z.c = point: new (3,2) z.d = point: new (0,4) - L.cd = line: new (z.c,z.d) + L.cd = line: new (z.c,z.d) C.OH = C.oa: inversion (L.cd) z.O,z.H = get_points(C.OH) \end{tkzelements} @@ -357,19 +490,22 @@ The result is either a straight line or a circle. C.OH = C.oa: inversion (L.cd) z.O,z.H = get_points(C.OH) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(o,a) - \tkzDrawCircles[new](O,H) - \tkzDrawLines(c,d o,H) - \tkzDrawPoints(a,o,c,d,H) - \tkzLabelPoints(a,o,c,d,H) - \end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(o,a) + \tkzDrawCircles[new](O,H) + \tkzDrawLines(c,d o,H) + \tkzDrawPoints(a,o,c,d,H) + \tkzLabelPoints(a,o,c,d,H) + \end{tikzpicture} +\end{center} + \end{minipage} - \subsubsection{Inversion: circle} % (fold) - \label{ssub:inversion_circle} +\paragraph{Inversion: circle} % (fold) + \label{par:inversion_circle} The result is either a straight line or a circle. @@ -423,19 +559,697 @@ color = "orange" else z.f,z.b = get_points(obj) end color = "orange" \end{tkzelements} - \hspace{\fill} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles[black](o,a) - \tkzDrawCircles[teal](c,o e,d) - \tkzDrawCircles[\tkzUseLua{color}](f,b) - \tkzDrawLines[\tkzUseLua{color}](p,q) - \tkzDrawPoints(a,...,f,o,p,q) - \tkzLabelPoints(a,...,f,o,p,q) - \end{tikzpicture} + + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles[black](o,a) + \tkzDrawCircles[teal](c,o e,d) + \tkzDrawCircles[\tkzUseLua{color}](f,b) + \tkzDrawLines[\tkzUseLua{color}](p,q) + \tkzDrawPoints(a,...,f,o,p,q) + \tkzLabelPoints(a,...,f,o,p,q) + \end{tikzpicture} + \end{center} \end{minipage} + % subsubsection inversion (end) +\subsubsection{Method \Imeth{circle}{internal\_similitude}} % (fold) +\label{ssub:method_imeth_circle_internal__similitude} + +Circles are geometrically similar to one another and mirror symmetric. Hence, a pair of circles has both types of homothetic centers, internal and external, unless the centers are equal or the radii are equal; these exceptional cases are treated after general position. These two homothetic centers lie on the line joining the centers of the two given circles, which is called the line of centers. Circles with radius zero can also be included (see exceptional cases), and negative radius can also be used, switching external and internal. [Wikipedia] + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 0.75 +z.A = point : new ( 0 , 0 ) +z.a = point : new ( 2 , 2 ) +z.B = point : new ( 5 , 2 ) +z.b = point : new ( 6 , 1 ) +C.Aa = circle : new (z.A,z.a) +C.Bb = circle : new (z.B,z.b) +z.I = C.Aa : internal_similitude (C.Bb) +L.TA1,L.TA2 = C.Aa : tangent_from (z.I) +z.A1 = L.TA1.pb +z.A2 = L.TA2.pb +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawCircles(A,a B,b) +\tkzDrawPoints(A,a,B,b,I,A1,A2) +\tkzDrawLines[add = 1 and 2](A1,I A2,I) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .75 +z.A = point : new ( 0 , 0 ) +z.a = point : new ( 2 , 2 ) +z.B = point : new ( 5 , 2 ) +z.b = point : new ( 6 , 1 ) +C.Aa = circle : new (z.A,z.a) +C.Bb = circle : new (z.B,z.b) +z.I = C.Aa : internal_similitude (C.Bb) +L.TA1,L.TA2 = C.Aa : tangent_from (z.I) +z.A1 = L.TA1.pb +z.A2 = L.TA2.pb +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,a B,b) + \tkzDrawPoints(A,a,B,b,I,A1,A2) + \tkzDrawLines[add = 1 and 2](A1,I A2,I) + \end{tikzpicture} +\end{center} +\end{minipage} + +% subsubsection method_imeth_circle_internal__similitude (end) + +\subsubsection{Method \Imeth{circle}{external\_similitude}} % (fold) +\label{ssub:method_imeth_circle_external__similitude} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point : new ( 0 , 0 ) +z.a = point : new ( 2 , 2 ) +z.B = point : new ( 3 , 2 ) +z.b = point : new ( 4 , 1 ) +C.Aa = circle : new (z.A,z.a) +C.Bb = circle : new (z.B,z.b) +z.I = C.Aa : external_similitude (C.Bb) +L.TA1,L.TA2 = C.Aa : tangent_from (z.I) +z.A1 = L.TA1.pb +z.A2 = L.TA2.pb +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawCircles(A,a B,b) +\tkzDrawPoints(A,a,B,b,I,A1,A2) +\tkzDrawLines[add = .5 and .2](A1,I A2,I) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .75 +z.A = point : new ( 0 , 0 ) +z.a = point : new ( 2 , 2 ) +z.B = point : new ( 3 , 2 ) +z.b = point : new ( 4 , 1 ) +C.Aa = circle : new (z.A,z.a) +C.Bb = circle : new (z.B,z.b) +z.I = C.Aa : external_similitude (C.Bb) +L.TA1,L.TA2 = C.Aa : tangent_from (z.I) +z.A1 = L.TA1.pb +z.A2 = L.TA2.pb +\end{tkzelements} +\begin{center} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawCircles(A,a B,b) +\tkzDrawPoints(A,a,B,b,I,A1,A2) +\tkzDrawLines[add = .5 and .2](A1,I A2,I) +\end{tikzpicture} +\end{center} +\end{minipage} +% subsubsection method_imeth_circle_external__similitude (end) + + +\subsubsection{Method \Imeth{circle}{radical\_center (C1,C2)}} % (fold) +\label{ssub:radical_center} + +The radical lines of three circles are concurrent in a point known as the radical center (also called the power center). This theorem was originally demonstrated by Monge (Dörrie 1965, p. 153). [\href{https://mathworld.wolfram.com/RadicalCenter.html}{Weisstein, Eric W. "Radical Center." From MathWorld--A Wolfram Web Resource. } +] + +Here I have also named \code{radical\_center} the point of intersection of the radical axis of two circles with the centre axis. See the following example for how to obtain point $H$. + + +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{Verbatim} +\begin{tkzelements} + z.O = point : new (0,0) + z.x = point : new (1,0) + z.y = point : new (4,0) + z.z = point : new (2,0) + z.Op = point : new (4,2) + z.P = point : new (2,2.5) + C.Ox = circle : new (z.O,z.x) + C.Pz = circle : new (z.P,z.z) + C.Opy = circle : new (z.Op,z.y) + z.ap,z.a = intersection (C.Ox,C.Pz) + z.bp,z.b = intersection (C.Opy,C.Pz) + L.aap = line : new (z.a,z.ap) + L.bbp = line : new (z.b,z.bp) + -- z.X = intersection (L.aap,L.bbp) + z.X = C.Ox : radical_center(C.Pz,C.Opy) + -- L.OOp = line : new (z.O,z.Op) + -- z.H = L.OOp : projection (z.X) + z.H = C.Ox : radical_center(C.Opy) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,a O',b P,z) + \tkzDrawLines[red](a,X b',X H,X O,O') + \tkzDrawPoints(O,O',P,a,a',b,b',X,H) + \tkzLabelPoints[below right](O,O',P,H) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{tkzelements} +z.O = point : new (0,0) +z.x = point : new (1,0) +z.y = point : new (4,0) +z.z = point : new (2,0) +z.Op = point : new (4,2) +z.P = point : new (2,2.5) +C.Ox = circle : new (z.O,z.x) +C.Pz = circle : new (z.P,z.z) +C.Opy = circle : new (z.Op,z.y) +z.ap,z.a = intersection (C.Ox,C.Pz) +z.bp,z.b = intersection (C.Opy,C.Pz) +L.aap = line : new (z.a,z.ap) +L.bbp = line : new (z.b,z.bp) +z.X = intersection (L.aap,L.bbp) +L.OOp = line : new (z.O,z.Op) +z.H = L.OOp : projection (z.X) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,a O',b P,z) + \tkzDrawLines[red](a,X b',X H,X O,O') + \tkzDrawPoints(O,O',P,a,a',b,b',X,H) + \tkzLabelPoints[below right](O,O',P,H) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection radical_center (end) + +\subsubsection{Method \Imeth{circle}{radical\_axis}(C)} % (fold) +\label{ssub:method_imeth_circle_radical__axis_c} + +The radical line, also called the radical axis, is the locus of points of equal circle power with respect to two nonconcentric circles. By the chordal theorem, it is perpendicular to the line of centers (Dörrie 1965). [\href{https://mathworld.wolfram.com/RadicalLine.html}{Weisstein, Eric W. "Radical Line." From MathWorld--A Wolfram Web Resource.} ] + +\vspace{6pt} +\paragraph{Radical axis v1} % (fold) +\label{par:radical_axis_v1} + +\begin{Verbatim} +\begin{tkzelements} +scale = .75 +z.X = point : new (0,0) +z.B = point : new (2,2) +z.Y = point : new (7,1) +z.Ap = point : new (8,-1) +L.XY = line : new (z.X,z.Y) +C.XB = circle : new (z.X,z.B) +C.YAp = circle : new (z.Y,z.Ap) +z.E,z.F = get_points (C.XB : radical_axis (C.YAp)) +z.A = C.XB : point (0.4) +T.ABAp = triangle: new (z.A,z.B,z.Ap) +z.O = T.ABAp.circumcenter +C.OAp = circle : new (z.O,z.Ap) +_,z.Bp = intersection (C.OAp,C.YAp) +L.AB = line : new (z.A,z.B) +L.ApBp = line : new (z.Ap,z.Bp) +z.M = intersection (L.AB,L.ApBp) +z.H = L.XY : projection (z.M) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(X,B Y,A') + \tkzDrawArc[dashed,delta=30](O,A')(A) + \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F) + \tkzDrawLines[red](A,M A',M X,Y E,F) + \tkzDrawLines[red,add=1 and 3](M,H) +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} +scale = .75 +z.X = point : new (0,0) +z.B = point : new (2,2) +z.Y = point : new (7,1) +z.Ap = point : new (8,-1) +L.XY = line : new (z.X,z.Y) +C.XB = circle : new (z.X,z.B) +C.YAp = circle : new (z.Y,z.Ap) +z.E,z.F = get_points (C.XB : radical_axis (C.YAp)) +z.A = C.XB : point (0.4) +T.ABAp = triangle: new (z.A,z.B,z.Ap) +z.O = T.ABAp.circumcenter +C.OAp = circle : new (z.O,z.Ap) +_,z.Bp = intersection (C.OAp,C.YAp) +L.AB = line : new (z.A,z.B) +L.ApBp = line : new (z.Ap,z.Bp) +z.M = intersection (L.AB,L.ApBp) +z.H = L.XY : projection (z.M) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(X,B Y,A') + \tkzDrawArc[dashed,delta=30](O,A')(A) + \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F) + \tkzDrawLines[red](A,M A',M X,Y E,F) + \tkzDrawLines[red,add=1 and 3](M,H) + \end{tikzpicture} +\end{center} +% paragraph radical_axis_v1 (end) + +\paragraph{Radical axis v2} % (fold) +\label{par:radical_axis_v2} + +\begin{Verbatim} +\begin{tkzelements} +scale = 1.25 +z.O = point : new (-1,0) +z.Op = point : new (4,-1) +z.B = point : new (0,2) +z.D = point : new (4,0) +C.OB = circle : new (z.O,z.B) +C.OpD = circle : new (z.Op,z.D) +L.EF = C.OB : radical_axis (C.OpD) +z.E,z.F = get_points (L.EF) +z.M = L.EF : point (.75) +L.MT,L.MTp = C.OB : tangent_from (z.M) +_,z.T = get_points (L.MT) +_,z.Tp = get_points (L.MTp) +L.MK,L.MKp = C.OpD : tangent_from (z.M) +_,z.K = get_points (L.MK) +_,z.Kp = get_points (L.MKp) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',D) + \tkzDrawLine(E,F) + \tkzDrawLine[add=.5 and .5](O,O') + \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K') + \tkzDrawCircle(M,T) + \tkzDrawPoints(O,O',T,M,T',K,K') + \tkzLabelPoints(O,O',T,T',K,K',M) +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} +scale =1.25 +z.O = point : new (-1,0) +z.Op = point : new (4,-1) +z.B = point : new (0,2) +z.D = point : new (4,0) +C.OB = circle : new (z.O,z.B) +C.OpD = circle : new (z.Op,z.D) +L.EF = C.OB : radical_axis (C.OpD) +z.E,z.F = get_points (L.EF) +z.M = L.EF : point (.75) +L.MT,L.MTp = C.OB : tangent_from (z.M) +_,z.T = get_points (L.MT) +_,z.Tp = get_points (L.MTp) +L.MK,L.MKp = C.OpD : tangent_from (z.M) +_,z.K = get_points (L.MK) +_,z.Kp = get_points (L.MKp) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',D) + \tkzDrawLine(E,F) + \tkzDrawLine[add=.5 and .5](O,O') + \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K') + \tkzDrawCircle(M,T) + \tkzDrawPoints(O,O',T,M,T',K,K') + \tkzLabelPoints(O,O',T,T',K,K',M) + \end{tikzpicture} +\end{center} +% paragraph radical_axis_v2 (end) + +\paragraph{Radical axis v3} % (fold) +\label{par:radical_axis_v3} + +\begin{Verbatim} + \begin{tkzelements} + z.O = point : new (0,0) + z.B = point : new (4,0) + z.Op = point : new (6,0) + C.OB = circle : new (z.O,z.B) + C.OpB = circle : new (z.Op,z.B) + L.EF = C.OB : radical_axis (C.OpB) + z.E,z.F = get_points(L.EF) + z.M = L.EF : point (0.2) + L = C.OB : tangent_from (z.M) + _,z.T = get_points (L) + L = C.OpB : tangent_from (z.M) + _,z.Tp = get_points (L) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',B) + \tkzDrawSegments(M,T M,T') + \tkzDrawSegments(E,F) + \tkzDrawLine[add=.5 and .5](O,O') + \tkzDrawPoints(O,B,O',E,F,M,T,T') + \tkzLabelPoints(O,O',B,E,F,T,T') + \tkzDrawArc(M,T')(T) +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} +z.O = point : new (0,0) +z.B = point : new (4,0) +z.Op = point : new (6,0) +C.OB = circle : new (z.O,z.B) +C.OpB = circle : new (z.Op,z.B) +L.EF = C.OB : radical_axis (C.OpB) +z.E,z.F = get_points(L.EF) +z.M = L.EF : point (0.2) +L = C.OB : tangent_from (z.M) +_,z.T = get_points (L) +L = C.OpB : tangent_from (z.M) +_,z.Tp = get_points (L) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',B) + \tkzDrawSegments(M,T M,T') + \tkzDrawSegments(E,F) + \tkzDrawLine[add=.5 and .5](O,O') + \tkzDrawPoints(O,B,O',E,F,M,T,T') + \tkzLabelPoints(O,O',B,E,F,T,T') + \tkzDrawArc(M,T')(T) + \end{tikzpicture} +\end{center} +% paragraph radical_axis_v3 (end) + +\paragraph{Radical axis v4} % (fold) +\label{par:radical_axis_v4} + +\begin{Verbatim} +\begin{tkzelements} + z.O = point : new (0,0) + z.B = point : new (5,0) + z.Op = point : new (3,0) + C.OB = circle : new (z.O,z.B) + C.OpB = circle : new (z.Op,z.B) + L.EF = C.OB : radical_axis (C.OpB) + z.E,z.F = get_points(L.EF) + z.H = L.EF.mid + z.M = L.EF : point (.8) + _,L = C.OB : tangent_from (z.M) + _,z.T = get_points (L) + _,L = C.OpB : tangent_from (z.M) + _,z.Tp = get_points (L) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',B) + \tkzDrawSegments(M,T M,T') + \tkzDrawSegments(E,F) + \tkzDrawLine[add=.3 and .3](O,H) + \tkzDrawPoints(O,O',B,E,H,M) + \tkzLabelPoints[below right](O,O',E,F,M,T,T') + \tkzDrawArc(M,B)(T) +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} + z.O = point : new (0,0) + z.B = point : new (5,0) + z.Op = point : new (3,0) + C.OB = circle : new (z.O,z.B) + C.OpB = circle : new (z.Op,z.B) + L.EF = C.OB : radical_axis (C.OpB) + z.E,z.F = get_points(L.EF) + z.H = L.EF.mid + z.M = L.EF : point (.8) + _,L = C.OB : tangent_from (z.M) + _,z.T = get_points (L) + _,L = C.OpB : tangent_from (z.M) + _,z.Tp = get_points (L) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',B) + \tkzDrawSegments(M,T M,T') + \tkzDrawSegments(E,F) + \tkzDrawLine[add=.3 and .3](O,H) + \tkzDrawPoints(O,O',B,E,H,M) + \tkzLabelPoints[below right](O,O',E,F,M,T,T') + \tkzDrawArc(M,B)(T) + \end{tikzpicture} +\end{center} +% paragraph radical_axis_v4 (end) + +% subsubsection method_imeth_circle_radical__axis_c (end) + + +\subsubsection{Methods \Imeth{circle}{tangent\_at (P)} and \Imeth{circle}{tangent\_from (P)}} % (fold) +\label{ssub:method_imeth_circle_tangent} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} + \begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (1,2) + C.AB = circle: new (z.A,z.B) + z.C = point: new (3,-2) + L.T = C.AB : tangent_at (z.B) + z.D = L.T.pb + L.T1,L.T2 = C.AB : tangent_from (z.C) + z.T1 = L.T1.pb + z.T2 = L.T2.pb +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawCircle(A,B) +\tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2) +\tkzDrawSegments[dashed](A,B A,T1 A,T2) +\tkzDrawPoints(A,...,D,T1,T2) +\tkzLabelPoints[below left](A,T2,C) +\tkzLabelPoints[above right](B,T1,D) +\tkzMarkRightAngles(A,B,D A,T1,C A,T2,C) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (1,2) + C.AB = circle: new (z.A,z.B) + z.C = point: new (3,-2) + L.T = C.AB : tangent_at (z.B) + z.D = L.T.pb + L.T1,L.T2 = C.AB : tangent_from (z.C) + z.T1 = L.T1.pb + z.T2 = L.T2.pb +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(A,B) + \tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2) + \tkzDrawSegments[dashed](A,B A,T1 A,T2) + \tkzDrawPoints(A,...,D,T1,T2) + \tkzLabelPoints[below left](A,T2,C) + \tkzLabelPoints[above right](B,T1,D) + \tkzMarkRightAngles(A,B,D A,T1,C A,T2,C) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection (end) + +\subsubsection{Common tangent: Angle of two intersecting circles} % (fold) +\label{ssub:common_tangent} + +Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles. + +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 5 , 2 ) + L.AB = line : new ( z.A , z.B ) + z.C = point : new ( 1 , 2 ) + C.AC = circle : new (z.A,z.C) + C.BC = circle : new (z.B,z.C) + z.T,z.Tp = C.AC : common_tangent (C.BC) + L.TTp = line : new (z.T,z.Tp) + z.M = C.AC : point (0.45) + L.MC =line : new (z.M,z.C) + z.Mp = intersection (L.MC, C.BC) + L.mm = L.TTp : ll_from (z.C) + _,z.M = intersection (L.mm, C.AC) + z.Mp = intersection (L.mm, C.BC) + _,z.D = intersection (C.AC,C.BC) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,C B,C) + \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C) + \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T') + \tkzDrawPoints(A,B,C,D,M,M',T,T') + \tkzLabelPoints(A,B,D,M) + \tkzLabelPoints[above](C,M',T,T') + \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M) + \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T') +\end{tikzpicture} +\end{Verbatim} + + +\begin{tkzelements} +z.A = point : new ( 0 , 0 ) +z.B = point : new ( 5 , 2 ) +L.AB = line : new ( z.A , z.B ) +z.C = point : new ( 1 , 2 ) +C.AC = circle : new (z.A,z.C) +C.BC = circle : new (z.B,z.C) +z.T,z.Tp = C.AC : common_tangent (C.BC) +L.TTp = line : new (z.T,z.Tp) +z.M = C.AC : point (0.45) +L.MC =line : new (z.M,z.C) +z.Mp = intersection (L.MC, C.BC) +L.mm = L.TTp : ll_from (z.C) +_,z.M = intersection (L.mm, C.AC) +z.Mp = intersection (L.mm, C.BC) +_,z.D = intersection (C.AC,C.BC) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,C B,C) + \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C) + \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T') + \tkzDrawPoints(A,B,C,D,M,M',T,T') + \tkzLabelPoints(A,B,D,M) + \tkzLabelPoints[above](C,M',T,T') + \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M) + \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T') + \end{tikzpicture} +\end{center} +% subsubsection common_tangent (end) + +\subsubsection{Method \Imeth{circle}{orthogonal\_from (pt)}} % (fold) +\label{ssub:method_imeth_circle_orthogonal_from_pt} + +In geometry, two circles are said to be orthogonal if their respective tangent lines at the points of intersection are perpendicular (meet at a right angle). [wikipedia] + +This method determines a circle with a given centre, orthogonal to a circle that is also given. + +\begin{Verbatim} +\begin{tkzelements} + scale = .6 + z.C_1 = point: new (0,0) + z.C_2 = point: new (8,0) + z.A = point: new (5,0) + C = circle: new (z.C_1,z.A) + z.S,z.T = get_points (C: orthogonal_from (z.C_2)) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(C_1,T C_2,T) + \tkzDrawSegments(C_1,T C_2,T) + \tkzDrawLine(C_1,C_2) + \tkzMarkRightAngle[fill=teal,% + opacity=.2,size=1](C_1,T,C_2) + \tkzDrawPoints(C_1,C_2,T) + \tkzLabelPoints(C_1,C_2) + \tkzLabelPoints[above](T) + \tkzLabelSegment[left](C_1,T){r} + \tkzLabelSegments[right](C_2,T){$\gamma$} + \tkzLabelSegment[below](C_1,C_2){d} + \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1} + \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2} +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} +scale = .6 +z.C_1 = point: new (0,0) +z.C_2 = point: new (8,0) +z.A = point: new (5,0) +C = circle: new (z.C_1,z.A) +z.S,z.T = get_points (C: orthogonal_from (z.C_2)) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(C_1,T C_2,T) + \tkzDrawSegments(C_1,T C_2,T) + \tkzDrawLine(C_1,C_2) + \tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2) + \tkzDrawPoints(C_1,C_2,T) + \tkzLabelPoints(C_1,C_2) + \tkzLabelPoints[above](T) + \tkzLabelSegment[left](C_1,T){r} + \tkzLabelSegments[right](C_2,T){$\gamma$} + \tkzLabelSegment[below](C_1,C_2){d} + \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1} + \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2} + \end{tikzpicture} +\end{center} + +% subsubsection method_imeth_circle_orthogonal__from_pt (end) + +\subsubsection{Method \Imeth{circle}{orthogonal\_through}} % (fold) +\label{ssub:method_imeth_circle_orthogonal_through} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.O = point: new (0,1) + z.A = point: new (1,0) + z.z1 = point: new (-1.5,-1.5) + z.z2 = point: new (2.5,-1.25) + C.OA = circle: new (z.O,z.A) + C = C.OA: orthogonal_through (z.z1,z.z2) + z.c = C.center +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzDrawCircle[new](c,z1) + \tkzDrawPoints[new](O,A,z1,z2,c) + \tkzLabelPoints[right](O,A,z1,z2,c) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth}\begin{tkzelements} + z.O = point: new (0,1) + z.A = point: new (1,0) + z.z1 = point: new (-1.5,-1.5) + z.z2 = point: new (2.5,-1.25) + C.OA = circle: new (z.O,z.A) + C = C.OA: orthogonal_through (z.z1,z.z2) + z.c = C.center +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzDrawCircle[orange](c,z1) + \tkzDrawPoints[orange](O,A,z1,z2,c) + \tkzLabelPoints[right](O,A,z1,z2,c) + \end{tikzpicture} +\end{center} +\end{minipage} +% subsubsection method_imeth_circle_orthogonal__through (end) + \subsubsection{midcircle} % (fold) \label{ssub:midcircle} @@ -473,8 +1287,8 @@ z.H = C.AO.north z.F = C.BP.north z.G = C.BP.south C.IT,C.JV = C.AO : midcircle (C.BP) -z.I,z.T = get_points ( C.IT ) -z.J,z.V = get_points ( C.JV ) +z.I,z.T = get_points (C.IT) +z.J,z.V = get_points (C.JV) z.X,z.Y = intersection (C.AO,C.BP) \end{tkzelements} \end{Verbatim} @@ -493,8 +1307,8 @@ z.X,z.Y = intersection (C.AO,C.BP) z.F = C.BP.north z.G = C.BP.south C.IT,C.JV = C.AO : midcircle (C.BP) - z.I,z.T = get_points ( C.IT ) - z.J,z.V = get_points ( C.JV ) + z.I,z.T = get_points (C.IT) + z.J,z.V = get_points (C.JV) z.X,z.Y = intersection (C.AO,C.BP) \end{tkzelements} \begin{tikzpicture} @@ -520,7 +1334,7 @@ z.X,z.Y = intersection (C.AO,C.BP) \vfill \item One given circle is in the interior of the other given circle. - +\label{midcircle_diameter} \begin{minipage}{.6\textwidth} \begin{Verbatim} \begin{tkzelements} @@ -539,7 +1353,7 @@ z.X,z.Y = intersection (C.AO,C.BP) z.x = C.SV.center z.y = C.UR.center C.IT = C.AO : midcircle (C.BP) - z.I,z.T = get_points ( C.IT ) + z.I,z.T = get_points (C.IT) \end{tkzelements} \end{Verbatim} \end{minipage} @@ -560,7 +1374,7 @@ z.X,z.Y = intersection (C.AO,C.BP) z.x = C.SV.center z.y = C.UR.center C.IT = C.AO : midcircle (C.BP) - z.I,z.T = get_points ( C.IT ) + z.I,z.T = get_points (C.IT) \end{tkzelements} \begin{tikzpicture} \tkzGetNodes @@ -597,7 +1411,7 @@ z.E = C.Aa.north z.F = C.Bb.north L.EF = line : new (z.E,z.F) C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.I,z.T = get_points (C.IT) L.TF = C.Bb : tangent_from (z.I) z.H = intersection (L.TF,C.IT) z.E = intersection (L.TF,C.Aa) @@ -620,7 +1434,7 @@ z.E = C.Aa.north z.F = C.Bb.north L.EF = line : new (z.E,z.F) C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.I,z.T = get_points (C.IT) L.TF = C.Bb : tangent_from (z.I) z.H = intersection (L.TF,C.IT) z.E = intersection (L.TF,C.Aa) @@ -662,7 +1476,7 @@ z.E = C.Aa.north z.F = C.Bb.north L.EF = line : new (z.E,z.F) C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.I,z.T = get_points(C.IT) L.TF = C.Bb : tangent_from (z.I) z.H = intersection (L.TF,C.IT) z.E = intersection (L.TF,C.Aa) @@ -685,7 +1499,7 @@ z.E = C.Aa.north z.F = C.Bb.north L.EF = line : new (z.E,z.F) C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.I,z.T = get_points (C.IT) L.TF = C.Bb : tangent_from (z.I) z.H = intersection (L.TF,C.IT) z.E = intersection (L.TF,C.Aa) @@ -711,14 +1525,14 @@ z.F=L.TF.pb \begin{minipage}{.4\textwidth} \begin{Verbatim} \begin{tkzelements} -z.A = point : new ( 2 , 0 ) -z.B = point : new ( 4 , 0 ) -z.a = point : new ( 1 , 0) -z.b = point : new ( 1 , 0) -C.Aa = circle : new (z.A,z.a) -C.Bb = circle : new (z.B,z.b) -C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.A = point : new ( 2 , 0 ) +z.B = point : new ( 4 , 0 ) +z.a = point : new ( 1 , 0) +z.b = point : new ( 1 , 0) +C.Aa = circle : new (z.A,z.a) +C.Bb = circle : new (z.B,z.b) +C.IT = C.Aa : midcircle (C.Bb) +z.I,z.T = get_points(C.IT) \end{tkzelements} \end{Verbatim} \end{minipage} @@ -731,7 +1545,7 @@ z.b = point : new ( 1 , 0) C.Aa = circle : new (z.A,z.a) C.Bb = circle : new (z.B,z.b) C.IT = C.Aa : midcircle (C.Bb) -z.I,z.T = get_points ( C.IT ) +z.I,z.T = get_points (C.IT) \end{tkzelements} \begin{tikzpicture} @@ -748,206 +1562,205 @@ z.I,z.T = get_points ( C.IT ) \end{enumerate} % subsubsection midcircle (end) -% subsection methods_of_the_class_circle (end) -\subsection{Circles\_position} % (fold) -\label{sub:circles_position} -This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are: +\subsubsection{Radical circle} % (fold) +\label{ssub:radical_circle} -\begin{itemize} - \item \code{outside} - \item \code{outside tangent} - \item \code{inside tangent} - \item \code{inside} - \item \code{intersect} -\end{itemize} - -\begin{minipage}{.5\textwidth} -\begin{Verbatim} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{Verbatim} \begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.a = point : new ( 3 , 0 ) - z.B = point : new ( 2 , 0 ) - z.b = point : new ( 3 , 0 ) - C.Aa = circle: new (z.A,z.a) - C.Bb = circle: new (z.B,z.b) - position = C.Aa : circles_position (C.Bb) - if position == "inside tangent" - then color = "orange" - else color = "blue" end + scale = .5 + z.A = point: new (0,0) + z.B = point: new (6,0) + z.C = point: new (0.8,4) + T.ABC = triangle : new ( z.A,z.B,z.C ) + C.exa = T.ABC : ex_circle () + z.I_a,z.Xa = get_points (C.exa) + C.exb = T.ABC : ex_circle (1) + z.I_b,z.Xb = get_points (C.exb) + C.exc = T.ABC : ex_circle (2) + z.I_c,z.Xc = get_points (C.exc) + C.ortho = C.exa : radical_circle (C.exb,C.exc) + z.w,z.a = get_points (C.ortho) \end{tkzelements} - \begin{tikzpicture} \tkzGetNodes - \tkzDrawCircle(A,a) - \tkzDrawCircle[color=\tkzUseLua{color}](B,b) + \tkzDrawPolygon(A,B,C) + \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc) + \tkzDrawCircles[red,thick](w,a) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(A,B,C) \end{tikzpicture} \end{Verbatim} \end{minipage} -\begin{minipage}{.5\textwidth} + \begin{tkzelements} -z.A = point : new ( 1 , 0 ) -z.a = point : new ( 3 , 0 ) -z.B = point : new ( 2 , 0 ) -z.b = point : new ( 3 , 0 ) -C.Aa = circle: new (z.A,z.a) -C.Bb = circle: new (z.B,z.b) -position = C.Aa : circles_position (C.Bb) -if position == "inside tangent" then color = "orange" else color = "blue" end + scale = .5 + z.A = point: new (0,0) + z.B = point: new (6,0) + z.C = point: new (0.8,4) + T.ABC = triangle : new ( z.A,z.B,z.C ) + C.exa = T.ABC : ex_circle () + z.I_a,z.Xa = get_points (C.exa) + C.exb = T.ABC : ex_circle (1) + z.I_b,z.Xb = get_points (C.exb) + C.exc = T.ABC : ex_circle (2) + z.I_c,z.Xc = get_points (C.exc) + C.ortho = C.exa : radical_circle (C.exb,C.exc) + z.w,z.a = get_points (C.ortho) \end{tkzelements} -\hspace{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(A,a) -\tkzDrawCircle[color=\tkzUseLua{color}](B,b) -\end{tikzpicture}\hspace{\fill} -\end{minipage} -% subsection circles__position (end) -\subsection{Common tangent: Angle of two intersecting circles} % (fold) -\label{sub:common_tangent} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc) + \tkzDrawCircles[red,thick](w,a) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(A,B,C) + \end{tikzpicture} +\end{center} +% subsubsection radical_circle (end) -Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles. +\subsubsection{Method \Imeth{circle}{power(C)}} % (fold) +\label{ssub:method_imeth_circle_power_c} +\paragraph{Power v1} % (fold) +\label{par:power_v1} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% \begin{Verbatim} \begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 5 , 2 ) - L.AB = line : new ( z.A , z.B ) - z.C = point : new ( 1 , 2 ) - C.AC = circle : new (z.A,z.C) - C.BC = circle : new (z.B,z.C) - z.T,z.Tp = C.AC : common_tangent (C.BC) - L.TTp = line : new (z.T,z.Tp) - z.M = C.AC : point (0.45) - L.MC =line : new (z.M,z.C) - z.Mp = intersection (L.MC, C.BC) - L.mm = L.TTp : ll_from (z.C) - _,z.M = intersection (L.mm, C.AC) - z.Mp = intersection (L.mm, C.BC) - _,z.D = intersection (C.AC,C.BC) -\end{tkzelements} + z.O = point : new (0,0) + z.A = point : new (2,-2) + z.M = point : new (-6,0) + L.AM = line : new (z.A,z.M) + C.OA = circle : new (z.O,z.A) + z.Ap = C.OA : antipode (z.A) + z.B = intersection (L.AM, C.OA) +\end{tkzelements} \begin{tikzpicture} \tkzGetNodes - \tkzDrawCircles(A,C B,C) - \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C) - \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T') - \tkzDrawPoints(A,B,C,D,M,M',T,T') - \tkzLabelPoints(A,B,D,M) - \tkzLabelPoints[above](C,M',T,T') - \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M) - \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T') + \tkzDrawCircle(O,A) + \tkzMarkRightAngle[fill=gray!10](A',B,M) + \tkzDrawSegments(M,O A,A' A',B) + \tkzDrawPoints(O,A,A',M,B) + \tkzLabelPoints(O,A,A',M,B) + \tkzDrawSegments[-Triangle](M,A M,A') \end{tikzpicture} \end{Verbatim} - - +\end{minipage} +\begin{minipage}[t]{.5\textwidth} \begin{tkzelements} -z.A = point : new ( 0 , 0 ) -z.B = point : new ( 5 , 2 ) -L.AB = line : new ( z.A , z.B ) -z.C = point : new ( 1 , 2 ) -C.AC = circle : new (z.A,z.C) -C.BC = circle : new (z.B,z.C) -z.T,z.Tp = C.AC : common_tangent (C.BC) -L.TTp = line : new (z.T,z.Tp) -z.M = C.AC : point (0.45) -L.MC =line : new (z.M,z.C) -z.Mp = intersection (L.MC, C.BC) -L.mm = L.TTp : ll_from (z.C) -_,z.M = intersection (L.mm, C.AC) -z.Mp = intersection (L.mm, C.BC) -_,z.D = intersection (C.AC,C.BC) +scale = 1 +z.O = point : new (0,0) +z.A = point : new (2,-2) +z.M = point : new (-6,0) +L.AM = line : new (z.A,z.M) +C.OA = circle : new (z.O,z.A) +z.Ap = C.OA : antipode (z.A) +z.B = intersection (L.AM, C.OA) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(A,C B,C) -\tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C) -\tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T') -\tkzDrawPoints(A,B,C,D,M,M',T,T') -\tkzLabelPoints(A,B,D,M) -\tkzLabelPoints[above](C,M',T,T') -\tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M) -\tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T') -\end{tikzpicture} -\hspace*{\fill} -% subsection common_tangent (end) -\subsection{Common tangent: orthogonality} % (fold) -\label{sub:common_tangent_orthogonality} -For two circles to be orthogonal, it is necessary and sufficient for a secant passing through one of their common points to be seen from the other common point at a right angle. +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzMarkRightAngle[fill=gray!10](A',B,M) + \tkzDrawSegments(M,O A,A' A',B) + \tkzDrawPoints(O,A,A',M,B) + \tkzLabelPoints(O,A,A',M,B) + \tkzDrawSegments[-Triangle](M,A M,A') + \end{tikzpicture} +\end{center} + +\end{minipage} +% paragraph power_v1 (end) +\paragraph{Power v2} % (fold) +\label{par:power_v2} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% \begin{Verbatim} \begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 4 , 2 ) - L.AB = line : new ( z.A , z.B ) - z.a = point : new ( 1 , 2 ) - C.Aa = circle : new (z.A,z.a) - C.BC = C.Aa : orthogonal_from (z.B) - z.C,z.D = intersection (C.Aa,C.BC) - C.AC = circle : new (z.A,z.C) - z.T,z.Tp = C.AC : common_tangent (C.BC) - L.TTp = line : new (z.T,z.Tp) - z.M = C.AC : point (0.45) - L.MC =line : new (z.M,z.C) - z.Mp = intersection (L.MC, C.BC) - L.mm = L.TTp : ll_from (z.C) - _,z.M = intersection (L.mm, C.AC) - z.Mp = intersection (L.mm, C.BC) + z.O = point : new (0,0) + z.A = point : new (2,2) + z.M = point : new (-1.5,0) + L.AM = line : new (z.A,z.M) + C.OA = circle : new (z.O,z.A) + z.Ap = C.OA : antipode (z.A) + _,z.B = intersection (L.AM, C.OA) + z.m = z.M : north(1) + L.mM = line : new (z.m,z.M) + z.U,z.V = intersection (L.mM,C.OA) \end{tkzelements} - \begin{tikzpicture} \tkzGetNodes - \tkzDrawCircles(A,C B,C) - \tkzDrawSegments(M,M' A,C B,C A,B) - \tkzDrawSegments[gray](D,M D,M' T,T') - \tkzDrawPoints(A,B,C,D,M,M',T,T') - \tkzLabelPoints(A,B,D,M) - \tkzLabelPoints[above](C,M',T,T') - \tkzMarkRightAngles(M',D,M A,C,B) + \tkzDrawCircle(O,A) + \tkzMarkRightAngle[fill=gray!10](A',B,M) + \tkzDrawSegments(M,O A,A' A',B A,B U,V) + \tkzDrawPoints(O,A,A',M,B,U,V,m) + \tkzLabelPoints(O,A,M,U,V,m) + \tkzLabelPoints[below left](A',B) + \tkzDrawSegments(M,A M,A') \end{tikzpicture} \end{Verbatim} - +\end{minipage} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% \begin{tkzelements} -z.A = point : new ( 0 , 0 ) -z.B = point : new ( 4 , 2 ) -L.AB = line : new ( z.A , z.B ) -z.a = point : new ( 1 , 2 ) -C.Aa = circle : new (z.A,z.a) -C.BC = C.Aa : orthogonal_from (z.B) -z.C,z.D = intersection (C.Aa,C.BC) -C.AC = circle : new (z.A,z.C) -z.T,z.Tp = C.AC : common_tangent (C.BC) -L.TTp = line : new (z.T,z.Tp) -z.M = C.AC : point (0.45) -L.MC =line : new (z.M,z.C) -z.Mp = intersection (L.MC, C.BC) -L.mm = L.TTp : ll_from (z.C) -_,z.M = intersection (L.mm, C.AC) -z.Mp = intersection (L.mm, C.BC) +scale = 1 +z.O = point : new (0,0) +z.A = point : new (2,2) +z.M = point : new (-1.5,0) +L.AM = line : new (z.A,z.M) +C.OA = circle : new (z.O,z.A) +z.Ap = C.OA : antipode (z.A) +_,z.B = intersection (L.AM, C.OA) +z.m = z.M : north(1) +L.mM = line : new (z.m,z.M) +z.U,z.V = intersection (L.mM,C.OA) \end{tkzelements} - \hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(A,C B,C) - \tkzDrawSegments(M,M' A,C B,C A,B) - \tkzDrawSegments[gray](D,M D,M' T,T') - \tkzDrawPoints(A,B,C,D,M,M',T,T') - \tkzLabelPoints(A,B,D,M) - \tkzLabelPoints[above](C,M',T,T') - \tkzMarkRightAngles(M',D,M A,C,B) -\end{tikzpicture} -\hspace*{\fill} -% subsection common_tangent_orthogonality (end) -\subsection{In\_out for circle and disk} % (fold) -\label{sub:in_out_for_circle_and_disk} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzMarkRightAngle[fill=gray!10](A',B,M) + \tkzDrawSegments(M,O A,A' A',B A,B U,V) + \tkzDrawPoints(O,A,A',M,B,U,V,m) + \tkzLabelPoints(O,A,M,U,V,m) + \tkzLabelPoints[below left](A',B) + \tkzDrawSegments(M,A M,A') + \end{tikzpicture} +\end{center} -\begin{Verbatim} -\begin{tkzelements} +\end{minipage} +% paragraph power_v2 (end) + +% subsubsection method_imeth_circle_power_c (end) + +\subsubsection{Method \Imeth{circle}{in\_out} for circle and disk} % (fold) +\label{ssub:in_out_for_circle_and_disk} + +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \begin{tkzelements} + z.O = point : new (0,0) + z.A = point : new (1,2) + C.OA = circle : new (z.O,z.A) + z.N = point : new (-2,2) + z.M = point : new (1,0) + z.P = point : new (2,1) + BCm = C.OA : in_out (z.M) + BDm = C.OA : in_out_disk (z.M) + BCn = C.OA : in_out (z.N) + BDn = C.OA : in_out_disk (z.N) + BCp = C.OA : in_out (z.P) + BDp = C.OA : in_out_disk (z.P) + \end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth}\begin{tkzelements} z.O = point : new (0,0) z.A = point : new (1,2) C.OA = circle : new (z.O,z.A) @@ -965,53 +1778,104 @@ BDp = C.OA : in_out_disk (z.P) \tkzLabelPoints(O,M,N,P) \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{ \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{% - \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}} + \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}} +} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSegments[dashed](O,M O,N O,P) + \tkzDrawCircle(O,A) + \tkzDrawPoints(O,M,N,P) + \tkzPosPoint{BCm}{M}{circle}{8} + \tkzPosPoint{BCn}{N}{circle}{8} + \tkzPosPoint{BCp}{P}{circle}{8} + \tkzPosPoint{BDm}{M}{disk}{14} + \tkzPosPoint{BDn}{N}{disk}{14} + \tkzPosPoint{BDp}{P}{disk}{14} + \end{tikzpicture} +\end{center} +\end{minipage} + +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \def\tkzPosPoint#1#2#3#4{% + \tkzLabelPoints(O,M,N,P) + \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{ + \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{% + \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}}} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSegments[dashed](O,M O,N O,P) + \tkzDrawCircle(O,A) + \tkzDrawPoints(O,M,N,P) + \tkzPosPoint{BCm}{M}{circle}{8} + \tkzPosPoint{BCn}{N}{circle}{8} + \tkzPosPoint{BCp}{P}{circle}{8} + \tkzPosPoint{BDm}{M}{disk}{14} + \tkzPosPoint{BDn}{N}{disk}{14} + \tkzPosPoint{BDp}{P}{disk}{14} + \end{tikzpicture} + \end{Verbatim} +\end{minipage} + +% subsubsection in_out_for_circle_and_disk (end) + +\subsubsection{Method \Imeth{circle}{circles\_position}} % (fold) +\label{ssub:circles_position} + +This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are: + +\begin{itemize} + \item \code{outside} + \item \code{outside tangent} + \item \code{inside tangent} + \item \code{inside} + \item \code{intersect} +\end{itemize} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new ( 0 , 0 ) + z.a = point : new ( 3 , 0 ) + z.B = point : new ( 2 , 0 ) + z.b = point : new ( 3 , 0 ) + C.Aa = circle: new (z.A,z.a) + C.Bb = circle: new (z.B,z.b) + position = C.Aa : circles_position (C.Bb) + if position == "inside tangent" + then color = "orange" + else color = "blue" end +\end{tkzelements} + \begin{tikzpicture} -\tkzGetNodes -\tkzDrawSegments[dashed](O,M O,N O,P) -\tkzDrawCircle(O,A) -\tkzDrawPoints(O,M,N,P) -\tkzPosPoint{BCm}{M}{circle}{8} -\tkzPosPoint{BCn}{N}{circle}{8} -\tkzPosPoint{BCp}{P}{circle}{8} -\tkzPosPoint{BDm}{M}{disk}{14} -\tkzPosPoint{BDn}{N}{disk}{14} -\tkzPosPoint{BDp}{P}{disk}{14} + \tkzGetNodes + \tkzDrawCircle(A,a) + \tkzDrawCircle[color=\tkzUseLua{color}](B,b) \end{tikzpicture} \end{Verbatim} - +\end{minipage} +\begin{minipage}{.5\textwidth} \begin{tkzelements} -z.O = point : new (0,0) -z.A = point : new (1,2) -C.OA = circle : new (z.O,z.A) -z.N = point : new (-2,2) -z.M = point : new (1,0) -z.P = point : new (2,1) -BCm = C.OA : in_out (z.M) -BDm = C.OA : in_out_disk (z.M) -BCn = C.OA : in_out (z.N) -BDn = C.OA : in_out_disk (z.N) -BCp = C.OA : in_out (z.P) -BDp = C.OA : in_out_disk (z.P) +z.A = point : new ( 1 , 0 ) +z.a = point : new ( 3 , 0 ) +z.B = point : new ( 2 , 0 ) +z.b = point : new ( 3 , 0 ) +C.Aa = circle: new (z.A,z.a) +C.Bb = circle: new (z.B,z.b) +position = C.Aa : circles_position (C.Bb) +if position == "inside tangent" then color = "orange" else color = "blue" end \end{tkzelements} -\def\tkzPosPoint#1#2#3#4{% -\tkzLabelPoints(O,M,N,P) - \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{ - \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on the #3}}{% - \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out the #3}} -} +\hspace{\fill} \begin{tikzpicture} \tkzGetNodes -\tkzDrawSegments[dashed](O,M O,N O,P) -\tkzDrawCircle(O,A) -\tkzDrawPoints(O,M,N,P) -\tkzPosPoint{BCm}{M}{circle}{8} -\tkzPosPoint{BCn}{N}{circle}{8} -\tkzPosPoint{BCp}{P}{circle}{8} -\tkzPosPoint{BDm}{M}{disk}{14} -\tkzPosPoint{BDn}{N}{disk}{14} -\tkzPosPoint{BDp}{P}{disk}{14} -\end{tikzpicture} -% subsection in_out_for_circle_and_disk (end) +\tkzDrawCircle(A,a) +\tkzDrawCircle[color=\tkzUseLua{color}](B,b) +\end{tikzpicture}\hspace{\fill} +\end{minipage} +% subsubsection circles__position (end) + +% subsection methods_of_the_class_circle (end) % section class_circle (end) + \endinput diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex index 3146f73461..016dd8025c 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex @@ -141,10 +141,10 @@ To do this, you'll need to use a macro: \tkzcname{tkzUseLua} defined in \pkg{tk \Imeth{ellipse}{foci (f1,f2,v)} & E = ellipse: foci ( focus 1, focus 2, vertex ) \\ \Imeth{ellipse}{radii (c,a,b,sl) } & E = ellipse: radii ( center, radius a, radius b, slope ) \\ \Imeth{ellipse}{in\_out (pt) } & pt in/out of the ellipse \\ -\Imeth{ellipse}{tangent\_at (pt) } & Refer to ex. \ref{ssub:method_point} \\ -\Imeth{ellipse}{tangent\_from (pt) } & Refer to ex. \ref{ssub:method_point} \\ -\Imeth{ellipse}{point (t) } & vertex = point (0) covertex = point (0.25) ex Refer to \ref{ssub:method_point} \\ -\Imeth{ellipse}{orthoptic\_circle () } & Refer to ex. \ref{ssub:steiner_inellipse_and_circumellipse} \\ +\Imeth{ellipse}{tangent\_at (pt) } & [ ex. \ref{ssub:method_point} ] \\ +\Imeth{ellipse}{tangent\_from (pt) } & [ex. \ref{ssub:method_point} ] \\ +\Imeth{ellipse}{point (t) } & vertex = point (0) covertex = point (0.25) [ex. \ref{ssub:method_point} ] \\ +\Imeth{ellipse}{orthoptic\_circle () } & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\ \bottomrule \end{tabular} @@ -153,7 +153,7 @@ To do this, you'll need to use a macro: \tkzcname{tkzUseLua} defined in \pkg{tk \subsubsection{Method \Imeth{ellipse}{new}} % (fold) \label{ssub:method_imeth_ellipse_new} The main method for creating a new ellipse is \Imeth{ellipse}{new}. The arguments are three: \Iattr{ellipse}{center}, \Iattr{ellipse}{vertex} and \Iattr{ellipse}{covertex} -For attributes Refer to \ref{sec:class_ellipse}. +For attributes [\ref{sec:class_ellipse}]. \begin{minipage}{0.5\textwidth} \begin{Verbatim} @@ -258,22 +258,25 @@ The first two points are the foci of the ellipse, and the third one is the verte a,b = E.Rx,E.Ry ang = math.deg(E.slope) \end{tkzelements} - \hspace*{\fill} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C) - \tkzDrawCircles[cyan](O,A N,I) - \tkzDrawSegments(X,R A,X) - \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) - \tkzDrawLines[add=.2 and .5](I,H) - \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I) - \tkzLabelPoints[above](C,X) - \tkzLabelPoints[above right](N,O) - \tkzLabelPoints[above left](R) - \tkzLabelPoints[left](A) - \tkzLabelPoints[right](B,I,S,H) - \end{tikzpicture} - \hspace*{\fill} + + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawCircles[cyan](O,A N,I) + \tkzDrawSegments(X,R A,X) + \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) + \tkzDrawLines[add=.2 and .5](I,H) + \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I) + \tkzLabelPoints[above](C,X) + \tkzLabelPoints[above right](N,O) + \tkzLabelPoints[above left](R) + \tkzLabelPoints[left](A) + \tkzLabelPoints[right](B,I,S,H) + \end{tikzpicture} + \end{center} + + \end{minipage} \begin{Verbatim} diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex index 435ad9bcc6..f4acdafc8c 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex @@ -26,22 +26,53 @@ The attributes are : \Iattr{line}{pb} & Second point of the segment & \\ \Iattr{line}{type} & Type is 'line' & |L.AB.type = 'line'| \\ \Iattr{line}{mid} & Middle of the segment& |z.M = L.AB.mid|\\ -\Iattr{line}{slope} & Slope of the line & Refer to (\ref{ssub:example_class_line})\\ -\Iattr{line}{length} &|l = L.AB.length|&Refer to (\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line})\\ -\Iattr{line}{north\_pa} & &Refer to (\ref{ssub:example_class_line}) \\ +\Iattr{line}{slope} & Slope of the line & [\ref{ssub:example_class_line}] \\ +\Iattr{line}{length} &|l = L.AB.length|& [\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line}] \\ +\Iattr{line}{north\_pa} & & [\ref{ssub:example_class_line}] \\ \Iattr{line}{north\_pb} & &\\ \Iattr{line}{south\_pa} & &\\ -\Iattr{line}{south\_pb} & &Refer to (\ref{ssub:example_class_line}) \\ +\Iattr{line}{south\_pb} & & [\ref{ssub:example_class_line}] \\ \Iattr{line}{east} & &\\ \Iattr{line}{west} & &\\ -\Iattr{line}{vec} & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ Refer to (\ref{sec:class_vector})\\ +\Iattr{line}{vec} & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ [\ref{sec:class_vector}] \\ \bottomrule \end{tabular} \egroup \subsubsection{Example: attributes of class line} % (fold) \label{ssub:example_class_line} -\begin{minipage}{.5\textwidth} + +\vspace{5pt} +\begin{tkzelements} +z.a = point: new (1, 1) +z.b = point: new (5, 4) +L.ab = line : new (z.a,z.b) +z.m = L.ab.mid +z.w = L.ab.west +z.e = L.ab.east +z.r = L.ab.north_pa +z.s = L.ab.south_pb +sl = L.ab.slope +len = L.ab.length +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(a,b,m,e,r,s,w) + \tkzLabelPoints(a,b) + \tkzLabelPoint(r){north\_pa} + \tkzLabelPoint(s){south\_pb} + \tkzLabelPoint[below](m){mid} + \tkzLabelPoint[right](w){west} + \tkzLabelPoint[left](e){east} + \tkzDrawLine(a,b) + \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}} + \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) = \pmpn{\tkzUseLua{sl}}} + \end{tikzpicture} +\end{center} + + \begin{Verbatim} \begin{tkzelements} scale = .5 @@ -67,35 +98,8 @@ The attributes are : \tkzLabelSegment[above=12pt,sloped](a,b){slope of (ab) = \tkzUseLua{sl}} \end{tikzpicture} \end{Verbatim} -\end{minipage} -\begin{minipage}{.5\textwidth}\begin{tkzelements} -scale = .5 -z.a = point: new (1, 1) -z.b = point: new (5, 4) -L.ab = line : new (z.a,z.b) -z.m = L.ab.mid -z.w = L.ab.west -z.e = L.ab.east -z.r = L.ab.north_pa -z.s = L.ab.south_pb -sl = L.ab.slope -len = L.ab.length -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPoints(a,b,m,e,r,s,w) - \tkzLabelPoints(a,b) - \tkzLabelPoint(r){north\_pa} - \tkzLabelPoint(s){south\_pb} - \tkzLabelPoint[below](m){mid} - \tkzLabelPoint[right](w){west} - \tkzLabelPoint[left](e){east} - \tkzDrawLine(a,b) - \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}} - \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) = \pmpn{\tkzUseLua{sl}}} -\end{tikzpicture} -\end{minipage} + + % subsubsection example_class_line (end) \subsubsection{Method \Imeth{line}{new} and line attributes} @@ -161,62 +165,54 @@ Here's the list of methods for the \tkzNameObj{line} object. The results can be \toprule \textbf{Methods} & \textbf{Comments} & \\ \midrule -\Igfct{line}{new(pt, pt)} & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ; Refer to (\ref{ssub:altshiller})\\ +\Igfct{line}{new(pt, pt)} & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ; [\ref{sub:altshiller}] \\ \midrule \textbf{Points} &&\\ \midrule -\Imeth{line}{gold\_ratio ()} & |z.C=L.AB : gold_ratio()| & Refer to (\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle}) \\ -\Imeth{line}{normalize ()} & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$ Refer to (\ref{ssub:normalize}) \\ +\Imeth{line}{gold\_ratio ()} & |z.C=L.AB : gold_ratio()| & [\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle} ] \\ +\Imeth{line}{normalize ()} & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$ [ \ref{ssub:normalize}] \\ \Imeth{line}{normalize\_inv ()} & |z.C=L.AB : normalize_inv()| & CB=1 and $C\in (AB)$ \\ -\Imeth{line}{barycenter (r,r)} & |z.C=L.AB : barycenter (1,2)| & Refer to (\ref{ssub:barycenter_with_a_line})\\ -\Imeth{line}{point (r)} & |z.C=L.AB : point (2)| & $\overrightarrow{AC} = 2\overrightarrow{AB}$ Refer to (\ref{sub:ellipse} ; \ref{ssub:method_point})\\ +\Imeth{line}{barycenter (r,r)} & |z.C=L.AB : barycenter (1,2)| & [\ref{ssub:barycenter_with_a_line}] \\ +\Imeth{line}{point (r)} & |z.C=L.AB : point (2)| & $\overrightarrow{AC} = 2\overrightarrow{AB}$ [\ref{sub:ellipse} ; \ref{ssub:method_point}] \\ \Imeth{line}{midpoint ()} & |z.M=L.AB : midpoint ()| & better is |z.M = L.AB.mid| \\ -\Imeth{line}{harmonic\_int (pt)} & |z.D=L.AB : harmonic_int (z.C)| & Refer to (\ref{sub:bankoff_circle})\\ -\Imeth{line}{harmonic\_ext (pt)} & |z.D=L.AB : harmonic_ext (z.C)| & Refer to (\ref{sub:bankoff_circle})\\ -\Imeth{line}{harmonic\_both (r)} & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & \ref{sub:harmonic_division_with_tkzphi}\\ +\Imeth{line}{harmonic\_int (pt)} & |z.D=L.AB : harmonic_int (z.C)| & [ \ref{sub:bankoff_circle}] \\ +\Imeth{line}{harmonic\_ext (pt)} & |z.D=L.AB : harmonic_ext (z.C)| & [ \ref{sub:bankoff_circle}] \\ +\Imeth{line}{harmonic\_both (r)} & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & [\ref{sub:harmonic_division_with_tkzphi}] \\ \Imeth{line}{\_east(d)} & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned \\ \Imeth{line}{\_west(d)} & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned \\ -\Imeth{line}{\_north\_pa(d)} &|z.M=L.AB: _north_pa(2)| &|AM=2| $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\ -\Imeth{line}{\_south\_pa(d)} &|z.M=L.AB:_south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise \\ -\Imeth{line}{\_north\_pb(d)} &|z.M=L.AB:_north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise \\ -\Imeth{line}{\_south\_pb(d)} &|z.M=L.AB:_south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\ -\Imeth{line}{report(d,pt)} &|z.M=L.AB:report(2,z.N)| &|MN=2|; $AB\parallel MN$ ; Refer to ex. (\ref{ssub:method_report})\\ -\Imeth{line}{colinear\_at(pt,k)} &|z.D=L.AB:colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ; Refer to ex. (\ref{ssub:method_imeth_line_colinear__at})\\ +\Imeth{line}{\_north\_pa(d)} &|z.M=L.AB: _north_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise. \\ +...&& [\ref{ssub:new_line_from_a_defined_line}; \ref{ssub:attributes_of_an_ellipse}]\\ +\Imeth{line}{\_south\_pa(d)} &|z.M=L.AB: _south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise \\ +\Imeth{line}{\_north\_pb(d)} &|z.M=L.AB: _north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise \\ +\Imeth{line}{\_south\_pb(d)} &|z.M=L.AB: _south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise \\ +\Imeth{line}{report(d,pt)} &|z.M=L.AB: report(2,z.N)| &|MN=2|; $AB\parallel MN$ ; [ex. \ref{ssub:method_report}]\\ +\Imeth{line}{colinear\_at(pt,k)} &|z.D=L.AB: colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ; [ex. \ref{ssub:method_imeth_line_colinear__at}]\\ \midrule \textbf{Lines} &&\\ \midrule -\Imeth{line}{ll\_from ( pt )} &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$ \\ -\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$\\ -\Imeth{line}{mediator ()}&|L.uv=L.AB: mediator()| & $(u,v)$mediator of $(A,B)$\\ +\Imeth{line}{ll\_from ( pt )} &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$; [\ref{ssub:new_line_from_a_defined_line}] \\ +\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$; [\ref{ssub:newline_ortho_from}] \\ + \Imeth{line}{mediator ()} & |L.uv=L.AB: mediator()| & perpendicular bisector of $(A,B)$ \footnote{You can use |perpendicular_bisector| intead of \tkzname{mediator}.}; [\ref{ssub:method_imeth_line_mediator}]\\ \midrule \textbf{Triangles}&&\\ \midrule -\Imeth{line}{equilateral (<swap>)} & |T.ABC=L.AB:equilateral()| & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.} \\ -\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|&\\ -\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|¬e \footnote{The given side is between the two angles} Refer to (\ref{ssub:triangle_with_two__angles}) \\ +\Imeth{line}{equilateral (<swap>)} & |T.ABC=L.AB:equilateral()| & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.}; [\ref{ssub:object_rotation}] \\ +\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|& [\ref{ssub:method_imeth_line_isosceles}]\\ +\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|¬e \footnote{The given side is between the two angles} [\ref{ssub:triangle_with_two__angles}] \\ \Imeth{line}{school ()} & 30°,60°, 90° & \\ -\Imeth{line}{sss (r,r)} & $AC=r$ $BC=r$ & \\ -\Imeth{line}{as (r,an)} & $AC =r$ $\widehat{BAC} = an$& \\ -\Imeth{line}{sa (r,an)} & $AC =r$ $\widehat{ABC} = an$& \\ -\midrule -\textbf{Sacred triangles}&&\\ -\midrule -\Imeth{line}{gold (<swap>)} &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $ \\ -\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$ \\ -\Imeth{line}{golden (<swap>)} &|T.ABC=L.AB:golden()| & - $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$ \\ -\Imeth{line}{divine ()} & & \\ -\Imeth{line}{egyptian ()} & & \\ -\Imeth{line}{cheops ()} & & \\ +\Imeth{line}{sss (r,r)} & $AC=r$ $BC=r$ & [\ref{ssub:triangle_with_three_given_sides}] \\ +\Imeth{line}{sas (r,an)} & $AC =r$ $\widehat{BAC} = an$ & [\ref{ssub:triangle_with_three_given_sides}] \\ +\Imeth{line}{ssa (r,an)} & $AC =r$ $\widehat{ABC} = an$& [\ref{ssub:triangle_with_three_given_sides}]\\ \midrule \textbf{Squares}&&\\ \midrule -\Imeth{line}{square ()} &|S.AB=L.AB : square () | & create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}\\ +\Imeth{line}{square ()} &|S.AB=L.AB : square () | & create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}; [\ref{ssub:object_rotation}] \\ \bottomrule \end{tabular} \egroup \end{minipage} + \begin{minipage}{\textwidth} \bgroup \catcode`_=12 @@ -226,23 +222,33 @@ Here's the list of methods for the \tkzNameObj{line} object. The results can be \toprule \textbf{Methods} & \textbf{Comments} & \\ \midrule +\textbf{Sacred triangles}&&\\ +\midrule +\Imeth{line}{gold (<swap>)} &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $; [\ref{line:met}] \\ +\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$; [\ref{line:met}] \\ +\Imeth{line}{golden (<swap>)} &|T.ABC=L.AB:golden()| & + $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$ ; [\ref{line:met}] \\ +\Imeth{line}{divine ()} & & [\ref{line:met}] \\ +\Imeth{line}{egyptian ()} & & [\ref{line:met}] \\ +\Imeth{line}{cheops ()} & & [\ref{line:met}] \\ +\midrule \textbf{Circles} &&\\ \midrule \Imeth{line}{circle ()} & |C.AB = L.AB : circle ()| & center pa through pb \\ -\Imeth{line}{circle\_swap ()} & |C.BA = L.AB : circle_swap ()|& center pb through pa \\ -\Imeth{line}{apollonius (r)} & |C.apo = L.AB : apollonius (2)|& Set of points tq. |MA/MB = 2| \\ +\Imeth{line}{apollonius (r)} & |C.apo = L.AB : apollonius (2)|& Set of points tq. |MA/MB = 2|; [\ref{ssub:apollonius_circle_ma_mb_k}] \\ \midrule \textbf{Transformations} &&\\ \midrule -\Imeth{line}{reflection ( obj )} & |new obj = L.AB : reflection (obj|&\\ -\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|&\\ -\Imeth{line}{projection ( obj )} & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$\\ +\Imeth{line}{reflection ( obj )} & |new obj = L.AB : reflection (obj|& [\ref{ssub:reflection_of_object}] \\ +\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|& [\ref{ssub:example_translation}] \\ +\Imeth{line}{projection ( obj )} & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$; [\ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\ +... & & [ \ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\ \midrule \textbf{Miscellaneous} &&\\ \midrule -\Imeth{line}{distance (pt)} & |d = L.Ab : distance (z.C)| & Refer to \ref{ssub:example_distance_and_projection}\\ -\Imeth{line}{in\_out (pt)} & |b = L.AB: in_out(z.C)| & b=true if $C\in (AB)$ \\ -\Imeth{line}{slope ()} & |a = L.AB : slope()| & better is L.AB.slope \\ +\Imeth{line}{distance (pt)} & |d = L.Ab : distance (z.C)| & [\ref{ssub:example_distance_and_projection}] \\ +\Imeth{line}{in\_out (pt)} & |b = L.AB: in_out(z.C)| & b=true if $C\in (AB)$ ; [\ref{ssub:in_out_for_a_line}] \\ +\Imeth{line}{slope ()} & |a = L.AB : slope()| & better is L.AB.slope; [\ref{ssub:example_class_line}]\\ \Imeth{line}{in\_out\_segment (pt)} & |b = L.AB : in_out_segment(z.C)| & b=true if $C\in [AB$] \\ \bottomrule \end{tabular} @@ -309,7 +315,11 @@ The angles are on either side of the given segment \tkzDrawPolygons(A,B,C) \tkzDrawPoints(A,B,C) \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) + \tkzLabelPoints[above](C) + \tkzMarkAngle[red](C,B,A) + \tkzMarkAngle[red](B,A,C) + \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$} + \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$} \end{tikzpicture} \end{Verbatim} \end{minipage} @@ -321,57 +331,130 @@ The angles are on either side of the given segment T.ABC= L.AB : two_angles (math.pi/6,math.pi/2) z.C = T.ABC.pc \end{tkzelements} - \hspace*{\fill} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygons(A,B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) - \end{tikzpicture} - \hspace*{\fill} + + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) + \tkzMarkAngle[red](C,B,A) + \tkzMarkAngle[red](B,A,C) + \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$} + \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$} + \end{tikzpicture} + \end{center} + \end{minipage} % subsubsection triangle_with_two__angles (end) -\subsubsection{Method \Imeth{line}{sss}} % (fold) +\subsubsection{Method \Imeth{line}{isosceles}} % (fold) +\label{ssub:method_imeth_line_isosceles} +\begin{minipage}{.5\textwidth} + \begin{Verbatim} +\begin{tkzelements} + scale = 2 + z.a = point : new (1,2) + z.b = point : new (5,1) + L.ab = line : new (z.a,z.b) + T.abc = L.ab : isosceles (math.pi/6,indirect) + z.c = T.abc.pc + z.L = T.abc : lemoine_point () + T.SY = T.abc : symmedian () + z.Ka,z.Kb,z.Kc = get_points (T.SY) + L.Kb = T.abc : symmedian_line (1) + _,z.Kb = get_points(L.Kb) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawPolygons(a,b,c Ka,Kb,Kc) +\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc) +\tkzLabelPoints(c,L,Ka,Kb) +\tkzLabelPoints[above](a,b,Kc) +\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = 2 + z.a = point : new (1,2) + z.b = point : new (5,1) + L.ab = line : new (z.a,z.b) + T.abc = L.ab : isosceles (math.pi/6,indirect) + z.c = T.abc.pc + z.L = T.abc : lemoine_point () + T.SY = T.abc : symmedian () + z.Ka,z.Kb, + z.Kc = get_points (T.SY) + L.Kb = T.abc : symmedian_line (1) + _,z.Kb = get_points(L.Kb) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawPolygons(a,b,c Ka,Kb,Kc) +\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc) +\tkzLabelPoints(c,L,Ka,Kb) +\tkzLabelPoints[above](a,b,Kc) +\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc) +\end{tikzpicture} +\end{minipage} + +% subsubsection method_imeth_line_isosceles (end) + +\subsubsection{Methods \Imeth{line}{sss}, \Imeth{line}{sas}, \Imeth{line}{ssa}} % (fold) \label{ssub:triangle_with_three_given_sides} In the following example, a small difficulty arises. The given lengths are not affected by scaling, so it's necessary to use the \Igfct{math}{value (r) } function, which will modify the lengths according to the scale. +\vspace{6pt} \begin{minipage}{.4\textwidth} \begin{Verbatim} \begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 5 , 0 ) - L.AB = line : new ( z.A , z.B ) - T.ABC = L.AB : sss (value(3),value(4)) - z.C = T.ABC.pc + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 5 , 0 ) + L.AB = line : new ( z.A , z.B ) + T.ABC = L.AB : sss (value(3),value(4)) + T.ABD = L.AB : sas (value(3),math.pi/2) + T.ABE = L.AB : ssa (value(7),math.pi/2) + z.C = T.ABC.pc + z.D = T.ABD.pc + z.E = T.ABE.pc \end{tkzelements} +\hspace{\fill} \begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawPolygons(A,B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) + \tkzGetNodes + \tkzDrawPolygons(A,B,C A,B,D A,B,E) + \tkzDrawPoints(A,B,C,D,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) \end{tikzpicture} \end{Verbatim} \end{minipage} \begin{minipage}{.6\textwidth} - \begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 5 , 0 ) - L.AB = line : new ( z.A , z.B ) - T.ABC = L.AB : sss (value(3),value(4)) - z.C = T.ABC.pc - \end{tkzelements} -\hspace{\fill} - \begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawPolygons(A,B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) - \end{tikzpicture} +\begin{tkzelements} + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 5 , 0 ) + L.AB = line : new ( z.A , z.B ) + T.ABC = L.AB : sss (value(3),value(4)) + T.ABD = L.AB : sas (value(3),math.pi/2) + T.ABE = L.AB : ssa (value(7),math.pi/2) + z.C = T.ABC.pc + z.D = T.ABD.pc + z.E = T.ABE.pc +\end{tkzelements} + +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawPolygons(A,B,C A,B,D A,B,E) + \tkzDrawPoints(A,B,C,D,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection triangle_with_three_given_sides (end) @@ -413,16 +496,20 @@ In some cases, two solutions are possible. z.C = T.ABC.pc z.D = T.ABD.pc \end{tkzelements} - \hspace{\fill} \begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawPolygons(A,B,C A,B,D) - \tkzDrawPoints(A,B,C,D) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C,D) - \tkzLabelAngle[teal](C,B,A){$\pi/6$} - \tkzLabelSegment[below left](A,C){$7$} - \tkzLabelSegment[below left](A,D){$7$} - \end{tikzpicture} + +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawPolygons(A,B,C A,B,D) + \tkzDrawPoints(A,B,C,D) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D) + \tkzLabelAngle[teal](C,B,A){$\pi/6$} + \tkzLabelSegment[below left](A,C){$7$} + \tkzLabelSegment[below left](A,D){$7$} + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection triangle_with_side_between_side_and_angle (end) @@ -536,12 +623,15 @@ This method exists for all objects except quadrilaterals. z.J = L.AB : point (-0.5) z.K = L.AB : point (2) \end{tkzelements} -\begin{tikzpicture}[gridded] -\tkzGetNodes - \tkzDrawLine(J,K) - \tkzDrawPoints(A,B,I,J,K) - \tkzLabelPoints(A,B,I,J,K) - \end{tikzpicture} +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawLine(J,K) + \tkzDrawPoints(A,B,I,J,K) + \tkzLabelPoints(A,B,I,J,K) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection method_point (end) @@ -576,12 +666,15 @@ If the coefficient is missing then it defaults to $1$ and in the following examp z.D = L.AB : colinear_at (z.C,.5) z.E = L.AB : colinear_at (z.C) \end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawSegments(A,B C,E) - \tkzDrawPoints(A,B,C,D,E) - \tkzLabelPoints(A,B,C,D,E) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSegments(A,B C,E) + \tkzDrawPoints(A,B,C,D,E) + \tkzLabelPoints(A,B,C,D,E) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection method_imeth_line_colinear__at (end) @@ -615,15 +708,17 @@ If the coefficient is missing then it defaults to $1$ and in the following examp L.ab = line : new (z.a,z.b) z.c = L.ab : normalize () \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[gridded] -\tkzGetNodes -\tkzDrawSegments(a,b) -\tkzDrawCircle(a,c) -\tkzDrawPoints(a,b,c) -\tkzLabelPoints(a,b,c) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawSegments(a,b) + \tkzDrawCircle(a,c) + \tkzDrawPoints(a,b,c) + \tkzLabelPoints(a,b,c) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection normalize (end) @@ -654,16 +749,19 @@ If the coefficient is missing then it defaults to $1$ and in the following examp L.AB = line : new ( z.A , z.B ) z.G = L.AB : barycenter (1,2) \end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawLine(A,B) - \tkzDrawPoints(A,B,G) - \tkzLabelPoints(A,B,G) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLine(A,B) + \tkzDrawPoints(A,B,G) + \tkzLabelPoints(A,B,G) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection barycenter_with_a_line (end) -\subsubsection{method \Imeth{line}{ll\_from}} % (fold) +\subsubsection{Method \Imeth{line}{ll\_from}} % (fold) \label{ssub:new_line_from_a_defined_line} \begin{minipage}{0.5\textwidth} \begin{Verbatim} @@ -700,20 +798,162 @@ L.CD = line : new (z.C,z.D) _,z.E = get_points ( L.CD: ll_from (z.B)) -- or z.E = L2.pb with |L2 = L.CD: ll_from (z.B)| \end{tkzelements} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B C,D B,E) + \tkzDrawPoints(A,...,E) + \tkzLabelPoints(A,...,E) + \tkzMarkRightAngle(B,A,C) + \tkzMarkSegments(A,C A,B A,D) + \end{tikzpicture} +\end{center} + + +\end{minipage} + % \caption{New line from defined line} +% subsubsection new_line_from_a_defined_line (end) + +\subsubsection{Method \Imeth{line}{ortho\_from}} % (fold) +\label{ssub:newline_ortho_from} +\begin{minipage}{0.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new (1,1) + z.B = point : new (3,2) + L.AB = line : new (z.A,z.B) + z.C = point : new (1,3) + L.CD = L.AB : ortho_from(z.C) + z.D = L.CD.pb +\end{tkzelements} \begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines(A,B C,D B,E) -\tkzDrawPoints(A,...,E) -\tkzLabelPoints(A,...,E) -\tkzMarkRightAngle(B,A,C) -\tkzMarkSegments(A,C A,B A,D) + \tkzGetNodes + \tkzDrawLines(A,B C,D) + \tkzDrawPoints(A,...,D) + \tkzLabelPoints(A,...,D) \end{tikzpicture} -\hspace*{\fill} +\end{Verbatim} \end{minipage} - % \caption{New line from defined line} +\begin{minipage}{0.5\textwidth} +\begin{tkzelements} + z.A = point : new (1,1) + z.B = point : new (3,2) + L.AB = line : new (z.A,z.B) + z.C = point : new (1,3) + L.CD = L.AB : ortho_from(z.C) + z.D = L.CD.pb +\end{tkzelements} + +\begin{center} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B C,D) + \tkzDrawPoints(A,...,D) + \tkzLabelPoints(A,...,D) +\end{tikzpicture} +\end{center} + + +\end{minipage} + % subsubsection new_line_from_a_defined_line (end) +\subsubsection{Method \Imeth{line}{mediator}} % (fold) +\label{ssub:method_imeth_line_mediator} + +In Mathworld, the mediator is the plane through the midpoint of a line segment and perpendicular to that segment, also called a mediating plane. The term "mediator" was introduced by J. Neuberg (Altshiller-Court 1979, p. 298). Here, I have adopted the French term and the mediator or +the perpendicular bisector of a line segment, is a line segment perpendicular to the segment and passing through the midpoint of this segment. +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new(0,0) + z.B = point: new(5,0) + L.AB = line: new (z.A,z.B) + L.med = L.AB : mediator () + z.M = L.AB.mid + z.x,z.y= get_points(L.med) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawLine(A,B) +\tkzDrawSegments(x,y) +\tkzDrawPoints(A,B,M) +\tkzLabelPoints(A,B) +\tkzLabelPoints[below left](x,y,M) +\tkzMarkSegments(A,M M,B) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point: new(0,0) + z.B = point: new(5,0) + L.AB = line: new (z.A,z.B) + L.med = L.AB : mediator () + z.M = L.AB.mid + z.x,z.y= get_points(L.med) +\end{tkzelements} +\begin{center} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawLine(A,B) +\tkzDrawSegments(x,y) +\tkzDrawPoints(A,B,M) +\tkzLabelPoints(A,B) +\tkzLabelPoints[below left](x,y,M) +\tkzMarkSegments(A,M M,B) +\end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_line_mediator (end) + +\subsubsection{Method \Imeth{line}{equilateral}} % (fold) +\label{ssub:method_imeth_line_equilateral} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new(0,0) + z.B = point: new(5,0) + L.AB = line: new (z.A,z.B) + T.ABC = L.AB : equilateral () + z.C = T.ABC.pc +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawLine(A,B) +\tkzDrawPolygon(A,B,C) +\tkzMarkSegments(A,B B,C C,A) +\tkzDrawPoints(A,B,C) +\tkzMarkAngles(B,A,C C,B,A A,C,B) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point: new(0,0) + z.B = point: new(5,0) + L.AB = line: new (z.A,z.B) + T.ABC = L.AB : equilateral () + z.C = T.ABC.pc +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLine(A,B) + \tkzDrawPolygon(A,B,C) + \tkzMarkSegments(A,B B,C C,A) + \tkzDrawPoints(A,B,C) + \tkzMarkAngles(B,A,C C,B,A A,C,B) + \end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_line_equilateral (end) \subsubsection{Method \Imeth{line}{projection}} % (fold) \label{ssub:example_projection_of_several_points} @@ -746,14 +986,16 @@ z.d = point: new (5, 2) L.ab = line: new (z.a,z.b) z.cp,z.dp = L.ab : projection(z.c,z.d) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines(a,b c,c' d,d') -\tkzDrawPoints(a,...,d,c',d') -\tkzLabelPoints(a,...,d,c',d') -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(a,b c,c' d,d') + \tkzDrawPoints(a,...,d,c',d') + \tkzLabelPoints(a,...,d,c',d') + \end{tikzpicture} +\end{center} + \end{minipage} % \caption{Projection of several points} @@ -809,23 +1051,26 @@ L.ab = C.OA : tangent_at (z.A) z.a,z.b = L.ab.pa,L.ab.pb -- or z.a,z.b = get_points (L.ab) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawCircle(O,A) -\tkzDrawSegments[purple](O,A O,B O,H) -\tkzDrawArc[red](O,A)(B) -\tkzDrawArc[blue](O,B)(A) -\tkzDrawLine[add = 2 and 1](A,a) -\tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H) -\tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B) -\tkzDrawPoints(A,B,C,H,O) -\tkzLabelPoints(B,H) -\tkzLabelPoints[above](O,C) -\tkzLabelPoints[left](A) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawCircle(O,A) + \tkzDrawSegments[purple](O,A O,B O,H) + \tkzDrawArc[red](O,A)(B) + \tkzDrawArc[blue](O,B)(A) + \tkzDrawLine[add = 2 and 1](A,a) + \tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H) + \tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B) + \tkzDrawPoints(A,B,C,H,O) + \tkzLabelPoints(B,H) + \tkzLabelPoints[above](O,C) + \tkzLabelPoints[left](A) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsubsection example_combination_of_methods (end) @@ -860,63 +1105,21 @@ z.a,z.b = L.ab.pa,L.ab.pb L.AB = line : new (z.A,z.B) z.E,z.F = L.AB : translation (z.C,z.D) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPoints(A,...,F) -\tkzLabelPoints(A,...,F) -\tkzDrawSegments[->,red,> =latex](C,E D,F A,B) ) -\end{tikzpicture} -\hspace*{\fill} -\end{minipage} -% subsubsection example_translation (end) +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,...,F) + \tkzLabelPoints(A,...,F) + \tkzDrawSegments[->,red,> =latex](C,E D,F A,B) ) + \end{tikzpicture} +\end{center} -\subsubsection{Method \Imeth{line}{distance}} % (fold) -\label{ssub:example_distance_and_projection} -\begin{minipage}{0.5\textwidth} -\begin{Verbatim} -\begin{tkzelements} - z.A = point : new (0 , 0) - z.B = point : new (5 , -2) - z.C = point : new (3 , 3) - L.AB = line : new (z.A,z.B) - d = L.AB : distance (z.C) - z.H = L.AB : projection (z.C) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawLines(A,B C,H) - \tkzDrawPoints(A,B,C,H) - \tkzLabelPoints(A,B,C,H) - \tkzLabelSegment[above left, - draw](C,H){$CH = \tkzUseLua{d}$} -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}{0.5\textwidth} -\begin{tkzelements} - z.A = point : new (0 , 0) - z.B = point : new (5 , -2) - z.C = point : new (3 , 3) - L.AB = line : new (z.A,z.B) - d = L.AB : distance (z.C) - z.H = L.AB : projection (z.C) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines(A,B C,H) -\tkzDrawPoints(A,B,C,H) -\tkzLabelPoints(A,B,C,H) -\tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$} -\end{tikzpicture} -\hspace*{\fill} \end{minipage} -% \caption{Method distance with line object} -% subsubsection example_distance_and_projection (end) +% subsubsection example_translation (end) + \subsubsection{Method \Imeth{line}{reflection} of an object} % (fold) \label{ssub:reflection_of_object} @@ -955,19 +1158,72 @@ z.a,z.b = L.ab.pa,L.ab.pb T.new = L.AB : reflection (T.EFG) z.Ep,z.Fp,z.Gp = get_points(T.new) \end{tkzelements} -\hspace{\fill}\begin{tikzpicture} - \tkzGetNodes - \tkzDrawLine(A,B) - \tkzDrawPolygon(E,F,G) - \tkzDrawPolygon[new](E',F',G') - \tkzDrawSegment[red,dashed](E,E') -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLine(A,B) + \tkzDrawPolygon(E,F,G) + \tkzDrawPolygon[new](E',F',G') + \tkzDrawSegment[red,dashed](E,E') + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection reflection_of_object (end) +\subsubsection{Method \Imeth{line}{distance}} % (fold) +\label{ssub:example_distance_and_projection} + +\begin{minipage}{0.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new (0 , 0) + z.B = point : new (5 , -2) + z.C = point : new (3 , 3) + L.AB = line : new (z.A,z.B) + d = L.AB : distance (z.C) + z.H = L.AB : projection (z.C) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B C,H) + \tkzDrawPoints(A,B,C,H) + \tkzLabelPoints(A,B,C,H) + \tkzLabelSegment[above left, + draw](C,H){$CH = \tkzUseLua{d}$} +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{0.5\textwidth} +\begin{tkzelements} + z.A = point : new (0 , 0) + z.B = point : new (5 , -2) + z.C = point : new (3 , 3) + L.AB = line : new (z.A,z.B) + d = L.AB : distance (z.C) + z.H = L.AB : projection (z.C) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B C,H) + \tkzDrawPoints(A,B,C,H) + \tkzLabelPoints(A,B,C,H) + \tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$} + \end{tikzpicture} +\end{center} -\subsection{Method \Imeth{line}{apollonius} Apollonius circle MA/MB = k} % (fold) -\label{sub:apollonius_circle_ma_mb_k} + +\end{minipage} + +% \caption{Method distance with line object} +% subsubsection example_distance_and_projection (end) + + +\subsubsection{Method \Imeth{line}{apollonius} (Apollonius circle MA/MB = k)} % (fold) +\label{ssub:apollonius_circle_ma_mb_k} \begin{Verbatim} \begin{tkzelements} @@ -984,14 +1240,15 @@ z.a,z.b = L.ab.pa,L.ab.pb \tkzFillCircle[blue!20,opacity=.2](O,C) \tkzDrawCircle[blue!50!black](O,C) \tkzDrawPoints(A,B,O,C,D,P) - \tkzLabelPoints[below right](A,B,O,C,D,P) \tkzDrawSegments[orange](P,A P,B P,D B,D P,C) \tkzDrawSegments[red](A,C) \tkzDrawPoints(A,B) \tkzLabelCircle[draw,fill=green!10,% text width=3cm,text centered,left=24pt](O,D)(60)% {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$} - \tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C) + \tkzLabelPoints[below right](A,B,O,C,D) + \tkzLabelPoints[above](P) + \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C) \tkzMarkAngles[mark=||](A,P,D D,P,B) \end{tikzpicture} \end{Verbatim} @@ -1006,24 +1263,28 @@ z.D = C.apo : antipode (z.C) z.P = C.apo : point (0.30) \end{tkzelements} -\begin{tikzpicture} -\tkzGetNodes -\tkzFillCircle[blue!20,opacity=.2](O,C) -\tkzDrawCircle[blue!50!black](O,C) -\tkzDrawPoints(A,B,O,C,D,P) -\tkzLabelPoints[below right](A,B,O,C,D,P) -\tkzDrawSegments[orange](P,A P,B P,D B,D P,C) -\tkzDrawSegments[red](A,C) -\tkzDrawPoints(A,B) -\tkzLabelCircle[draw,fill=green!10,% - text width=3cm,text centered,left=24pt](O,D)(60)% - {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$} -\tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C) -\tkzMarkAngles[mark=||](A,P,D D,P,B) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzFillCircle[blue!20,opacity=.2](O,C) + \tkzDrawCircle[blue!50!black](O,C) + \tkzDrawPoints(A,B,O,C,D,P) + \tkzDrawSegments[orange](P,A P,B P,D B,D P,C) + \tkzDrawSegments[red](A,C) + \tkzDrawPoints(A,B) + \tkzLabelCircle[draw,fill=green!10,% + text width=3cm,text centered,left=24pt](O,D)(60)% + {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$} + \tkzLabelPoints[below right](A,B,O,C,D) + \tkzLabelPoints[above](P) + \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C) + \tkzMarkAngles[mark=||](A,P,D D,P,B) + \end{tikzpicture} +\end{center} + Remark: |\tkzUseLua{length(z.P,z.A)/length(z.P,z.B)}| = \tkzUseLua{length(z.P,z.A)/length(z.P,z.B)} -% subsection apollonius_circle_ma_mb_k (end) +% subsubsection apollonius_circle_ma_mb_k (end) % subsection methods_from_class_line (end) diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex index 04b874532d..d533511fbe 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-matrices.tex @@ -15,7 +15,7 @@ This \code{matrix} class has been created to avoid the need for an external libr \begin{itemize} -\item The first method is: (Refer to \ref{ssub:method_new}) +\item The first method is: [\ref{ssub:method_new}] \begin{minipage}{.5\textwidth} \begin{mybox} @@ -33,13 +33,13 @@ This \code{matrix} class has been created to avoid the need for an external libr \end{minipage} -\item It is also possible to obtain a square matrix with: (Refer to \ref{ssub:method_square}) +\item It is also possible to obtain a square matrix with: [\ref{ssub:method_square}] \begin{mybox} |M = matrix : square (2,a,b,c,d)| \end{mybox} -\item In the case of a column vector: (Refer to \ref{ssub:method_vector}) +\item In the case of a column vector: [\ref{ssub:method_vector}] \begin{minipage}{.5\textwidth} \begin{mybox} @@ -52,7 +52,7 @@ This \code{matrix} class has been created to avoid the need for an external libr \end{tkzelements} \end{minipage} -\item Homogeneous transformation matrix (Refer to \ref{ssub:method_htm}) +\item Homogeneous transformation matrix [\ref{ssub:method_htm}] The objective is to generate a matrix with homogeneous coordinates capable of transforming a coordinate system through rotation, translation, and scaling. To achieve this, it is necessary to define both the rotation angle, the coordinates of the new origin ans the scaling factors. diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex index c8c5cccd8f..e80a292858 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex @@ -17,11 +17,11 @@ %tkzround( num, idp ) & \\ % Cramer33(a1,a2,a3,b1,b2,b3,c1,c2,c3) & \\ % Cramer22(a1,a2,b1,b2) & \\ -\Igfct{math}{length (a,b) } & point.abs(a-b) Refer to (\ref{ssub:report_de_distance}) \\ +\Igfct{math}{length (a,b) } & point.abs(a-b) [\ref{sub:report_de_distance}] \\ \Igfct{math}{islinear (z1,z2,z3) } & Are the points aligned? (z2-z1) $\parallel$ (z3-z1) ? \\ \Igfct{math}{isortho (z1,z2,z3)} & (z2-z1) $\perp$ (z3-z1) ? boolean\\ -\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 Refer to (\ref{sub:get_angle}) \\ -\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A (\ref{sub:get_angle})\\ +\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 [\ref{sub:get_angle}] \\ +\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A [\ref{sub:get_angle}] \\ \Igfct{math}{bisector\_ext (z1,z2,z3)} & L.Aa = bisector_ext (z.A,z.B,z.C) from A \\ \Igfct{math}{altitude (z1,z2,z3)} & altitude from z1 \\ \Igfct{package}{set\_lua\_to\_tex (list)} & set\_lua\_to\_tex('a','n') defines |\a| and |\n| \\ @@ -31,7 +31,7 @@ \Igfct{math}{real (v) } & apply | value /scale | \\ \Igfct{math}{angle\_normalize (an) } & to get a value between 0 and $2\pi$ \\ \Igfct{misc}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\ -\Igfct{math}{solve\_quadratic (a,b,c) } & gives the solution of $ax^2+bx+c =0$ a,b,c real or complex (Refer to \ref{ssub:function_solve__quadratic})\\ +\Igfct{math}{solve\_quadratic (a,b,c) } & gives the solution of $ax^2+bx+c =0$ a,b,c real or complex [\ref{ssub:function_solve__quadratic}] \\ \bottomrule \end{tabular} \egroup diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex index e404dc763b..0da8f16b78 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex @@ -92,7 +92,6 @@ The creation of a point is done using the following method, but there are other This is the creation of a fixed point with coordinates 1 and 2 and which is named $A$. The notation |z.A| indicates that the coordinates will be stored in a table denoted as |z| (reference to the notation of the affixes of the complex numbers) that $A$ is the name of the point and the key allowing access to the values. - \begin{center} \bgroup \small @@ -101,21 +100,18 @@ This is the creation of a fixed point with coordinates 1 and 2 and which is name \begin{tabular}{lll} \toprule \textbf{Attributes} & \textbf{Application}& \textbf{Example}\\ - \Iattr{point}{re} & |z.A.re = 1| & Refer to (\ref{ssub:methods}) \\ - \Iattr{point}{im} & |z.A.im = 2| & Refer to (\ref{ssub:methods}) \\ + \Iattr{point}{re} & |z.A.re = 1| & [\ref{ssub:methods}] \\ + \Iattr{point}{im} & |z.A.im = 2| & [\ref{ssub:methods}] \\ \Iattr{point}{type} & |z.A.type = 'point'| & \\ - \Iattr{point}{argument} & |z.A.argument $\approx$ 0.78539816339745| & Refer to (\ref{ssub:example_point_attributes})\\ - \Iattr{point}{modulus} & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & Refer to (\ref{ssub:example_point_attributes})\\ + \Iattr{point}{argument} & |z.A.argument $\approx$ 0.78539816339745| & [\ref{ssub:example_point_attributes}] \\ + \Iattr{point}{modulus} & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & [\ref{ssub:example_point_attributes}] \\ \bottomrule \end{tabular} \egroup \end{center} - - - \newpage -\subsubsection{Example:point attributes} % (fold) +\subsubsection{Example: point attributes} % (fold) \label{ssub:example_point_attributes} \begin{tkzelements} @@ -189,7 +185,7 @@ Attributes of \texttt{z.M} \end{center} \MakeShortVerb{\|} - \hspace*{\fill} + % \caption{Class Point} % subsubsection example_point_attributes (end) % subsection attributes_of_a_point (end) @@ -225,19 +221,20 @@ Attributes of \texttt{z.M} z.O = point : new ( 0 , 0 ) z.I = point : new ( 1 , 0 ) \end{tkzelements} - \hspace{\fill}\begin{tikzpicture} - \tkzGetNodes - \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4] - \tkzDrawCircle[dashed,red](O,A) - \tkzPointShowCoord(A) - \tkzDrawPoint(A) - \tkzLabelPoint[above right](A){\normalsize $a+ib$} - \tkzDrawX\tkzDrawY - \tkzDrawSegment(O,A) - \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$} - \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$} - \end{tikzpicture} - \hspace{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4] + \tkzDrawCircle[dashed,red](O,A) + \tkzPointShowCoord(A) + \tkzDrawPoint(A) + \tkzLabelPoint[above right](A){\normalsize $a+ib$} + \tkzDrawX\tkzDrawY + \tkzDrawSegment(O,A) + \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$} + \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$} + \end{tikzpicture} +\end{center} \end{minipage} @@ -257,37 +254,37 @@ The methods described in the following table are standard and can be found in mo \toprule \textbf{Functions} & \textbf{Application}& \\ \midrule -\Igfct{point}{new(r,r)} & |z.A = point : new(1,2)| & Refer to (\ref{ssub:method_normalize}) \\ -\Igfct{point}{polar (d,an)} & |z.A = point : polar(1,math.pi/3)| & Refer to (\ref{sub:archimedes} )\\ +\Igfct{point}{new(r,r)} & |z.A = point : new(1,2)| & [\ref{ssub:method_normalize}] \\ +\Igfct{point}{polar (d,an)} & |z.A = point : polar(1,math.pi/3)| & [\ref{sub:archimedes}] \\ \Igfct{point}{polar\_deg (d,an)} & an in deg & polar coordinates an deg \\ \midrule \textbf{Methods} & \textbf{Application}& \\ \midrule \textbf{Points} &&\\ \midrule -\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & Refer to (\ref{sub:power_v2}) ; \ref{ssub:methods}) \\ +\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & [\ref{par:power_v2} ; \ref{ssub:methods}] \\ \Imeth{point}{south(r)} & & \\ \Imeth{point}{east(r)} & & \\ \Imeth{point}{west(r)} & & \\ -\Imeth{point}{normalize()} & |z.b = z.a: normalize ()| & Refer to (\ref{ssub:method_normalize}) \\ -\Imeth{point}{get\_points (obj)} & retrieves points from the object & \\ -\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| & $\overrightarrow{OB}\perp \overrightarrow{OA}$ and $OB=d$\\ -\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| & $\overrightarrow{OB}= \overrightarrow{AX}$ and $OB=d$\\ +\Imeth{point}{normalize()} & |z.b = z.a: normalize ()| & [\ref{ssub:method_normalize}] \\ +\Imeth{point}{get\_points (obj)} & retrieves points from the object & [\ref{ssub:object_rotation}; \ref{ssub:apollonius_circle_ma_mb_k} ] \\ +\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| & $\overrightarrow{OB}\perp \overrightarrow{OA}$ and $OB=d$. [\ref{ssub:orthogonal_method}]\\ +\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| & $\overrightarrow{OB}= \overrightarrow{AX}$ and $OB=d$. [\ref{ssub:_imeth_point_at_method}] \\ \midrule \textbf{Transformations} &&\\ \midrule - \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & Refer to (\ref{ssub:object_symmetry}) \\ - \Imeth{point}{rotation(an , obj)} & point, line, etc. & Refer to (\ref{ssub:object_rotation})\\ - \Imeth{point}{homothety(r,obj)} & |z.c = z.a : homothety (2,z.b)| & Refer to (\ref{sub:homothety}) \\ + \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & [\ref{ssub:object_symmetry}] \\ + \Imeth{point}{rotation(an , obj)} & point, line, etc. & [\ref{ssub:object_rotation}] \\ + \Imeth{point}{homothety(r,obj)} & |z.c = z.a : homothety (2,z.b)| & [\ref{sub:homothety}] \\ \midrule \textbf{Misc.} &&\\ \midrule - \Imeth{point}{print()} & displays the affix of the point & Refer to (\ref{ssub:object_symmetry}) \\ + \Imeth{point}{print()} & displays the affix of the point & [\ref{ssub:object_symmetry} ]\\ \bottomrule % \end{tabular} \egroup -\subsubsection{Example: method \Imeth{point}{north (d)} } % (fold) +\subsubsection{Method \Imeth{point}{north (d)} } % (fold) \label{ssub:example_method_imeth_point_north_d} This function defines a point located on a vertical line passing through the given point. This function is useful if you want to report a certain distance (Refer to the following example). @@ -320,71 +317,21 @@ If |d| is absent then it is considered equal to 1. z.C = z.O : west () z.D = z.O : south () \end{tkzelements} -\hspace{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C,D) - \tkzDrawPoints(A,B,C,D,O,A') - \tkzLabelPoints(A,B,C,D,O,A') -\end{tikzpicture} -\end{minipage} -% subsubsection example_method_imeth_point_north_d (end) - -\subsubsection{Length transfer} % (fold) -\label{ssub:report_de_distance} - -Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment}) +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C,D) + \tkzDrawPoints(A,B,C,D,O,A') + \tkzLabelPoints(A,B,C,D,O,A') + \end{tikzpicture} +\end{center} -\begin{minipage}{.4\textwidth} -\begin{Verbatim} -\begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 3 , 0 ) - L.AB = line : new ( z.A , z.B ) - T.ABC = L.AB : sublime () - z.C = T.ABC.pc - z.D = z.B: north (length(z.B,z.C)) - z.E = z.B: east (L.AB.length) - z.M = L.AB.mid - z.F = z.E : north (length(z.C,z.M)) -\end{tkzelements} -\begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawPolygons(A,B,C) - \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M) - \tkzDrawPoints(A,...,F) - \tkzLabelPoints(A,B,E,M) - \tkzLabelPoints[above right](C,D,F) -\end{tikzpicture} -\end{Verbatim} \end{minipage} -\begin{minipage}{.6\textwidth} -\begin{tkzelements} - z.A = point : new ( 0 , 0 ) - z.B = point : new ( 3 , 0 ) - L.AB = line : new ( z.A , z.B ) - T.ABC = L.AB : sublime () - z.C = T.ABC.pc - z.D = z.B: north (length(z.B,z.C)) - z.E = z.B: east (L.AB.length) - z.M = L.AB.mid - z.F = z.E : north (length(z.C,z.M)) -\end{tkzelements} -\hspace{\fill} -\begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawPolygons(A,B,C) - \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M) - \tkzDrawPoints(A,...,F) - \tkzLabelPoints(A,B,E,M) - \tkzLabelPoints[above right](C,D,F) -\end{tikzpicture} -\end{minipage} -% subsubsection report_de_distance (end) +% subsubsection example_method_imeth_point_north_d (end) -\subsubsection{Example: method \Imeth{point}{polar} } % (fold) +\subsubsection{Method \Imeth{point}{polar} } % (fold) \label{ssub:example_polar_method} This involves defining a point using its modulus and argument. @@ -402,7 +349,8 @@ This involves defining a point using its modulus and argument. \tkzDrawSegments[new](O,A) \tkzDrawSegments[purple](O,F) \tkzDrawPoints(A,O,F) - \tkzLabelPoints[below right=6pt](A,O,F) + \tkzLabelPoints[below right=6pt](A,O) + \tkzLabelPoints[above](F) \end{tikzpicture} \end{Verbatim} \end{minipage} @@ -413,16 +361,20 @@ This involves defining a point using its modulus and argument. z.A = point: new (3, 0) z.F = point: polar (3, math.pi/3) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(O,A) -\tkzDrawSegments[new](O,A) -\tkzDrawSegments[purple](O,F) -\tkzDrawPoints(A,O,F) -\tkzLabelPoints(A,O,F) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzDrawSegments[new](O,A) + \tkzDrawSegments[purple](O,F) + \tkzDrawPoints(A,O,F) + \tkzLabelPoints[below right=6pt](A,O) + \tkzLabelPoints[above](F) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsubsection example_polar_method (end) @@ -431,7 +383,26 @@ This involves defining a point using its modulus and argument. The result is a point located between the origin and the initial point at a distance of $1$ from the origin. -\begin{minipage}{.4\textwidth} +\begin{tkzelements} +scale = 1.5 +z.O = point : new (0,0) +z.A = point : new (2,1) +z.B = z.A : normalize () +z.I = point : new (1,0) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSegment(O,A) + \tkzDrawCircle(O,B) + \tkzDrawPoints(O,A,B,I) + \tkzLabelPoints(O,A) + \tkzLabelPoints[above](B) + \tkzLabelPoint[below right](I){$1$} + \end{tikzpicture} +\end{center} + \begin{Verbatim} \begin{tkzelements} scale = 1.5 @@ -449,29 +420,11 @@ The result is a point located between the origin and the initial point at a dist \tkzLabelPoint[below right](I){$1$} \end{tikzpicture} \end{Verbatim} -\end{minipage} -\begin{minipage}{.6\textwidth} -\begin{tkzelements} -scale = 1.5 -z.O = point : new (0,0) -z.A = point : new (1,2) -z.B = z.A : normalize () -z.I = point : new (1,0) -\end{tkzelements} - \hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawSegment(O,A) -\tkzDrawCircle(O,B) -\tkzDrawPoints(O,A,B,I) -\tkzLabelPoints(O,A,B) -\tkzLabelPoint[below right](I){$1$} -\end{tikzpicture} - \hspace*{\fill} -\end{minipage} + + % subsubsection method_normalize (end) -\subsubsection{\Imeth{point}{Orthogonal (d)} method} % (fold) +\subsubsection{Method \Imeth{point}{orthogonal (d)}} % (fold) \label{ssub:orthogonal_method} Let $O$ be the origin of the plane. The "orthogonal (d)" method is used to obtain a point $B$ from a point $A$ such that $\overrightarrow{OB}\perp \overrightarrow{OA}$ with $OB=OA$ if $d$ is empty, otherwise $OB = d$. @@ -499,16 +452,19 @@ Let $O$ be the origin of the plane. The "orthogonal (d)" method is used to obtai z.O = point : new ( 0,0 ) z.C = z.A : orthogonal () \end{tkzelements} -\begin{tikzpicture}[gridded] - \tkzGetNodes - \tkzDrawSegments(O,A O,C) - \tkzDrawPoints(O,A,B,C) - \tkzLabelPoints[below right](O,A,B,C) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawSegments(O,A O,C) + \tkzDrawPoints(O,A,B,C) + \tkzLabelPoints[below right](O,A,B,C) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection orthogonal_method (end) -\subsubsection{\Imeth{point}{at} method} % (fold) +\subsubsection{Method \Imeth{point}{at}} % (fold) \label{ssub:_imeth_point_at_method} This method is complementary to the previous one, so you may not wish to have $\overrightarrow{OB}\perp \overrightarrow{OA}$ but $\overrightarrow{AB}\perp \overrightarrow{OA}$. @@ -521,14 +477,16 @@ This method is complementary to the previous one, so you may not wish to have $\ z.O = point : new ( 0,0 ) -- z.B = z.B : at (z.A) -- or z.B = z.A : orthogonal (1) : at (z.A) + z.E = z.A : orthogonal (1) z.C = z.A+z.B z.D =(z.C-z.A):orthogonal(2) : at (z.C) \end{tkzelements} \begin{tikzpicture}[gridded] \tkzGetNodes - \tkzLabelPoints[below right](O,A,B,C,D) - \tkzDrawSegments(O,A A,B A,C C,D) - \tkzDrawPoints(O,A,B,C,D) + \tkzLabelPoints[below right](O,A,C) + \tkzLabelPoints[above](B,D,E) + \tkzDrawSegments(O,A A,B A,C C,D O,E) + \tkzDrawPoints(O,A,B,C,D,E) \end{tikzpicture} \end{Verbatim} \end{minipage} @@ -539,20 +497,24 @@ z.B = z.A : orthogonal (1) z.O = point : new ( 0,0 ) -- z.B = z.B : at (z.A) -- or z.B = z.A : orthogonal (1) : at (z.A) +z.E = z.A : orthogonal (1) z.C = z.A+z.B z.D =(z.C-z.A):orthogonal(2) : at (z.C) \end{tkzelements} -\begin{tikzpicture}[gridded] -\tkzGetNodes -\tkzLabelPoints[below right](O,A,B,C,D) -\tkzDrawSegments(O,A A,B A,C C,D) -\tkzDrawPoints(O,A,B,C,D) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzLabelPoints[below right](O,A,C) + \tkzLabelPoints[above](B,D,E) + \tkzDrawSegments(O,A A,B A,C C,D O,E) + \tkzDrawPoints(O,A,B,C,D,E) + \end{tikzpicture} +\end{center} \end{minipage} % subsubsection _imeth_point_at_method (end) -\subsubsection{Example: \Imeth{point}{rotation of points}} % (fold) +\subsubsection{Method \Imeth{point}{rotation} first example} % (fold) \label{ssub:example_rotation_of_points} The arguments are the angle of rotation in radians, and here a list of points. @@ -565,26 +527,27 @@ The arguments are the angle of rotation in radians, and here a list of points. z.o = point: new(6, -2) z.ap,z.bp = z.o : rotation (math.pi/2,z.a,z.b) \end{tkzelements} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawLines(o,a o,a' o,b o,b') - \tkzDrawPoints(a,a',b,b',o) - \tkzLabelPoints(b,b',o) - \tkzLabelPoints[below left](a,a') - \tkzDrawArc(o,a)(a') - \tkzDrawArc(o,b)(b') - \end{tikzpicture} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(o,a o,a' o,b o,b') + \tkzDrawPoints(a,a',b,b',o) + \tkzLabelPoints(b,b',o) + \tkzLabelPoints[below left](a,a') + \tkzDrawArc(o,a)(a') + \tkzDrawArc(o,b)(b') + \end{tikzpicture} \end{Verbatim} \end{minipage} \begin{minipage}{.4\textwidth} \begin{tkzelements} - scale = .5 + scale = .5 z.a = point: new(0, -1) z.b = point: new(4, 0) z.o = point: new(6, -2) z.ap,z.bp = z.o : rotation (math.pi/2,z.a,z.b) \end{tkzelements} -\hspace*{\fill} + +\begin{center} \begin{tikzpicture} \tkzGetNodes \tkzDrawLines(o,a o,a' o,b o,b') @@ -594,16 +557,16 @@ The arguments are the angle of rotation in radians, and here a list of points. \tkzDrawArc(o,a)(a') \tkzDrawArc(o,b)(b') \end{tikzpicture} -\hspace*{\fill} +\end{center} \end{minipage} % subsubsection example_rotation_of_points (end) -\subsubsection{Object \Imeth{point}{rotation}} % (fold) +\subsubsection{Method \Imeth{point}{rotation} second example} % (fold) \label{ssub:object_rotation} Rotate a triangle by an angle of $\pi/6$ around $O$. \begin{minipage}{.5\textwidth} - \begin{Verbatim} +\begin{Verbatim} \begin{tkzelements} scale = .75 z.O = point : new ( -1 , -1 ) @@ -619,13 +582,12 @@ Rotate a triangle by an angle of $\pi/6$ around $O$. T.ApBpCp = z.O : rotation (math.pi/3,T.ABC) z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp) \end{tkzelements} - \begin{tikzpicture} \tkzGetNodes \tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F') \tkzDrawPoints (A,B,C,A',B',C',O) - \tkzLabelPoints (A,B,C,A',B',C',O) - \tkzDrawArc[delta=0,->](O,A)(A') + \tkzLabelPoints (A,B,C,A',B',C',O) + \tkzDrawArc[delta=0,->](O,A)(A') \end{tikzpicture} \end{Verbatim} \end{minipage} @@ -645,61 +607,68 @@ T.ApBpCp = z.O : rotation (math.pi/3,T.ABC) z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp) \end{tkzelements} -\hspace{\fill}\begin{tikzpicture} +\begin{center} +\begin{tikzpicture} \tkzGetNodes \tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F') \tkzDrawPoints (A,B,C,A',B',C',O) - \tkzLabelPoints (A,B,C,A',B',C',O) + \tkzLabelPoints (A,B,C,A',B',C',O) \begin{scope} \tkzDrawArc[delta=0,->,dashed,red](O,A)(A') \tkzDrawSegments[dashed,red](O,A O,A') \end{scope} - \end{tikzpicture} +\end{center} \end{minipage} % subsubsection object_rotation (end) -\subsubsection{Object \Imeth{point}{symmetry}} % (fold) +\subsubsection{Method \Imeth{point}{symmetry}} % (fold) \label{ssub:object_symmetry} + +Example of the symmetry of an object + + \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} - z.a = point: new(0,-1) - z.b = point: new(2, 0) - L.ab = line : new (z.a,z.b) - C.ab = circle : new (z.a,z.b) - z.o = point: new(1,1) - z.ap,z.bp = get_points (z.o: symmetry (C.ab)) + z.a = point: new(0,-1) + z.b = point: new(2, 0) + L.ab = line : new (z.a,z.b) + C.ab = circle : new (z.a,z.b) + z.o = point: new(1,1) + z.ap,z.bp = get_points (z.o: symmetry (C.ab)) \end{tkzelements} - \begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(a,b a',b') -\tkzDrawLines(a,a' b,b') -\tkzDrawLines[red](a,b a',b') -\tkzDrawPoints(a,a',b,b',o) -\tkzLabelPoints(a,a',b,b',o) + \tkzGetNodes + \tkzDrawCircles(a,b a',b') + \tkzDrawLines(a,a' b,b') + \tkzDrawLines[red](a,b a',b') + \tkzDrawPoints(a,a',b,b',o) + \tkzLabelPoints(a,a',b,b',o) \end{tikzpicture} \end{Verbatim} \end{minipage} \begin{minipage}{.5\textwidth} \begin{tkzelements} - z.a = point: new(0, -1) - z.b = point: new(2, 0) - L.ab = line : new (z.a,z.b) - C.ab = circle : new (z.a,z.b) - z.o = point: new(1, 1) - z.ap,z.bp = get_points (z.o: symmetry (C.ab)) + z.a = point: new(0, -1) + z.b = point: new(2, 0) + L.ab = line : new (z.a,z.b) + C.ab = circle : new (z.a,z.b) + z.o = point: new(1, 1) + z.ap,z.bp = get_points (z.o: symmetry (C.ab)) \end{tkzelements} -\hspace{\fill}\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(a,b a',b') -\tkzDrawLines(a,a' b,b') -\tkzDrawLines[red](a,b a',b') -\tkzDrawPoints(a,a',b,b',o) -\tkzLabelPoints(a,a',b,b',o) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(a,b a',b') + \tkzDrawLines(a,a' b,b') + \tkzDrawLines[red](a,b a',b') + \tkzDrawPoints(a,a',b,b',o) + \tkzLabelPoints(a,a',b,b',o) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection object_symmetry (end) % subsection methods_of_the_class_point (end) diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex index 3ec9e777a6..98b6ac3610 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-regular.tex @@ -94,7 +94,7 @@ z.H = RP.five.proj \midrule \textbf{Points} &\\ \midrule -\Imeth{regular\_polygon}{name (string)} & Refer to\ref{ssub:pentagon} \\ +\Imeth{regular\_polygon}{name (string)} & [\ref{ssub:pentagon}] \\ \bottomrule % \end{tabular} \egroup diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex index 80b711e46f..b144ed3e01 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex @@ -21,12 +21,13 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp \Iattr{triangle}{pb} &T.ABC.pb \\ \Iattr{triangle}{pc} &T.ABC.pc \\ \Iattr{triangle}{type} & 'triangle' \\ -\Iattr{triangle}{circumcenter} & T.ABC.circumcenter\\ +\Iattr{triangle}{circumcenter} & T.ABC.circumcenter; [\ref{ssub:example_triangle_attributes} +]\\ \Iattr{triangle}{centroid} &T.ABC.centroid\\ \Iattr{triangle}{incenter} &T.ABC.incenter\\ \Iattr{triangle}{orthocenter} &T.ABC.orthocenter\\ \Iattr{triangle}{eulercenter} &T.ABC.eulercenter \\ -\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter \\ +\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter; [\ref{ssub:example_apollonius_circle}] \\ \Iattr{triangle}{a}& It's the length of the side opposite the first vertex \\ \Iattr{triangle}{b}& It's the length of the side opposite the second verte\\ \Iattr{triangle}{c}& It's the length of the side opposite the third vertex \\ @@ -116,7 +117,7 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp \begin{tkzelements} z.A = point: new (0 , 0) z.B = point: new (4 , 0) - z.C = point: new (0 , 3) + z.C = point: new (1 , 3) T.ABC = triangle : new (z.A,z.B,z.C) z.O = T.ABC.circumcenter z.I = T.ABC.incenter @@ -129,18 +130,22 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp beta = T.ABC.beta gamma = T.ABC.gamma \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C) - \tkzDrawPoints(A,B,C,O,G,I,H) - \tkzLabelPoints[below](A,B,O,G,I) - \tkzLabelPoints[above right](H,C) - \tkzDrawCircles(O,A) - \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}} - \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}} -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C,O,G,I,H) + \tkzDrawCircles(O,A) + \tkzLabelPoints[below](A,B,O,G,I) + \tkzLabelPoints[above right](H) + \tkzLabelPoints[above](C) + \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}} + \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}} + \end{tikzpicture} +\end{center} + + \end{minipage} % subsubsection example_triangle_attributes (end) @@ -155,64 +160,95 @@ The triangle object is created using the \Imeth{triangle}{new} method, for examp \small \begin{minipage}{\textwidth} \captionof{table}{triangle methods.}\label{triangle:met} -\begin{tabular}{ll} +\begin{tabular}{lll} \toprule -\textbf{Methods} & \textbf{Comments} \\ +\textbf{Methods} & \textbf{Comments} & \\ \midrule -\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)| \\ - ... & |T| or |T.name| with what you want for name, is possible.\\ +\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)|& [\ref{sub:triangle_attributes_angles}] \footnote{|T| or |T.name| with what you want for name, is possible.} \\ \midrule - \textbf{Points} &\\ + \textbf{Points} &&\\ \midrule -\Imeth{triangle}{lemoine\_point ()} & |T.ABC : lemoine_point ()| intersection os the symmedians\\ -\Imeth{triangle}{symmedian\_point ()} & Lemoine point or the Grebe point \\ -\Imeth{triangle}{bevan\_point ()} & Circumcenter of the excentral triangle\\ -\Imeth{triangle}{mittenpunkt\_point ()} & Symmedian point of the excentral triangle\\ -\Imeth{triangle}{gergonne\_point ()} & Intersection of the three cevians that lead to the contact points \\ -\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points\\ -\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent. \\ -\Imeth{triangle}{spieker\_center ()} & Incenter of the medial triangle \\ -\Imeth{triangle}{barycenter (ka,kb,kc)} & |T.ABC: barycenter (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |\\ -\Imeth{triangle}{base (u,v) } & |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram \\ -\Imeth{triangle}{projection (p) } & Projection of a point on the sides \\ -\Imeth{triangle}{euler\_points () } & Euler points of euler circle \\ -\Imeth{triangle}{nine\_points () } & 9 Points of the euler circle \\ -\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD is a parallelogram\\ +\Imeth{triangle}{lemoine\_point ()} & |T.ABC : lemoine_point ()| intersection of the symmedians & [\ref{ssub:method_imeth_line_isosceles}]\\ + +\Imeth{triangle}{symmedian\_point ()} & Lemoine point or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\ + +\Imeth{triangle}{lemoine\_point ()} & symmedian point or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\ + +\Imeth{triangle}{bevan\_point ()} & Circumcenter of the excentral triangle& [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point} +]\\ + +\Imeth{triangle}{mittenpunkt\_point ()} & Symmedian point of the excentral triangle& [\ref{ssub:method_imeth_triangle_mittenpunkt}]\\ + +\Imeth{triangle}{gergonne\_point ()} & Intersection of the three cevians that lead to the contact points& [\ref{ssub:gergonne_point}]\\ + +\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points& [\ref{ssub:method_imeth_triangle_nagel__point}]\\ + +\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent.& [\ref{ssub:method_imeth_triangle_feuerbach}]\\ + +\Imeth{triangle}{spieker\_center ()} & Incenter of the medial triangle& [\ref{sub:apollonius_circle_v1_with_inversion}]\\ + +\Imeth{triangle}{barycentric (ka,kb,kc)} & |T.ABC: barycentric (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |&Remark \footnote{The function \code{barycenter} is used to obtain the barycentre for any number of points }\\ + +\Imeth{triangle}{base (u,v) } & |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram & [\ref{ssub:method_imeth_triangle_base}] \\ +\Imeth{triangle}{trilinear (u,v,w) } & |z.D = T.ABC: trilinear(1,1,1)| \tkzar ABDC parallelogram & [\ref{ssub:method_imeth_triangle_trilinear}] \\ + +\Imeth{triangle}{projection (p) } & Projection of a point on the sides &[\ref{sub:euler_relation}; \ref{ssub:method_imeth_triangle_projection}]\\ + +\Imeth{triangle}{euler\_points () } & Euler points of euler circle & [\ref{ssub:method_imeth_triangle_euler__points}] \\ + +\Imeth{triangle}{nine\_points () } & 9 Points of the euler circle & [\ref{ssub:method_imeth_triangle_nine__points}] \\ + +\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD parallelogram& [\ref{sub:director_circle}]\\ \midrule - \textbf{Lines} &\\ + \textbf{Lines} &&\\ \midrule \Imeth{triangle}{altitude (n) } & |L.AHa = T.ABC : altitude () | n empty or 0 line from $A$ -\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull.}\\ -\Imeth{triangle}{bisector (n) } & |L.Bb = T.ABC : bisector (1) | n = 1 line from $B$ \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. }\\ -\Imeth{triangle}{bisector\_ext(n) } & n=2 line from the third vertex.\\ -\Imeth{triangle}{symmedian\_line (n)} & Cevian with respect to Lemoine point. \\ +\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull. If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the function |altitude (z.A,z.B,z.C)| ; [ \ref{misc}]}& [\ref{ssub:method_imeth_triangle_altitude} ]\\ + +\Imeth{triangle}{bisector (n) } & |L.Bb = T.ABC : bisector (1) | n = 1 line from $B$ \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. If you don't need to use the triangle object several times, you can obtain a bisector with the function |bisector (z.A,z.B,z.C)| [\ref{misc}]}& [\ref{ssub:method_imeth_triangle_bisector}]\\ + +\Imeth{triangle}{bisector\_ext(n) } & n=2 line from the third vertex.& [\ref{sub:harmonic_division_and_bisector}]\\ + +\Imeth{triangle}{symmedian\_line (n)} & Cevian with respect to Lemoine point.& [\ref{ssub:method_imeth_triangle_symmedial} ; \ref{ssub:method_imeth_line_isosceles}]\\ + \Imeth{triangle}{euler\_line () } & the line through $N$ ,$G$, $H$ and $O$ if the triangle is not equilateral -\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } \\ -\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.\\ +\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } & [\ref{sub:hexagram}]\\ + +\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.& [\ref{sub:antiparallel_through_lemoine_point}]\\ \midrule - \textbf{Circles} &\\ + \textbf{Circles} &&\\ \midrule \Imeth{triangle}{euler\_circle ()} & C.|NP = T.ABC : euler_circle ()| \tkzar $N$ euler point - \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.} \\ -\Imeth{triangle}{circum\_circle ()} & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle \\ -\Imeth{triangle}{in\_circle ()} & Inscribed circle of the triangle\\ -\Imeth{triangle}{ex\_circle (n)} & Circle tangent to the three sides of the triangle ; n =1 swap ; n=2 2 swap \\ -\Imeth{triangle}{first\_lemoine\_circle ()} & The center is the midpoint between Lemoine point and the circumcenter.\footnote{ -Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC - then lie on a circle known as the first Lemoine circle. } \\ -\Imeth{triangle}{second\_lemoine\_circle ()} & Refer to example \ref{sub:antiparallel_through_lemoine_point}\\ -\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle\\ -\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle Refer to (\ref{ssub:method_imeth_triangle_cevian})\\ -\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle Refer to (\ref{ssub:method_imeth_triangle_pedal})\\ -\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points Refer to (\ref{ssub:method_imeth_triangle_conway})\\ + \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.} & [\ref{ssub:method_imeth_triangle_euler_circle}]\\ + +\Imeth{triangle}{circum\_circle ()} & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle & [\ref{ssub:method_imeth_triangle_circum_circle}] \\ + +\Imeth{triangle}{in\_circle ()} & Inscribed circle of the triangle& +[\ref{ssub:method_imeth_triangle_in_circle}]\\ + +\Imeth{triangle}{ex\_circle (n)} & Circle tangent to the three sides of the triangle ; n =1 swap ; n=2 2 swap & [\ref{ssub:method_imeth_triangle_ex__circle}]\\ + +\Imeth{triangle}{first\_lemoine\_circle ()} & The center is the midpoint between Lemoine point and the circumcenter.\footnote{Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC then lie on a circle known as the first Lemoine circle. }& [\ref{sub:first_and_second_lemoine_circles} +] \\ + +\Imeth{triangle}{second\_lemoine\_circle ()} & & \ref{sub:antiparallel_through_lemoine_point}] \\ + +\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle& [\ref{ssub:method_imeth_triangle_spieker__circle}]\\ + +\Imeth{triangle}{bevan\_circle ()} & Circumscribed circle of a excentral triangle & [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}]\\ + +\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle & [\ref{ssub:method_imeth_triangle_cevian}]\\ + +\Imeth{triangle}{symmedial\_circle ()} & Circumscribed circle of a symmedial triangle & [\ref{ssub:method_imeth_triangle_symmedial}]\\ + +\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle & [\ref{ssub:method_imeth_triangle_pedal}]\\ + +\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points & [\ref{ssub:method_imeth_triangle_conway}]\\ \bottomrule \end{tabular} \end{minipage} \egroup -Remark: If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the next functions - -|bisector (z.A,z.B,z.C)| and |altitude (z.A,z.B,z.C)| Refer to (\ref{misc}) \clearpage\newpage \bgroup @@ -227,29 +263,48 @@ Remark: If you don't need to use the triangle object several times, you can obta \midrule \textbf{Triangles} &\\ \midrule -\Imeth{triangle}{orthic ()} & |T = T.ABC : orthic ()| triangle joining the feet of the altitudes \\ -\Imeth{triangle}{medial ()} & |T = T.ABC : medial ()| triangle with vertices at the midpoints\\ -\Imeth{triangle}{incentral ()} & Cevian triangle of the triangle with respect to its incenter \\ -\Imeth{triangle}{excentral () } & Triangle with vertices corresponding to the excenters \\ -\Imeth{triangle}{extouch ()} & Triangle formed by the points of tangency with the excircles \\ -\Imeth{triangle}{intouch () } & Contact triangle formed by the points of tangency of the incircle \\ -\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices\\ -\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles\\ -\Imeth{triangle}{anti () }& Anticomplementary Triangle The given triangle is its medial triangle. \\ -\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|. refer to (\ref{ssub:method_imeth_triangle_cevian})\\ -\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of |pt| Refer to \ref{ssub:method_imeth_triangle_pedal}\\ -\Imeth{triangle}{symmedian ()} & Triangle formed with the intersection points of the symmedians. \\ -\Imeth{triangle}{euler ()} & Triangle formed with the euler points \\ +\Imeth{triangle}{orthic ()} & |T = T.ABC : orthic ()| triangle joining the feet of the altitudes ; [\ref{ssub:method_imeth_triangle_altitude}] \\ + +\Imeth{triangle}{medial ()} & |T = T.ABC : medial ()| triangle with vertices at the midpoints; [\ref{ssub:method_imeth_triangle_medial} ; \ref{sub:nine_points} ; \ref{ssub:method_imeth_triangle_symmedial}]\\ + +\Imeth{triangle}{incentral ()}& Cevian triangle of the triangle with respect to its incenter. [\ref{ssub:method_incentral}] \\ + +\Imeth{triangle}{excentral ()} & Triangle with vertices corresponding to the excenters. [\ref{ssub:method_imeth_triangle_feuerbach} ] \\ + +\Imeth{triangle}{extouch ()} & Triangle formed by the points of tangency with the excircles. [\ref{sub:excircles} ] \\ + +\Imeth{triangle}{intouch () } & Contact triangle formed by the points of tangency of the incircle [\ref{ssub:gergonne_point}]\\ + +\Imeth{triangle}{contact () } & contact = intouch ; [ +\ref{ssub:gergonne_point}] \\ + +\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices; [\ref{ssub:method_imeth_triangle_tangential}]\\ + +\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles; [\ref{ssub:method_imeth_triangle_feuerbach}]\\ + +\Imeth{triangle}{anti () }& Anticomplementary Triangle The given triangle is its medial triangle.\footnote{You can use \tkzname{similar} instead of \tkzname{anti}.} ; [\ref{ssub:method_imeth_triangle_anti}] \\ + +\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|; [\ref{ssub:method_imeth_triangle_cevian}] \\ + +\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of |pt| [\ref{ssub:method_imeth_triangle_pedal}]\\ + +\Imeth{triangle}{symmedial ()} & Triangle formed with the intersection points of the symmedians ; [\ref{ssub:method_imeth_triangle_symmedial}] \\ + +\Imeth{triangle}{euler ()} & Triangle formed with the euler points ; [\ref{ssub:method_imeth_triangle_euler__points}] \\ + +\Imeth{triangle}{similar ()} & Triangle formed with straight lines parallel to the sides [\ref{ssub:method_imeth_triangle_similar}] \\ \midrule \textbf{Ellipses} &\\ -\Imeth{triangle}{steiner\_inellipse ()} & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\ -\Imeth{triangle}{steiner\_circumellipse ()} & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\ -\Imeth{triangle}{euler\_ellipse ()} & Refer to ex. (\ref{sub:euler_ellipse})\\ +\Imeth{triangle}{steiner\_inellipse ()} & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\ + +\Imeth{triangle}{steiner\_circumellipse ()} & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\ + +\Imeth{triangle}{euler\_ellipse ()} & [ex. (\ref{sub:euler_ellipse}]\\ \midrule \textbf{Miscellaneous} &\\ \midrule \Imeth{triangle}{area ()} & $ \mathcal{A}$| = T.ABC: area ()|\\ -\Imeth{triangle}{barycentric\_coordinates (pt)} & Triples of numbers corresponding to masses placed at the vertices\\ +\Imeth{triangle}{barycentric\_coordinates(pt)}& Triples of numbers corresponding to masses placed at the vertices\\ \Imeth{triangle}{in\_out (pt)} & Boolean. Test if |pt| is inside the triangle\\ \Imeth{triangle}{check\_equilateral ()} & Boolean. Test if the triangle is equilateral\\ \bottomrule @@ -259,68 +314,1146 @@ Remark: If you don't need to use the triangle object several times, you can obta \egroup % subsubsection methods_of_the_class_triangle (end) +\subsubsection{Gergonne point} % (fold) +\label{ssub:gergonne_point} + +In this example, some usefull methods are applied like \Imeth{triangle}{intouch} or \Imeth{triangle}{contact}. +The points of contact of the inscribed circle (incircle) with the triangle in question are obtained. + +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{Verbatim} +\begin{tkzelements} +z.a = point: new(1,0) +z.b = point: new(6,2) +z.c = point: new(2,5) +T = triangle : new (z.a,z.b,z.c) +z.g = T : gergonne_point () +z.i = T.incenter +z.ta,z.tb,z.tc = get_points (T : intouch ()) +\end{tkzelements} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(a,b,c) + \tkzDrawSegments (a,ta b,tb c,tc) + \tkzDrawCircle(i,ta) + \tkzDrawPoints(a,b,c,g,ta,tb,tc) + \tkzLabelPoints(a,b,tc) + \tkzLabelPoints[above](c,ta) + \tkzLabelPoints[above left](tb) + \end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{tkzelements} +z.a = point: new(1,0) +z.b = point: new(6,2) +z.c = point: new(2,5) +T = triangle : new (z.a,z.b,z.c) +z.g = T : gergonne_point () +z.i = T.incenter +z.ta,z.tb,z.tc = get_points (T : intouch ()) +\end{tkzelements} + + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(a,b,c) + \tkzDrawSegments (a,ta b,tb c,tc) + \tkzDrawCircle(i,ta) + \tkzDrawPoints(a,b,c,g,ta,tb,tc) + \tkzLabelPoints(a,b,tc) + \tkzLabelPoints[above](c,ta) + \tkzLabelPoints[above left](tb) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection gergonne_point (end) + +\subsubsection{Method \Imeth{triangle}{Nagel\_point}} % (fold) +\label{ssub:method_imeth_triangle_nagel__point} + +Let $E_a$ be the point at which the $J_a$-excircle meets the side $(BC)$ of a triangle $ABC$, and define $E_b$ and $E_c$ similarly. Then the lines $A,E_a$, $B,E_b$ and $C,E_c$ concur in the Nagel point $Na$. + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .7 + z.A = point : new (0,0) + z.B = point : new (3.6,0) + z.C = point : new (2.8,4) + T.ABC = triangle: new (z.A,z.B,z.C) + z.Na = T.ABC : nagel_point () + z.J_a,z.J_b, + z.J_c = get_points (T.ABC : excentral ()) + z.E_a,z.E_b, + z.E_c = get_points (T.ABC : extouch ()) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,B,C) + \tkzDrawPoints[red,size=2](J_a,J_b,J_c) + \tkzClipBB + \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C) + \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c) + \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c) + \tkzDrawSegments[orange](A,E_a B,E_b C,E_c) + \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c) + \tkzLabelPoints(A,B,Na) + \tkzLabelPoints(E_c,J_a,J_b,J_c) + \tkzLabelPoints[above](E_a,E_b,C) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .7 + z.A = point : new (0,0) + z.B = point : new (3.6,0) + z.C = point : new (2.8,4) + T.ABC = triangle: new (z.A,z.B,z.C) + z.Na = T.ABC : nagel_point () + z.J_a,z.J_b, + z.J_c = get_points (T.ABC : excentral ()) + z.E_a,z.E_b, + z.E_c = get_points (T.ABC : extouch ()) +\end{tkzelements} + +\begin{center} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,B,C) + \tkzDrawPoints[red,size=2](J_a,J_b,J_c) + \tkzClipBB + \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C) + \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c) + \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c) + \tkzDrawSegments[orange](A,E_a B,E_b C,E_c) + \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c) + \tkzLabelPoints(A,B,Na) + \tkzLabelPoints(E_c,J_a,J_b,J_c) + \tkzLabelPoints[above](E_a,E_b,C) +\end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection method_imeth_triangle_nagel__point (end) + + +\subsubsection{Method \Imeth{triangle}{mittenpunkt}} % (fold) +\label{ssub:method_imeth_triangle_mittenpunkt} + +The Mittenpunkt is the symmedian point of the excentral triangle. The mittenpunkt (also called the middlespoint) of a triangle is the symmedian point of the excentral triangle, i.e., the point of concurrence of the lines from the excenters through the corresponding triangle side midpoints. +[ \href{https://mathworld.wolfram.com/Mittenpunkt.html}{Weisstein, Eric W. "Mittenpunkt." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 1 + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 6 , 0 ) + z.C = point : new ( 4 , 6 ) + T = triangle : new (z.A,z.B,z.C) + z.Ma, + z.Mb, + z.Mc = get_points (T : medial ()) + z.Ia,z.Ib,z.Ic = get_points(T : excentral ()) + z.Mi = T : mittenpunkt_point () + T.int = T : extouch () + z.Ta,z.Tb,z.Tc = get_points(T.int) +\end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = 1 + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 6 , 0 ) + z.C = point : new ( 4 , 6 ) + T = triangle : new (z.A,z.B,z.C) + z.Ma, + z.Mb, + z.Mc = get_points (T : medial ()) + z.Ia,z.Ib,z.Ic = get_points(T : excentral ()) + z.Mi = T : mittenpunkt_point () + T.int = T : extouch () + z.Ta,z.Tb,z.Tc = get_points(T.int) +\end{tkzelements} +\begin{center} + \begin{tikzpicture}[scale=.5] + \tkzGetNodes + \tkzDrawPolygons[](A,B,C Ma,Mb,Mc) + \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic) + \tkzDrawPoints[red](Ta,Tb,Tc) + \tkzLabelPoints[below](Ib) + \tkzLabelPoints[above left](Ia,Ic) + \tkzClipBB + \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc) + \tkzDrawLines[add=1 and 1](A,B A,C B,C) + \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc) + \tkzDrawPoints(B,C,A,Mi) % + \tkzLabelPoints(B,A) + \tkzLabelPoints[above](C,Mi) + \end{tikzpicture} +\end{center} +\end{minipage} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tikzpicture}[scale=.5] + \tkzGetNodes + \tkzDrawPolygons[](A,B,C Ma,Mb,Mc) + \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic) + \tkzDrawPoints[red](Ta,Tb,Tc) + \tkzLabelPoints[below](Ib) + \tkzLabelPoints[above left](Ia,Ic) + \tkzClipBB + \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc) + \tkzDrawLines[add=1 and 1](A,B A,C B,C) + \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc) + \tkzDrawPoints(B,C,A,Mi) + \tkzLabelPoints(B,A) + \tkzLabelPoints[above](C,Mi) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} + + +% subsubsection method_imeth_triangle_mittenpunkt (end) + +\subsubsection{Method \Imeth{triangle}{projection}} % (fold) +\label{ssub:method_imeth_triangle_projection} + +This involves obtaining the projections of a point onto the sides of a triangle. In the following example, we are going to find the projections of a centre of an exinscribed circle. + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point: new (0 , 0) +z.B = point: new (5 , 0) +z.C = point: new (-.4 , 4) +T.ABC = triangle: new (z.A,z.B,z.C) +z.J,_ = get_points(T.ABC: ex_circle (2)) +z.X , +z.Y, +z.Z = T.ABC : projection (z.J) +\end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +z.A = point: new (0 , 0) +z.B = point: new (5 , 0) +z.C = point: new (-.4 , 4) +T.ABC = triangle: new (z.A,z.B,z.C) +z.J,_ = get_points(T.ABC: ex_circle (2)) +z.X , +z.Y, +z.Z = T.ABC : projection (z.J) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawArc(J,X)(Y) + \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X) + \tkzDrawPoints(A,B,C,J,X,Y,Z) + \tkzLabelPoints(J,X,Y) + \tkzLabelPoints[above](C,B,Z) + \tkzLabelPoints[left](A) + \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B) + \end{tikzpicture} +\end{center} +\end{minipage} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawArc(J,X)(Y) + \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X) + \tkzDrawPoints(A,B,C,J,X,Y,Z) + \tkzLabelPoints(J,X,Y) + \tkzLabelPoints[above](C,B,Z) + \tkzLabelPoints[left](A) + \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B) + \end{tikzpicture} +\end{center} +\end{Verbatim} +\end{minipage} + +% subsubsection method_imeth_triangle_projection (end) + +\subsubsection{Method \Imeth{triangle}{trilinear}} % (fold) +\label{ssub:method_imeth_triangle_trilinear} + +Given a reference triangle $ABC$, the trilinear coordinates of a point $P$ with respect to $ABC$ are an ordered triple of numbers, each of which is proportional to the directed distance from $P$ to one of the side lines. Trilinear coordinates are denoted alpha:beta:gamma or (alpha,beta,gamma) and also are known as homogeneous coordinates or "trilinears." Trilinear coordinates were introduced by Plücker in 1835. +[\href{https://mathworld.wolfram.com/TrilinearCoordinates.html}{Weisstein, Eric W. "Trilinear Coordinates." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point : new ( 0 , 0 ) +z.B = point : new ( 4 , 0 ) +z.C = point : new ( 4 , 3 ) +T.ABC = triangle : new ( z.A , z.B , z.C ) +a = T.ABC.a +b = T.ABC.b +c = T.ABC.c +z.Gp = T.ABC : trilinear (b*c,a*c,a*b) +z.G = T.ABC : barycentric (1,1,1) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawPolygon(A,B,C) +\tkzDrawPoints(A,B,C,G',G) +\tkzLabelPoints(A,B,G') +\tkzLabelPoints[above](C,G) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +z.A = point : new ( 0 , 0 ) +z.B = point : new ( 4 , 0 ) +z.C = point : new ( 4 , 3 ) +T.ABC = triangle : new ( z.A , z.B , z.C ) +a = T.ABC.a +b = T.ABC.b +c = T.ABC.c +z.Gp = T.ABC : trilinear (b*c,a*c,a*b) +z.G = T.ABC : barycentric (1,1,1) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C,G',G) + \tkzLabelPoints(A,B,G') + \tkzLabelPoints[above](C,G) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection method_imeth_triangle_trilinear (end) + +\subsubsection{Method \Imeth{triangle}{barycentric\_coordinates}} % (fold) +\label{ssub:method_imeth_triangle_barycentric__coordinates} + +This method produces a triplet of coordinates which are the barycentric coordinates of a point as a function of the three points of a given triangle. + +\vspace{6pt} + +\begin{minipage}{.5\textwidth} + \begin{Verbatim} +\begin{tkzelements} + z.A = point: new (1,1) + z.B = point: new (8,0) + z.C = point: new (2,5) + T = triangle: new(z.A,z.B,z.C) + z.G = T.centroid + ca,cb,cc = T : barycentric_coordinates (z.G) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,G) + \tkzLabelPoints(A,B,C,G) + \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}} +\end{tikzpicture} + \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale = .75 + z.A = point: new (1,1) + z.B = point: new (8,0) + z.C = point: new (2,5) + T = triangle: new(z.A,z.B,z.C) + z.G = T.centroid + ca,cb,cc = T : barycentric_coordinates (z.G) + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,G) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}} + \end{tikzpicture} + \end{center} +\end{minipage} + +% subsubsection method_imeth_triangle_barycentric__coordinates (end) + +\subsubsection{Method \Imeth{triangle}{base}} % (fold) +\label{ssub:method_imeth_triangle_base} + +In the next example, the point $D$ is defined by $\overrightarrow{AD} = 1\cdot \overrightarrow{AB}+1\cdot \overrightarrow{AC}$. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .75 + z.A = point: new (1,1) + z.B = point: new (8,0) + z.C = point: new (0,5) + z.X = point: new (2,2) + T = triangle: new(z.A,z.B,z.C) + z.D = T : base (1,1) + z.E = T : base (.5,1) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,D,C A,B,E,C) + \tkzDrawPoints(A,B,C,D,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale = .75 + z.A = point: new (1,1) + z.B = point: new (8,0) + z.C = point: new (0,5) + z.X = point: new (2,2) + T = triangle: new(z.A,z.B,z.C) + z.D = T : base (1,1) + z.E = T : base (.5,1) + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,D,C A,B,E,C) + \tkzDrawPoints(A,B,C,D,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) + \end{tikzpicture} + \end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_base (end) + + +\subsubsection{Method \Imeth{triangle}{euler\_points}} % (fold) +\label{ssub:method_imeth_triangle_euler__points} + +The points $a$, $b$ and $c$ are the Euler points. They are the midpoints of the segments $AH$, $BH$ and $CH$. + +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \begin{tkzelements} + scale = 1.25 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + z.N = T.eulercenter + z.a, + z.b, + z.c = get_points (T : euler ()) + z.H = T.orthocenter + T.orthic = T: orthic() + z.Ha, + z.Hb, + z.Hc = get_points (T.orthic) + \end{tkzelements} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawPolygons[cyan](a,b,c) + \tkzDrawCircle[purple](N,a) + \tkzDrawPoints(a,b,B,C,A,c,H) + \tkzDrawSegments[red](C,Hc B,Hb A,Ha) + \tkzLabelPoints(A,B,a,b,H) + \tkzLabelPoints[above](c,C) + \end{tikzpicture} + \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale = 1.25 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + z.N = T.eulercenter + z.a, + z.b, + z.c = get_points (T : euler ()) + z.H = T.orthocenter + T.orthic = T: orthic() + z.Ha, + z.Hb, + z.Hc = get_points (T.orthic) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawPolygons[cyan](a,b,c) + \tkzDrawCircle[purple](N,a) + \tkzDrawPoints(a,b,B,C,A,c,H) + \tkzDrawSegments[red](C,Hc B,Hb A,Ha) + \tkzLabelPoints(A,B,a,b,H) + \tkzLabelPoints[above](c,C) + \end{tikzpicture} +\end{center} +\end{minipage} +% subsubsection method_imeth_triangle_euler__points (end) + +\subsubsection{Method \Imeth{triangle}{nine\_points}} % (fold) +\label{ssub:method_imeth_triangle_nine__points} + +This method gives the nine main points belonging to the Euler circle: in order, first the midpoints of the sides of the triangle, then the feet of the altitudes and finally the three Euler points. Refer to the last example. +In the next example, we look for the centre of gravity in two different ways: the first uses the \code{trilinear} method, the second the \code{barycentric} method. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 1.5 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + z.N = T.eulercenter + z.e1, + z.e2, + z.e3, + z.e4, + z.e5, + z.e6, + z.e7, + z.e8, + z.e9 = T : nine_points () +\end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = 1.5 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + z.N = T.eulercenter + z.e1, + z.e2, + z.e3, + z.e4, + z.e5, + z.e6, + z.e7, + z.e8, + z.e9 = T : nine_points () +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle[purple](N,e1) + \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9) + \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9) +\end{tikzpicture} +\end{minipage} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle[purple](N,e1) + \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9) + \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} + +% subsubsection method_imeth_triangle_nine__points (end) + +\subsubsection{Method \Imeth{triangle}{altitude}} % (fold) +\label{ssub:method_imeth_triangle_altitude} + +There are several methods to obtain one or more altitudes of a triangle. One possible method is the \Imeth{triangle}{orthic} method. This method allows for defining the \code{orthic} triangle whose vertices are the feet of the altitudes from each vertex. If only one altitude is needed, one can use the \code{altitude(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the altitude will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the altitude will be from $B$. For $n=2$, the altitude will be from $C$. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + z.H = T.orthocenter + L.HA = T : altitude () + L.HC = T :altitude (2) + z.Hc = L.HC.pb + z.Ha = L.HA.pb + z.a,z.b,z.c = get_points (T : orthic ()) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[red](a,b,c) + \tkzDrawPoints(A,B,C,H) + \tkzDrawSegments[red](C,Hc A,Ha) + \tkzLabelPoints(A,B,H) + \tkzLabelPoints[font=\small](Hc) + \tkzLabelPoints[font=\small,above](Ha,C) + \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C) + \end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + z.H = T.orthocenter + L.HA = T : altitude () + L.HC = T : altitude (2) + z.Hc = L.HC.pb + z.Ha = L.HA.pb + z.a,z.b,z.c = get_points (T : orthic ()) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[red](a,b,c) + \tkzDrawPoints(A,B,C,H) + \tkzDrawSegments[red](C,Hc A,Ha) + \tkzLabelPoints(A,B,H) + \tkzLabelPoints[font=\small](Hc) + \tkzLabelPoints[font=\small,above](Ha,C) + \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsubsection method_imeth_triangle_altitude (end) + +\subsubsection{Method \Imeth{triangle}{bisector}} % (fold) +\label{ssub:method_imeth_triangle_bisector} + +There are several methods to obtain one or more bisectors of a triangle. One possible method is the \Imeth{triangle}{incentral} method. This method allows for defining the \code{incentral} triangle whose vertices are the feet of the bisectors from each vertex. If only one bisector is needed, one can use the \code{bisector(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the bisector will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the bisector will be from $B$. For $n=2$, the bisector will be from $C$. + +\vspace{6pt} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new (0 , 0) + z.B = point : new (3 , 2) + z.C = point : new (2 , 5) + T.ABC = triangle : new ( z.A , z.B , z.C ) + L.AE = T.ABC : bisector () + z.E = L.AE.pb + z.F = T.ABC : bisector (1).pb + z.a,z.b,z.c = get_points (T.ABC : incentral ()) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[red](a,b,c) + \tkzDrawLines(A,B A,C A,E B,F) + \tkzDrawPoints(A,B,C,a,b,c) + \tkzLabelPoints(A,B,c) + \tkzLabelPoints[above](C,b,a) + \tkzMarkAngles[mark=|](B,A,a a,A,C) + \tkzMarkAngles[mark=||](C,B,b b,B,A) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point : new (0 , 0) + z.B = point : new (3 , 2) + z.C = point : new (2 , 5) + T.ABC = triangle : new ( z.A , z.B , z.C ) + L.AE = T.ABC : bisector () + z.E = L.AE.pb + z.F = T.ABC : bisector (1).pb + z.a,z.b,z.c = get_points (T.ABC : incentral ()) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[red](a,b,c) + \tkzDrawLines(A,B A,C A,E B,F) + \tkzDrawPoints(A,B,C,a,b,c) + \tkzLabelPoints(A,B,c) + \tkzLabelPoints[above](C,b,a) + \tkzMarkAngles[cyan,mark=|,size=.75](B,A,a a,A,C) + \tkzMarkAngles[mark=||,size=.5](C,B,b b,B,A) + \end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_bisector (end) + +%%%%%% Circles %%%%%% + +\subsubsection{Method \Imeth{triangle}{euler\_circle}} % (fold) +\label{ssub:method_imeth_triangle_euler_circle} + +The nine-point circle, also called Euler's circle or the Feuerbach circle, is the circle that passes through the perpendicular feet $H_A, H_B, and H_C$ dropped from the vertices of any reference triangle DeltaABC on the sides opposite them. Euler showed in 1765 that it also passes through the midpoints$ M_A, M_B, M_C$ of the sides of DeltaABC. By Feuerbach's theorem, the nine-point circle also passes through the midpoints $E_A, E_B, and E_C$ of the segments that join the vertices and the orthocenter $H$. These points are commonly referred to as the Euler points. +\href{https://mathworld.wolfram.com/Nine-PointCircle.html}{Weisstein, Eric W. "Nine-Point Circle." From MathWorld--A Wolfram Web Resource.} + +\vspace{6pt} +There are several ways of obtaining the Euler circle. The first would be to use an attribute of the triangle to determine the centre. This centre is defined by |z.N = T.eulercenter|. Next, the circle passes through the midpoint of one of the sides. IF this circle is useful later on, it is best to define it using the \code{euler\_circle} method. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + C.euler = T : euler_circle () + z.N,z.K = get_points (C.euler) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle(N,K) + \tkzDrawPoints(A,B,C,N,K) + \tkzLabelPoints(A,B,N) + \tkzLabelPoints[above](C,K) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + C.euler = T : euler_circle () + z.N,z.K = get_points (C.euler) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle(N,K) + \tkzDrawPoints(A,B,C,N,K) + \tkzLabelPoints(A,B,N) + \tkzLabelPoints[above](C,K) + \end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_euler_circle (end) + +\subsubsection{Method \Imeth{triangle}{circum\_circle}} % (fold) +\label{ssub:method_imeth_triangle_circum_circle} + +To obtain the circumscribed circle, simply use the \code{T.circumcenter} attribute, but if it is necessary to determine the circle then the method is \code{circum\_circle}. -\subsubsection{Méthodes \Imeth{triangle}{cevian} et \Imeth{triangle}{cevian\_circle}} % (fold) -\label{ssub:method_imeth_triangle_cevian} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} - scale = 2 - z.a = point: new (1,2) - z.b = point: new (5,1) - z.c = point: new (3,5) - T = triangle: new (z.a,z.b,z.c) - z.i = T.orthocenter - T.cevian = T : cevian (z.i) - z.ta,z.tb,z.tc = get_points (T.cevian) - C.cev = T : cevian_circle (z.i) - z.w = C.cev.center + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + C.circum = T : circum_circle () + z.O,z.K = get_points (C.circum) \end{tkzelements} \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle(O,K) + \tkzDrawPoints(A,B,C,O,K) + \tkzLabelPoints(A,B,O) + \tkzLabelPoints[above](C,K) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,4) + T = triangle: new(z.A,z.B,z.C) + C.circum = T : circum_circle () + z.O,z.K = get_points (C.circum) +\end{tkzelements} + +\begin{center} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawCircle(O,K) + \tkzDrawPoints(A,B,C,O,K) + \tkzLabelPoints(A,B,O) + \tkzLabelPoints[above](C,K) +\end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_circum_circle (end) + +\subsubsection{Method \Imeth{triangle}{in\_circle}} % (fold) +\label{ssub:method_imeth_triangle_in_circle} + +An incircle is an inscribed circle of a polygon, i.e., a circle that is tangent to each of the polygon's sides. The center $I$ of the incircle is called the incenter, and the radius $r$ of the circle is called the inradius. + +The incenter is the point of concurrence of the triangle's angle bisectors. In addition, the points $M_A, M_B, and M_C$ of intersection of the incircle with the sides of $ABC$ are the polygon vertices of the pedal triangle [\ref{ssub:method_imeth_triangle_pedal}] taking the incenter as the pedal point (c.f. tangential triangle [\ref{ssub:method_imeth_triangle_medial}]). This triangle is called the contact triangle. + +[\href{https://mathworld.wolfram.com/Incircle.html}{Weisstein, Eric W. "Incircle." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} + +\begin{tkzelements} + scale = 2 + z.A = point : new (0 , 0) + z.B = point : new (5 , 0) + z.C = point : new (1 , 3) + T.ABC = triangle : new ( z.A , z.B , z.C ) + z.E = T.ABC : bisector ().pb + z.F = T.ABC : bisector (1).pb + z.G = T.ABC : bisector (2).pb + C.IH = T.ABC : in_circle () + z.I,z.H = get_points (C.IH) +\end{tkzelements} +\begin{tikzpicture}% + [ new/.style ={ color = orange }, + one/.style = { new,/tkzmkangle/size=.5 }, + two/.style = { new,/tkzmkangle/size=.6 }, + l/.style = { /tkzmkangle/arc=l }, + ll/.style = { /tkzmkangle/arc=ll }, + lll/.style = { /tkzmkangle/arc=lll }] +\tkzGetNodes +\tkzDrawPolygon(A,B,C) +\tkzDrawSegments[new](A,E B,F C,G) + \tkzDrawSegments[dashed,add=0 and .5](I,H) + \tkzDrawPoints(A,B,C,E,F,G,I) + \tkzDrawCircle(I,H) + \tkzDrawPoints(I,A,B,C,H) +\begin{scope}[one] + \tkzMarkAngles[l](B,A,E) + \tkzMarkAngles[ll](C,B,F) + \tkzMarkAngles[lll](A,C,G) +\end{scope} +\begin{scope}[two] + \tkzMarkAngles[l](E,A,C) + \tkzMarkAngles[ll](F,B,A) + \tkzMarkAngles[lll](G,C,B) +\end{scope} +\tkzLabelPoints(A,B,I) +\tkzLabelPoints[above](C,H) +\end{tikzpicture} + + + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new (0 , 0) + z.B = point : new (5 , 0) + z.C = point : new (1 , 3) + T.ABC = triangle : new(z.A,z.B,z.C) + z.E = T.ABC : bisector ().pb + z.F = T.ABC : bisector (1).pb + z.G = T.ABC : bisector (2).pb + C.IH = T.ABC : in_circle () + z.I,z.H = get_points (C.IH) +\end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tikzpicture}% + [ new/.style ={color = orange }, + one/.style = { new,/tkzmkangle/size=.5 }, + two/.style = { new,/tkzmkangle/size=.6 }, + l/.style = { /tkzmkangle/arc=l }, + ll/.style = { /tkzmkangle/arc=ll }, + lll/.style = { /tkzmkangle/arc=lll }] \tkzGetNodes -\tkzDrawPolygons(a,b,c ta,tb,tc) -\tkzDrawSegments(a,ta b,tb c,tc) -\tkzDrawPoints(a,b,c,i,ta,tb,tc) -\tkzLabelPoints(a,b,c,i) -\tkzDrawCircles(w,ta) +\tkzDrawPolygon(A,B,C) +\tkzDrawSegments[new](A,E B,F C,G) +\tkzDrawSegments[dashed,add=0 and .5](I,H) +\tkzDrawPoints(A,B,C,E,F,G,I) +\tkzDrawCircle(I,H) +\tkzDrawPoints(I,A,B,C,H) +\begin{scope}[one] + \tkzMarkAngles[l](B,A,E) + \tkzMarkAngles[ll](C,B,F) + \tkzMarkAngles[lll](A,C,G) +\end{scope} +\begin{scope}[two] + \tkzMarkAngles[l](E,A,C) + \tkzMarkAngles[ll](F,B,A) + \tkzMarkAngles[lll](G,C,B) +\end{scope} +\tkzLabelPoints(A,B,I) +\tkzLabelPoints[above](C,H) \end{tikzpicture} \end{Verbatim} \end{minipage} + + +% subsubsection method_imeth_triangle_in_circle (end) + +\subsubsection{Method \Imeth{triangle}{ex\_circle}} % (fold) +\label{ssub:method_imeth_triangle_ex__circle} + +Given a triangle, extend two sides in the direction opposite their common vertex. The circle tangent to these two lines and to the other side of the triangle is called an excircle, or sometimes an escribed circle. The center of the excircle is called the excenter and lies on the external angle bisector of the opposite angle. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} +z.A = point: new (0 , 0) +z.B = point: new (5 , 0) +z.C = point: new (-.4 , 4) +T.ABC = triangle: new (z.A,z.B,z.C) +z.I,_ = get_points(T.ABC: ex_circle ()) +z.J,_ = get_points(T.ABC: ex_circle (1)) +z.K,_ = get_points(T.ABC: ex_circle (2)) +z.Xk , +z.Yk, +z.Zk = T.ABC : projection (z.K) +z.Xi , +z.Yi, +z.Zi = T.ABC : projection (z.I) +z.Xj , +z.Yj, +z.Zj = T.ABC : projection (z.J) +\end{tkzelements} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .5 +z.A = point: new (0 , 0) +z.B = point: new (5 , 0) +z.C = point: new (-.4 , 4) +T.ABC = triangle: new (z.A,z.B,z.C) +z.I,_ = get_points(T.ABC: ex_circle ()) +z.J,_ = get_points(T.ABC: ex_circle (1)) +z.K,_ = get_points(T.ABC: ex_circle (2)) +z.Xk , +z.Yk, +z.Zk = T.ABC : projection (z.K) +z.Xi , +z.Yi, +z.Zi = T.ABC : projection (z.I) +z.Xj , +z.Yj, +z.Zj = T.ABC : projection (z.J) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawArc(K,Xk)(Yk) + \tkzDrawArc(I,Yi)(Zi) + \tkzDrawArc(J,Zj)(Yj) + \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj) + \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj) + \tkzLabelPoints(K,Xk,Yk) + \tkzLabelPoints[above](C,B,Zk,I,J) + \tkzLabelPoints[left](A) + \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B) + \end{tikzpicture} +\end{center} +\end{minipage} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawArc(K,Xk)(Yk) + \tkzDrawArc(I,Yi)(Zi) + \tkzDrawArc(J,Zj)(Yj) + \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj) + \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj) + \tkzLabelPoints(K,Xk,Yk) + \tkzLabelPoints[above](C,B,Zk,I,J) + \tkzLabelPoints[left](A) + \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B) + \end{tikzpicture} +\end{Verbatim} +\end{minipage} + +% subsubsection method_imeth_triangle_ex__circle (end) + +\subsubsection{Method \Imeth{triangle}{spieker\_circle}} % (fold) +\label{ssub:method_imeth_triangle_spieker__circle} + +In geometry, the incircle of the medial triangle of a triangle is the Spieker circle. Its center is the Spieker center. + +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = 1.5 + z.A = point: new (1,1) + z.B = point: new (5,1) + z.C = point: new (2.2,4) + T = triangle: new (z.A,z.B,z.C) + C.first_lemoine = T:spieker_circle() + z.S,z.w = get_points( C.first_lemoine ) + z.Ma,z.Mb,z.Mc = get_points(T : medial ()) + z.N = T : nagel_point () + z.Qa = midpoint(z.A,z.N) + z.Qb = midpoint(z.B,z.N) + z.Qc = midpoint(z.C,z.N) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C Qa,Qb,Qc) + \tkzDrawPolygons[red](Ma,Mb,Mc) + \tkzDrawCircles[red](S,w) + \tkzDrawSegments[dashed](N,A N,B N,C) + \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N) + \tkzLabelPoints(A,B,S,w,Mc,N) + \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc) + \end{tikzpicture} +\end{center} +\end{minipage} + \begin{minipage}{.5\textwidth} +\begin{Verbatim} \begin{tkzelements} -scale = 2 -z.a = point: new (1,2) -z.b = point: new (5,1) -z.c = point: new (3,5) -T = triangle: new (z.a,z.b,z.c) -z.i = T.orthocenter -T.cevian = T : cevian (z.i) -z.ta,z.tb,z.tc = get_points (T.cevian) -C.cev = T : cevian_circle (z.i) -z.w = C.cev.center + z.A = point: new (1,1) + z.B = point: new (5,1) + z.C = point: new (2.2,4) + T = triangle: new (z.A,z.B,z.C) + C.first_lemoine = T:spieker_circle() + z.S,z.w = get_points( C.first_lemoine ) + z.Ma,z.Mb,z.Mc = get_points(T : medial ()) + z.N = T : nagel_point () + z.Qa = midpoint(z.A,z.N) + z.Qb = midpoint(z.B,z.N) + z.Qc = midpoint(z.C,z.N) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C Qa,Qb,Qc) + \tkzDrawPolygons[red](Ma,Mb,Mc) + \tkzDrawCircles[red](S,w) + \tkzDrawSegments[dashed](N,A N,B N,C) + \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N) + \tkzLabelPoints(A,B,S,w,Mc,N) + \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} + + +% subsubsection method_imeth_triangle_spieker__circle (end) + +\subsubsection{Methods \Imeth{triangle}{cevian} and \Imeth{triangle}{cevian\_circle}} % (fold) +\label{ssub:method_imeth_triangle_cevian} + +A Cevian is a line segment which joins a vertex of a triangle with a point on the opposite side (or its extension). The condition for three general Cevians from the three vertices of a triangle to concur is known as Ceva's theorem. + +Picking a Cevian point $P$ in the interior of a triangle $ABC$ and drawing Cevians from each vertex through $P$ to the opposite side produces a set of three intersecting Cevians $APa$, $BPb$, and $CPc$ with respect to that point. The triangle $PaPbPc$ is known as the Cevian triangle of $ABC$ with respect to $P$, and the circumcircle of $PaPbPc$ is similarly known as the Cevian circle. [\href{https://mathworld.wolfram.com/CevianTriangle.html}{Weisstein, Eric W. "Cevian Triangle." From MathWorld--A Wolfram Web Resource.}] + + +\vspace{6pt} + +\begin{tkzelements} + scale = 1.25 + z.A = point: new (0,0) + z.B = point: new (4,0) + z.C = point: new (1.8,3) + T.ABC = triangle: new(z.A,z.B,z.C) + z.Q = point : new (1,-0.4) + z.P = point : new (2,1) + T.cevian = T.ABC : cevian (z.Q) + z.Qa,z.Qb,z.Qc = get_points (T.cevian) + T.cevian = T.ABC : cevian (z.P) + z.Pa,z.Pb,z.Pc = get_points (T.cevian) + C.cev = T.ABC : cevian_circle (z.P) + z.w = C.cev.center +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[cyan](A,B,C) + \tkzDrawSegments[cyan](A,Qb B,Qa) + \tkzDrawSegments[red](A,Qa B,Qb C,Q) + \tkzDrawSegments[blue](A,Pa B,Pb C,Pc) + \tkzDrawCircles(w,Pa) + \tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc) + \tkzLabelPoints(A,B,P,Q,Pc) + \tkzLabelPoints[above](C,Qc) + \tkzLabelPoints[left](Qb,Pb) + \tkzLabelPoints[right](Qa,Pa) + \end{tikzpicture} +\end{center} + + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new (0,0) + z.B = point: new (4,0) + z.C = point: new (1.8,3) + T.ABC = triangle: new(z.A,z.B,z.C) + z.Q = point : new (1,-0.4) + z.P = point : new (2,1) + T.cevian = T.ABC : cevian (z.Q) + z.Qa,z.Qb,z.Qc = get_points (T.cevian) + T.cevian = T.ABC : cevian (z.P) + z.Pa,z.Pb,z.Pc = get_points (T.cevian) + C.cev = T.ABC : cevian_circle (z.P) + z.w = C.cev.center \end{tkzelements} \begin{tikzpicture} \tkzGetNodes -\tkzDrawPolygons(a,b,c ta,tb,tc) -\tkzDrawSegments(a,ta b,tb c,tc) -\tkzDrawPoints(a,b,c,i,ta,tb,tc) -\tkzLabelPoints(a,b,c,i) -\tkzDrawCircles(w,ta) +\tkzDrawPolygons[cyan](A,B,C) +\tkzDrawSegments[cyan](A,Qb B,Qa) +\tkzDrawSegments[red](A,Qa B,Qb C,Q) +\tkzDrawSegments[blue](A,Pa B,Pb C,Pc) +\tkzDrawCircles(w,Pa) +\tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc) +\tkzLabelPoints(A,B,P,Q,Pc) +\tkzLabelPoints[above](C,Qc) +\tkzLabelPoints[left](Qb,Pb) +\tkzLabelPoints[right](Qa,Pa) \end{tikzpicture} +\end{Verbatim} \end{minipage} + % subsubsection method_imeth_triangle_cevian (end) -\subsubsection{Méthodes \Imeth{triangle}{pedal} et \Imeth{triangle}{pedal\_circle}} % (fold) +\subsubsection{Methods \Imeth{triangle}{pedal} and \Imeth{triangle}{pedal\_circle}} % (fold) \label{ssub:method_imeth_triangle_pedal} +Given a point $P$, the pedal triangle of $P$ is the triangle whose polygon vertices are the feet of the perpendiculars from $P$ to the side lines. + +\vspace{6pt} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} z.A = point: new(0,0) z.B = point: new(5,0) z.C = point: new(1.5,3) - z.O = point: new (2,1) + z.O = point: new (2,1) T.ABC = triangle: new (z.A,z.B,z.C) T.pedal = T.ABC : pedal (z.O) z.E,z.F,z.G = get_points(T.pedal) @@ -334,7 +1467,8 @@ z.w = C.cev.center \tkzDrawPolygon[red](E,F,G) \tkzDrawCircle(w,T) \tkzDrawPoints(A,B,C,E,F,G,O) - \tkzLabelPoints(A,B,C,E,F,G) + \tkzLabelPoints(A,B,G) + \tkzLabelPoints[above](C,E,F) \tkzDrawSegments(O,E O,F O,G) \end{tikzpicture} \end{Verbatim} @@ -344,7 +1478,7 @@ z.w = C.cev.center z.A = point: new(0,0) z.B = point: new(5,0) z.C = point: new(1.5,3) - z.O = point: new (2,1) + z.O = point: new (2,1) T.ABC = triangle: new (z.A,z.B,z.C) T.pedal = T.ABC : pedal (z.O) z.E,z.F,z.G = get_points(T.pedal) @@ -352,23 +1486,28 @@ z.w = C.cev.center z.w = C.pedal.center z.T = C.pedal.through \end{tkzelements} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C) - \tkzDrawPolygon[red](E,F,G) - \tkzDrawCircle(w,T) - \tkzDrawPoints(A,B,C,E,F,G,O) - \tkzLabelPoints(A,B,C,E,F,G) - \tkzDrawSegments(O,E O,F O,G) - \end{tikzpicture} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[red](E,F,G) + \tkzDrawCircle(w,T) + \tkzDrawPoints(A,B,C,E,F,G,O) + \tkzLabelPoints(A,B,G) + \tkzLabelPoints[above](C,E,F) + \tkzDrawSegments(O,E O,F O,G) + \end{tikzpicture} + \end{center} + \end{minipage} % subsubsection method_imeth_triangle_pedal (end) -\subsubsection{Méthodes \Imeth{triangle}{conway\_points} et \Imeth{triangle}{conway\_circle}} % (fold) +\subsubsection{Methods \Imeth{triangle}{conway\_points} and \Imeth{triangle}{conway\_circle}} % (fold) \label{ssub:method_imeth_triangle_conway} -En géométrie plane, le théorème du cercle de Conway stipule que lorsque les côtés se rencontrant à chaque sommet d'un triangle sont prolongés par la longueur du côté opposé, les six points d'extrémité des trois segments de droite résultants se trouvent sur un cercle dont le centre est le centre d'incidence du triangle. +In plane geometry, Conway's circle theorem states that when the sides meeting at each vertex of a triangle are extended by the length of the opposite side, the six endpoints of the three resulting line segments lie on a circle whose centre is the centre of incidence of the triangle. +\vspace{6pt} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} @@ -424,9 +1563,557 @@ En géométrie plane, le théorème du cercle de Conway stipule que lorsque les % subsubsection methode_imeth_triangle_conway (end) +\subsubsection{Methods \Imeth{triangle}{bevan\_circle} and \Imeth{triangle}{bevan\_point} } % (fold) +\label{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .5 + z.A = point: new (1,1) + z.B = point: new (6,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + C.bevan = T : bevan_circle () + z.c,z.t = get_points (C.bevan) + -- or z.c = T : bevan_point () +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawCircle(c,t) + \tkzDrawPoints(A,B,C,c,t) + \tkzLabelPoints(A,B,c,t) + \tkzLabelPoints[above](C) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale =.5 + z.A = point: new (1,1) + z.B = point: new (6,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + C.bevan = T : bevan_circle () + z.c,z.t = get_points (C.bevan) + -- or z.c = T : bevan_point () + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawCircle(c,t) + \tkzDrawPoints(A,B,C,c,t) + \tkzLabelPoints(A,B,c,t) + \tkzLabelPoints[above](C) + \end{tikzpicture} + \end{center} + +\end{minipage} + +% subsubsection methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point (end) + + + +%%%%%% Triangles %%%%% + + + +\subsubsection{Method \Imeth{triangle}{feuerbach} and method \Imeth{triangle}{feuerbach\_point}} % (fold) +\label{ssub:method_imeth_triangle_feuerbach} + +The Feuerbach triangle is the triangle formed by the three points of tangency of the nine-point circle with the excircles. (The fact that the excircles touch the nine-point circle is known as Feuerbach's theorem.) +Refer to \href{https://mathworld.wolfram.com/FeuerbachTriangle.html}{Weisstein, Eric W. "Feuerbach Triangle." From MathWorld--A Wolfram Web Resource.}. + +The exinscribed circles of a triangle are tangent to the circle of the nine points of a triangle at points which form the \code{Feuerbach} triangle ($FaFbFc$). The inscribed circle and the circle of nine points are tangent at a point called the Feurerbach point $F$. + +\vspace{6pt} +\begin{minipage}{.5\textwidth} + \begin{Verbatim} +\begin{tkzelements} + scale = .8 + z.A = point: new (0,0) + z.B = point: new (6,0) + z.C = point: new (0.8,4) + T.ABC = triangle : new ( z.A,z.B,z.C ) + z.N = T.ABC.eulercenter + z.Fa,z.Fb,z.Fc = get_points ( T.ABC : feuerbach () ) + z.F = T.ABC : feuerbach_point () + z.Ja,z.Jb,z.Jc = get_points ( T.ABC : excentral () ) + z.I = T.ABC.incenter + z.Ia,z.Ib,z.Ic = get_points (T.ABC : intouch ()) +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawPoints(Ja,Jb,Jc) +\tkzClipBB +\tkzFillCircles[green!30,,opacity=.5](N,Fa) +\tkzFillCircles[lightgray,,opacity=.5](I,F) +\tkzDrawLines[add=3 and 3](A,B A,C B,C) +\tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F) +\tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic) +\tkzLabelPoints(N,A,B,Ia,Ib,Ic) +\tkzLabelPoints[above](Fa,Fb,Fc,F,I,C) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} + + +\begin{tkzelements} + scale = .7 + z.A = point: new (0,0) + z.B = point: new (6,0) + z.C = point: new (0.8,4) + T.ABC = triangle : new ( z.A,z.B,z.C ) + z.N = T.ABC.eulercenter + z.Fa,z.Fb,z.Fc = get_points ( T.ABC : feuerbach () ) + z.F = T.ABC : feuerbach_point () + z.Ja,z.Jb,z.Jc = get_points ( T.ABC : excentral () ) + z.I = T.ABC.incenter + z.Ia,z.Ib,z.Ic = get_points (T.ABC : intouch ()) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(Ja,Jb,Jc) + \tkzClipBB + \tkzFillCircles[green!30,,opacity=.5](N,Fa) + \tkzFillCircles[lightgray,,opacity=.5](I,F) + \tkzDrawLines[add=3 and 3](A,B A,C B,C) + \tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F) + \tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic) + \tkzLabelPoints(N,A,B,Ia,Ib,Ic) + \tkzLabelPoints[above](Fa,Fb,Fc,F,I,C) + \end{tikzpicture} +\end{center} + +%subsubsection method_imeth_triangle_feuerbach (end) + + +\subsubsection{Method \Imeth{triangle}{similar}} % (fold) +\label{ssub:method_imeth_triangle_similar} + +The \code{similar} method creates a new triangle whose sides are parallel to the sides of the original triangle and pass through its vertices. + +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \begin{tkzelements} + scale =.5 + z.A = point: new (0 , 0) + z.B = point: new (6 , 0) + z.C = point: new (1.5 , 3.5) + T.ABC = triangle: new (z.A,z.B,z.C) + z.X,z.Y,z.Z = get_points ( T.ABC : similar ()) + z.H_a,z.H_b, + z.H_c = get_points (T.ABC : orthic ()) + \end{tkzelements} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C X,Y,Z) + \tkzDrawLines(A,H_a B,H_b C,H_c) + \tkzDrawPoints(A,B,C,X,Y,Z) + \tkzLabelPoints(A,B,Z) + \tkzLabelPoints[above](X,Y,C) + \end{tikzpicture} + \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale =.5 + z.A = point: new (0 , 0) + z.B = point: new (6 , 0) + z.C = point: new (1.5 , 3.5) + T.ABC = triangle: new (z.A,z.B,z.C) + z.X,z.Y,z.Z = get_points ( T.ABC : similar ()) + z.H_a,z.H_b, + z.H_c = get_points (T.ABC : orthic ()) + \end{tkzelements} +\hspace*{\fill} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C X,Y,Z) + \tkzDrawLines(A,H_a B,H_b C,H_c) + \tkzDrawPoints(A,B,C,X,Y,Z) + \tkzLabelPoints(A,B,Z) + \tkzLabelPoints[above](X,Y,C) + \end{tikzpicture} +\end{minipage} + + +% subsubsection method_imeth_triangle_similar (end) + +\subsubsection{Method \Imeth{triangle}{medial}} % (fold) +\label{ssub:method_imeth_triangle_medial} + +The triangle $MaMbMc$ formed by joining the midpoints of the sides of a triangle $ABC$. The medial triangle is sometimes also called the auxiliary triangle (Dixon 1991). +[\href{https://mathworld.wolfram.com/MedialTriangle.html}{Weisstein, Eric W. "Medial Triangle." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \begin{tkzelements} + scale = 1.25 + z.A = point: new (0,1) + z.B = point: new (6,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + T.med = T : medial () + z.Ma,z.Mb,z.Mc= get_points (T.med) + z.G = T.centroid + z.O = T.circumcenter + \end{tkzelements} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPolygons[red](Ma,Mb,Mc) + \tkzDrawSegments(A,Ma B,Mb C,Mc) + \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc) + \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G) + \tkzLabelPoints(A,B,Mc,O) + \tkzLabelPoints[above](C) + \tkzLabelPoints[left](Mb) + \tkzLabelPoints[right](Ma,G) + \tkzMarkRightAngles[fill=cyan!20, + opacity=.4](O,Ma,B O,Mb,A O,Mc,A) + \end{tikzpicture} + \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale = 1.25 + z.A = point: new (0,1) + z.B = point: new (6,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + T.med = T : medial () + z.Ma,z.Mb,z.Mc= get_points (T.med) + z.G = T.centroid + z.O = T.circumcenter + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPolygons[red](Ma,Mb,Mc) + \tkzDrawSegments(A,Ma B,Mb C,Mc) + \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc) + \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G) + \tkzLabelPoints(A,B,Mc,O) + \tkzLabelPoints[above](C) + \tkzLabelPoints[left](Mb) + \tkzLabelPoints[right](Ma,G) + \tkzMarkRightAngles[fill=cyan!20, + opacity=.4](O,Ma,B O,Mb,A O,Mc,A) + \end{tikzpicture} + \end{center} +\end{minipage} + + +% subsubsection method_imeth_triangle_medial (end) + +\subsubsection{Method \Imeth{triangle}{incentral} } % (fold) +\label{ssub:method_incentral} + +The incentral triangle $IaIbIc$ is the Cevian triangle of a triangle $ABC$ with respect to its incenter $I$. It is therefore also the triangle whose vertices are determined by the intersections of the reference triangle's angle bisectors with the respective opposite sides. +[ \href{https://mathworld.wolfram.com/IncentralTriangle.html}{Weisstein, Eric W. "Incentral Triangle." From MathWorld--A Wolfram Web Resource.} +] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.A = point: new (0 , 0) + z.B = point: new (6 , 0) + z.C = point: new (1 , 4) + T.ABC = triangle: new (z.A,z.B,z.C) + z.I = T.ABC.incenter + z.Ia,z.Ib, + z.Ic = get_points (T.ABC : incentral ()) + z.Ta,z.Tb, + z.Tc = get_points (T.ABC : intouch ()) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[dashed,red](Ia,Ib,Ic) + \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic) + \tkzDrawCircle(I,Ta) + \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc) + \tkzLabelPoints(A,B,Ic,I,Tc) + \tkzLabelPoints[above](Ia,Ta,C) + \tkzLabelPoints[above left](Ib,Tb) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + z.A = point: new (0 , 0) + z.B = point: new (6 , 0) + z.C = point: new (1 , 4) + T.ABC = triangle: new (z.A,z.B,z.C) + z.I = T.ABC.incenter + z.Ia,z.Ib, + z.Ic = get_points (T.ABC : incentral ()) + z.Ta,z.Tb, + z.Tc = get_points (T.ABC : intouch ()) + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[dashed,red](Ia,Ib,Ic) + \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic) + \tkzDrawCircle(I,Ta) + \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc) + \tkzLabelPoints(A,B,Ic,I,Tc) + \tkzLabelPoints[above](Ia,Ta,C) + \tkzLabelPoints[above left](Ib,Tb) + \end{tikzpicture} + \end{center} + +\end{minipage} + +% subsubsection method_incentral (end) + + +\subsubsection{Method \Imeth{triangle}{tangential}} % (fold) +\label{ssub:method_imeth_triangle_tangential} + +The tangential triangle is the triangle $TaTbTc$ formed by the lines tangent to the circumcircle of a given triangle DeltaABC at its vertices. It is therefore antipedal triangle of $ABC$ with respect to the circumcenter $O$. It is also anticevian triangle of $ABC$ with the symmedian point $K$ as the anticevian point (Kimberling 1998, p. 156). Furthermore, the symmedian point $K$ of $ABC$ is the Gergonne point of $TaTbTc$. + +The sides of an orthic triangle are parallel to the tangents to the circumcircle at the vertices (Johnson 1929, p. 172). This is equivalent to the statement that each line from a triangle's circumcenter to a vertex is always perpendicular to the corresponding side of the orthic triangle (Honsberger 1995, p. 22), and to the fact that the orthic and tangential triangles are homothetic. +[ \href{https://mathworld.wolfram.com/TangentialTriangle.html}{Weisstein, Eric W. "Tangential Triangle." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .75 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,3) + T = triangle: new(z.A,z.B,z.C) + z.H = T.orthocenter + z.O = T.circumcenter + z.L = T : symmedian_point () + T.orthic = T: orthic() + z.Ha, + z.Hb, + z.Hc = get_points (T.orthic) + z.Ta, + z.Tb, + z.Tc = get_points (T : tangential ()) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc) + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L) + \tkzDrawSegments[red](C,Hc B,Hb A,Ha) + \tkzDrawSegments[green](C,Tc B,Tb A,Ta) + \tkzDrawPolygon[blue](Ha,Hb,Hc) + \tkzLabelPoints(A,B,O,Tc) + \tkzLabelPoints[above](C,Tb,Ta) + \tkzLabelPoints[font=\small](Hc) + \tkzLabelPoints[font=\small,above](Ha,Hb) + \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .75 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (1,3) + T = triangle: new(z.A,z.B,z.C) + z.H = T.orthocenter + z.O = T.circumcenter + z.L = T : symmedian_point () + T.orthic = T: orthic() + z.Ha, + z.Hb, + z.Hc = get_points (T.orthic) + z.Ta, + z.Tb, + z.Tc = get_points (T : tangential ()) +\end{tkzelements} + + \begin{center} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc) + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L) + \tkzDrawSegments[red](C,Hc B,Hb A,Ha) + \tkzDrawSegments[green](C,Tc B,Tb A,Ta) + \tkzDrawPolygon[blue](Ha,Hb,Hc) + \tkzLabelPoints(A,B,O,Tc) + \tkzLabelPoints[above](C,Tb,Ta) + \tkzLabelPoints[font=\small](Hc) + \tkzLabelPoints[font=\small,above](Ha,Hb) + \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B) +\end{tikzpicture} + \end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_tangential (end) + + +\subsubsection{Method \Imeth{triangle}{symmedial}} % (fold) +\label{ssub:method_imeth_triangle_symmedial} + +The symmedial triangle $LaLbLc$ is the triangle whose vertices are the intersection points of the symmedians with the reference triangle $ABC$. + +The symmedial circle is the circumcircle of the symmedial triangle. + +The following example groups several concepts around the symmedian. As a reminder, a symmedian of a triangle is the reflection of the median with respect to the angle bisector. + +The points of contact of the symmedians with the sides of the triangle are obtained using the \code{symmedian} method. +The intersection of the symmedians is the point known as the \code{Lemoine} or \code{Symmedian} point. +You can use the triangle methods \code{lemoine\_point} or \code{symmedian\_point}. If you only need one of the lines, you can use the method \code{symmedian\_line(n)}. \(n=0\) corresponds to the line coming from the first vertex of the triangle, \(n=1\) to the second, and so on. + +In the next example, $L$ is the \code{Lemoine point} or the \code{Symmedian point}. $LaLbLc$ is the symmedian triangle.[\href{https://mathworld.wolfram.com/SymmedianPoint.html}{Weisstein, Eric W. "Symmedian Point." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 2 + z.A = point : new (0,0) + z.B = point : new (7,0) + z.C = point : new (2,3) + T.ABC = triangle : new (z.A,z.B,z.C) + z.L = T.ABC : lemoine_point () + T.SY = T.ABC : symmedian () + T.med = T.ABC : medial () + z.Ka,z.Kb,z.Kc = get_points (T.SY) + z.Ma,z.Mb,z.Mc = get_points (T.med) + L.Kb = T.ABC : symmedian_line (1) + _,z.Kb = get_points(L.Kb) + z.G = T.ABC.centroid + z.Ia,z.Ib,z.Ic = get_points ( T.ABC : incentral ()) + -- z.T = T.ABC : trilinear (0,1,1) + z.I = T.ABC.incenter +\end{tkzelements} +\begin{tikzpicture} +\tkzGetNodes +\tkzDrawPolygons(A,B,C) +\tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I) +\tkzDrawSegments[cyan](A,Ka B,Kb C,Kc) +\tkzDrawSegments[green](A,Ma B,Mb C,Mc) +\tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic) +\tkzLabelPoints[above](C,Ka,Ia,Ma) +\tkzLabelPoints[above left](Kb,Ib,Mb) +\tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} + +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = 2 + z.A = point : new (0,0) + z.B = point : new (7,0) + z.C = point : new (2,3) + T.ABC = triangle : new (z.A,z.B,z.C) + z.L = T.ABC : lemoine_point () + T.SY = T.ABC : symmedian () + T.med = T.ABC : medial () + z.Ka,z.Kb,z.Kc = get_points (T.SY) + z.Ma,z.Mb,z.Mc = get_points (T.med) + L.Kb = T.ABC : symmedian_line (1) + _,z.Kb = get_points(L.Kb) + z.G = T.ABC.centroid + z.Ia,z.Ib,z.Ic = get_points ( T.ABC : incentral ()) + -- z.T = T.ABC : trilinear (0,1,1) + z.I = T.ABC.incenter +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I) + \tkzDrawSegments[cyan](A,Ka B,Kb C,Kc) + \tkzDrawSegments[green](A,Ma B,Mb C,Mc) + \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic) + \tkzLabelPoints[above](C,Ka,Ia,Ma) + \tkzLabelPoints[above left](Kb,Ib,Mb) + \tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G) + \end{tikzpicture} +\end{center} + + +\end{minipage} + +% subsubsection method_imeth_triangle_symmedial (end) + +\subsubsection{Method \Imeth{triangle}{anti}} % (fold) +\label{ssub:method_imeth_triangle_anti} + +The anticomplementary triangle is the triangle $TaTbTc$ which has a given triangle $ABC$ as its medial triangle. It is therefore the anticevian triangle with respect to the triangle centroid G (Kimberling 1998, p. 156). [\href{https://mathworld.wolfram.com/AnticomplementaryTriangle.html}{Weisstein, Eric W. "Anticomplementary Triangle." From MathWorld--A Wolfram Web Resource.}] + +\vspace{6pt} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .6 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + T.similar = T: anti() + z.Ta, + z.Tb, + z.Tc = get_points (T.similar) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawPolygon[blue](Ta,Tb,Tc) + \tkzDrawPoints(A,B,C,Ta,Tb,Tc) + \tkzLabelPoints(A,B,Tc) + \tkzLabelPoints[above](Ta,Tb,C) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .6 + z.A = point: new (0,0) + z.B = point: new (5,0) + z.C = point: new (2,4) + T = triangle: new(z.A,z.B,z.C) + T.similar = T: anti() + z.Ta, + z.Tb, + z.Tc = get_points (T.similar) +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons[red](A,B,C) + \tkzDrawPolygon[blue](Ta,Tb,Tc) + \tkzDrawPoints(A,B,C,Ta,Tb,Tc) + \tkzLabelPoints(A,B,Tc) + \tkzLabelPoints[above](Ta,Tb,C) + \end{tikzpicture} +\end{center} + +\end{minipage} + +% subsubsection method_imeth_triangle_anti (end) + + \subsubsection{Euler line} % (fold) \label{ssub:euler_line} +The line on which the orthocenter $H$, triangle centroid $G$, circumcenter $O$, nine-point center $N$, and a number of other important triangle centers lie. +[ \href{https://mathworld.wolfram.com/EulerLine.html}{Weisstein, Eric W. "Euler Line." From MathWorld--A Wolfram Web Resource.}] + \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} @@ -468,33 +2155,38 @@ En géométrie plane, le théorème du cercle de Conway stipule que lorsque les z.P,z.Q,z.R = get_points (T.ABC: orthic()) z.K,z.I,z.J = get_points (T.ABC: medial ()) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines[blue](O,H) -\tkzDrawCircle[red](N,I) -\tkzDrawCircles[teal](O,A) -\tkzDrawSegments(A,P B,Q C,R) -\tkzDrawSegments[red](A,I B,J C,K) -\tkzDrawPolygons(A,B,C) -\tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G) -\tkzLabelPoints(A,B,C,I,J,K,P,Q,R) -\tkzLabelPoints[below](N,O,G,H) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines[blue](O,H) + \tkzDrawCircle[red](N,I) + \tkzDrawCircles[teal](O,A) + \tkzDrawSegments(A,P B,Q C,R) + \tkzDrawSegments[red](A,I B,J C,K) + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G) + \tkzLabelPoints(A,B,J,P,R) + \tkzLabelPoints[above](C,I,Q,K) + \tkzLabelPoints[below](N,O,G,H) + \end{tikzpicture} +\end{center} + \end{minipage} % subsubsection euler_line (end) \subsection{Euler ellipse} % (fold) \label{sub:euler_ellipse} +The Euler ellipse is a conic, tangent to the three sides of a triangle, with the orthocentre and the centre of the circumscribed circle as foci. Example of obtaining the Euler circle as well as the Euler ellipse. +\vspace{6pt} \begin{tkzelements} z.A = point: new (2,3.8) z.B = point: new (0 ,0) z.C = point: new (6.2 ,0) L.AB = line : new ( z.A , z.B ) T.ABC = triangle: new (z.A,z.B,z.C) -z.K = midpoint (z.B,z.C) +z.K = midpoint (z.B,z.C) E.euler = T.ABC : euler_ellipse () z.N = T.ABC.eulercenter C.euler = circle : new (z.N,z.K) @@ -512,7 +2204,7 @@ z.B = point: new (0 ,0) z.C = point: new (6.2 ,0) L.AB = line : new ( z.A , z.B ) T.ABC = triangle: new (z.A,z.B,z.C) -z.K = midpoint (z.B,z.C) +z.K = midpoint (z.B,z.C) E.euler = T.ABC : euler_ellipse () z.N = T.ABC.eulercenter C.euler = circle : new (z.N,z.K) @@ -554,21 +2246,22 @@ z.H = T.ABC.orthocenter \subsubsection{Steiner inellipse and circumellipse} % (fold) \label{ssub:steiner_inellipse_and_circumellipse} -In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" (Mathworld.com), respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle. +In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" [\href{https://mathworld.wolfram.com/SteinerInellipse.html}{Weisstein, Eric W. "Steiner Inellipse." From MathWorld--A Wolfram Web Resource.} and \href{https://mathworld.wolfram.com/SteinerCircumellipse.html}{Weisstein, Eric W. "Steiner Circumellipse." From MathWorld--A Wolfram Web Resource.}], respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle. +\vspace{6pt} \begin{minipage}{.5\textwidth} \begin{Verbatim} \begin{tkzelements} scale = .5 z.A = point: new (1 , 4) z.B = point: new (11 , 1) - z.C = point: new (5 , 12) + z.C = point: new (5 , 12) T.ABC = triangle: new(z.A,z.B,z.C) E = T.ABC: steiner_inellipse () z.G = E.center ang = math.deg(E.slope) z.F = E.Fa - z.E = E.Fb + z.E = E.Fb C = E: orthoptic_circle () z.w = C.center z.o = C.through @@ -584,13 +2277,13 @@ In this example, the inner and outer Steiner ellipses, referred to as the "inell scale = .5 z.A = point: new (1 , 4) z.B = point: new (11 , 1) -z.C = point: new (5 , 12) +z.C = point: new (5 , 12) T.ABC = triangle: new(z.A,z.B,z.C) E = T.ABC: steiner_inellipse () z.G = E.center ang = math.deg(E.slope) z.F = E.Fa -z.E = E.Fb +z.E = E.Fb C = E: orthoptic_circle () z.w = C.center z.o = C.through @@ -611,7 +2304,7 @@ z.T2 = L.T2.pb \tkzUseLua{EE.Ry},\tkzUseLua{ang}) \tkzDrawLines(F,E M,T1 M,T2) % \tkzDrawPoints(A,B,C,F,E,G,M,T1,T2) -\tkzLabelPoints[above](C,M,T1) +\tkzLabelPoints[above](C,M,T1) \tkzLabelPoints[right](T2,B) \tkzLabelPoints[below left](A,F,E,G) \end{tikzpicture} @@ -628,7 +2321,7 @@ z.T2 = L.T2.pb \tkzUseLua{EE.Ry},\tkzUseLua{ang}) \tkzDrawLines(F,E M,T1 M,T2) % \tkzDrawPoints(A,B,C,F,E,G,M,T1,T2) -\tkzLabelPoints[above](C,M,T1) +\tkzLabelPoints[above](C,M,T1) \tkzLabelPoints[right](T2,B) \tkzLabelPoints[below left](A,F,E,G) \end{tikzpicture} @@ -639,9 +2332,17 @@ z.T2 = L.T2.pb \subsection{Harmonic division and bisector} % (fold) \label{sub:harmonic_division_and_bisector} +Let four points $A$, $C$, $B$ and $D$, in this order, lying on the straight line $(d)$ and $M$ un point pris hors de $(d)$. Then, if two of the following three propositions are true, then the third is also true: + \begin{enumerate} + \item The division (A,B;C,D) is harmonic. ($CA/CB = DA/DB$) + \item $(MC)$ is the internal angle bisector of $\widehat{AMB}$. + \item $(MD) \perp (MC)$. + \end{enumerate} + + \vspace{6pt} \begin{minipage}{.4\textwidth} \begin{Verbatim} -\begin{tkzelements} +\begin{tkzelements} scale = .4 z.A = point: new (0 , 0) z.B = point: new (6 , 0) @@ -664,7 +2365,7 @@ z.T2 = L.T2.pb \end{Verbatim} \end{minipage} \begin{minipage}{.6\textwidth} -\begin{tkzelements} +\begin{tkzelements} scale =.4 z.A = point: new (0 , 0) z.B = point: new (6 , 0) @@ -684,7 +2385,7 @@ z.T2 = L.T2.pb z.E = intersection (L.LL,L.MC) z.F = intersection (L.LL,L.MD) \end{tkzelements} -\hspace{\fill} +\hspace{\fill} \begin{tikzpicture} \tkzGetNodes \tkzDrawPolygon(A,B,M) @@ -719,59 +2420,8 @@ z.T2 = L.T2.pb \end{Verbatim} % subsection harmonic_division_and_bisector (end) -\subsubsection{Method \Imeth{triangle}{cevan}} % (fold) -\label{ssub:method_imeth_triangle_cevan} - -\begin{minipage}{.5\textwidth} - \begin{Verbatim} - \begin{tkzelements} - scale = 2 - z.a = point: new (1,2) - z.b = point: new (5,1) - z.c = point: new (3,5) - T = triangle: new (z.a,z.b,z.c) - z.i = T.orthocenter - T.cevian = T : cevian (z.i) - z.ta,z.tb,z.tc = get_points (T.cevian) - C.cev = T : cevian_circle (z.i) - z.w = C.cev.center - \end{tkzelements} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygons(a,b,c ta,tb,tc) - \tkzDrawSegments(a,ta b,tb c,tc) - \tkzDrawPoints(a,b,c,i,ta,tb,tc) - \tkzLabelPoints(a,b,c,i) - \tkzDrawCircles(w,ta) - \end{tikzpicture} - \end{Verbatim} -\end{minipage} -\begin{minipage}{.5\textwidth} - \begin{tkzelements} - scale = 2 - z.a = point: new (1,2) - z.b = point: new (5,1) - z.c = point: new (3,5) - T = triangle: new (z.a,z.b,z.c) - z.i = T.orthocenter - T.cevian = T : cevian (z.i) - z.ta,z.tb,z.tc = get_points (T.cevian) - C.cev = T : cevian_circle (z.i) - z.w = C.cev.center - \end{tkzelements} - \begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygons(a,b,c ta,tb,tc) - \tkzDrawSegments(a,ta b,tb c,tc) - \tkzDrawPoints(a,b,c,i,ta,tb,tc) - \tkzLabelPoints(a,b,c,i) - \tkzDrawCircles(w,ta) - \end{tikzpicture} -\end{minipage} - - -% subsubsection method_imeth_triangle_cevan (end) -% subsection methods_of_the_class_triangle (end) -% section class_triangle (end) +% +% % subsection methods_of_the_class_triangle (end) +% % section class_triangle (end) \endinput diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex index b981ef555a..ed1ea77183 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-vectors.tex @@ -41,11 +41,11 @@ z.E = V.AE.head -- we recover the final point (head) \begin{tabular}{lll} \toprule \textbf{Attributes} & \textbf{Application}& \textbf{Example}\\ -\Iattr{vector}{tail} & |V.AB.t = z.A| & Refer to (\ref{ssub:methods}) \\ -\Iattr{vector}{head} & |V.AB.head = z.B| & Refer to (\ref{ssub:methods}) \\ +\Iattr{vector}{tail} & |V.AB.t = z.A| & [\ref{ssub:methods}]\\ +\Iattr{vector}{head} & |V.AB.head = z.B| & [\ref{ssub:methods}] \\ \Iattr{vector}{type} & |V.AB.type = 'vector'| & \\ -\Iattr{vector}{slope} & |V.AB.slope| & Refer to (\ref{ssub:example_vector_attributes})\\ -\Iattr{vector}{length} & |V.AB.norm|& Refer to (\ref{ssub:example_vector_attributes})\\ +\Iattr{vector}{slope} & |V.AB.slope| & [\ref{ssub:example_vector_attributes}] \\ +\Iattr{vector}{length} & |V.AB.norm|& [\ref{ssub:example_vector_attributes} ]\\ \Iattr{vector}{mtx} & |V.AB.mtx| & The result is a column matrix |{{V.AB.t},{V.AB.h}}|\\ \bottomrule \end{tabular} diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex index 4f46d4a127..284ecca8eb 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex @@ -2,7 +2,65 @@ \section{Examples} % (fold) \label{sec:examples} - + +\subsection{Length transfer} % (fold) +\label{sub:report_de_distance} + +Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment}) + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = .75 + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 3 , 0 ) + L.AB = line : new ( z.A , z.B ) + T.ABC = L.AB : sublime () + z.C = T.ABC.pc + z.D = z.B: north (length(z.B,z.C)) + z.E = z.B: east (L.AB.length) + z.M = L.AB.mid + z.F = z.E : north (length(z.C,z.M)) +\end{tkzelements} +\begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M) + \tkzDrawPoints(A,...,F) + \tkzLabelPoints(A,B,E,M) + \tkzLabelPoints[above right](C,D,F) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} + scale = .75 + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 3 , 0 ) + L.AB = line : new ( z.A , z.B ) + T.ABC = L.AB : sublime () + z.C = T.ABC.pc + z.D = z.B: north (length(z.B,z.C)) + z.E = z.B: east (L.AB.length) + z.M = L.AB.mid + z.F = z.E : north (length(z.C,z.M)) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M) + \tkzDrawPoints(A,...,F) + \tkzLabelPoints(A,B,E,M) + \tkzLabelPoints[above right](C,D,F) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsection report_de_distance (end) + + \subsection{D'Alembert 1} % (fold) \label{sub:d_alembert_1} @@ -54,15 +112,18 @@ z.Ip = C.Aa : internal_similitude (C.Bb) z.Jp = C.Aa : internal_similitude (C.Cc) z.Kp = C.Cc : internal_similitude (C.Bb) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[rotate=30] - \tkzGetNodes - \tkzDrawCircles(A,a B,b C,c) - \tkzDrawPoints(A,B,C,I,J,K,I',J',K') - \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K) - \tkzDrawSegments[purple](I,J' I',J I',K) - \tkzLabelPoints(I,J,K,I',J',K') -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture}[rotate=30] + \tkzGetNodes + \tkzDrawCircles(A,a B,b C,c) + \tkzDrawPoints(A,B,C,I,J,K,I',J',K') + \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K) + \tkzDrawSegments[purple](I,J' I',J I',K) + \tkzLabelPoints(I,J,K,I',J',K') + \end{tikzpicture} +\end{center} + \end{minipage} % subsection d_alembert_1 (end) @@ -110,14 +171,148 @@ z.Kp = C.Cc : internal_similitude (C.Bb) z.m,z.n = get_points (C.Bb : radical_axis (C.Cc)) \end{tkzelements} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,a B,b C,c) + \tkzDrawLines[new](i,j k,l m,n) + \end{tikzpicture} +\end{center} + +\end{minipage} +% subsection d_alembert_2 (end) + +\subsection{Altshiller} % (fold) +\label{sub:altshiller} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + z.P = point : new (0,0) + z.Q = point : new (5,0) + z.I = point : new (3,2) + C.QI = circle : new (z.Q,z.I) + C.PE = C.QI : orthogonal_from (z.P) + z.E = C.PE.through + C.QE = circle : new (z.Q,z.E) + _,z.F = intersection (C.PE,C.QE) + z.A = C.PE: point (1/9) + L.AE = line : new (z.A,z.E) + _,z.C = intersection (L.AE,C.QE) + L.AF = line : new (z.A,z.F) + L.CQ = line : new (z.C,z.Q) + z.D = intersection (L.AF,L.CQ) +\end{tkzelements} \begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(A,a B,b C,c) -\tkzDrawLines[new](i,j k,l m,n) + \tkzGetNodes + \tkzDrawCircles(P,E Q,E) + \tkzDrawLines[add=0 and 1](P,Q) + \tkzDrawLines[add=0 and 2](A,E) + \tkzDrawSegments(P,E E,F F,C A,F C,D) + \tkzDrawPoints(P,Q,E,F,A,C,D) + \tkzLabelPoints(P,Q,E,F,A,C,D) +\end{tikzpicture} +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale =.5 + z.P = point : new (0,0) + z.Q = point : new (5,0) + z.I = point : new (3,2) + C.QI = circle : new (z.Q,z.I) + C.PE = C.QI : orthogonal_from (z.P) + z.E = C.PE.through + C.QE = circle : new (z.Q,z.E) + _,z.F = intersection (C.PE,C.QE) + z.A = C.PE: point (1/9) + L.AE = line : new (z.A,z.E) + _,z.C = intersection (L.AE,C.QE) + L.AF = line : new (z.A,z.F) + L.CQ = line : new (z.C,z.Q) + z.D = intersection (L.AF,L.CQ) + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(P,E Q,E) + \tkzDrawLines[add=0 and 1](P,Q) + \tkzDrawLines[add=0 and 2](A,E) + \tkzDrawSegments(P,E E,F F,C A,F C,D) + \tkzDrawPoints(P,Q,E,F,A,C,D) + \tkzLabelPoints(P,Q,E,F,A,C,D) + \end{tikzpicture} + \end{center} +\end{minipage} +%subsection altshiller (end) + +\subsection{Lemoine} % (fold) +\label{sub:lemoine} + +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 1.25 + z.A = point: new (1,0) + z.B = point: new (5,2) + z.C = point: new (1.2,2) + T = triangle: new(z.A,z.B,z.C) + z.O = T.circumcenter + C.OA = circle: new (z.O,z.A) + L.tA = C.OA: tangent_at (z.A) + L.tB = C.OA: tangent_at (z.B) + L.tC = C.OA: tangent_at (z.C) + z.P = intersection (L.tA,T.bc) + z.Q = intersection (L.tB,T.ca) + z.R = intersection (L.tC,T.ab) +\end{tkzelements} +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon[teal](A,B,C) + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,P,Q,R) + \tkzLabelPoints(A,B,C,P,Q,R) + \tkzDrawLine[blue](Q,R) + \tkzDrawLines[red](A,P B,Q R,C) + \tkzDrawSegments(A,R C,P C,Q) \end{tikzpicture} +\end{Verbatim} + \end{minipage} -% subsection d_alembert_2 (end) +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +scale = .75 +z.A = point: new (1,0) +z.B = point: new (5,2) +z.C = point: new (1.2,2) +T = triangle: new(z.A,z.B,z.C) +z.O = T.circumcenter +C.OA = circle: new (z.O,z.A) +L.tA = C.OA: tangent_at (z.A) +L.tB = C.OA: tangent_at (z.B) +L.tC = C.OA: tangent_at (z.C) +z.R = intersection (L.tC,T.ab) +z.P = intersection (L.tA,T.bc) +z.Q = intersection (L.tB,T.ca) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture}[rotate=90] + \tkzGetNodes + \tkzDrawPolygon[teal](A,B,C) + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,P,Q,R) + \tkzLabelPoints(A,B,C,P,Q,R) + \tkzDrawLine[blue](Q,R) + \tkzDrawLines[red](A,P B,Q R,C) + \tkzDrawSegments(A,R C,P C,Q) + \end{tikzpicture} +\end{center} + +\end{minipage} +%\caption{Lemoine line} +% subsection lemoine (end) + \subsection{Alternate} % (fold) \label{sub:alternate} @@ -148,7 +343,7 @@ z.Kp = C.Cc : internal_similitude (C.Bb) \end{tikzpicture} \end{Verbatim} \end{minipage} -\hspace*{\fill} + \begin{minipage}[t]{.5\textwidth}\vspace{0pt}% \begin{tkzelements} z.A = point: new (0 , 0) @@ -161,21 +356,94 @@ z.D = intersection (L.AI,T.bc) L.LLC = T.ab: ll_from (z.C) z.E = intersection (L.AI,L.LLC) \end{tkzelements} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawLine[purple](C,E) -\tkzDrawSegment[purple](A,E) -\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) -\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D) -\tkzDrawPoints(A,...,E) -\tkzLabelPoints(A,B) -\tkzLabelPoints[above](C,D,E) -\tkzMarkSegments(A,C C,E) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawLine[purple](C,E) + \tkzDrawSegment[purple](A,E) + \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) + \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D) + \tkzDrawPoints(A,...,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) + \tkzMarkSegments(A,C C,E) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection alternate (end) +\subsection{Method \Imeth{circle}{common tangent}: orthogonality} % (fold) +\label{sub:common_tangent_orthogonality} +For two circles to be orthogonal, it is necessary and sufficient for a secant passing through one of their common points to be seen from the other common point at a right angle. + +\begin{Verbatim} +\begin{tkzelements} + z.A = point : new ( 0 , 0 ) + z.B = point : new ( 4 , 2 ) + L.AB = line : new ( z.A , z.B ) + z.a = point : new ( 1 , 2 ) + C.Aa = circle : new (z.A,z.a) + C.BC = C.Aa : orthogonal_from (z.B) + z.C,z.D = intersection (C.Aa,C.BC) + C.AC = circle : new (z.A,z.C) + z.T,z.Tp = C.AC : common_tangent (C.BC) + L.TTp = line : new (z.T,z.Tp) + z.M = C.AC : point (0.45) + L.MC =line : new (z.M,z.C) + z.Mp = intersection (L.MC, C.BC) + L.mm = L.TTp : ll_from (z.C) + _,z.M = intersection (L.mm, C.AC) + z.Mp = intersection (L.mm, C.BC) +\end{tkzelements} + +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,C B,C) + \tkzDrawSegments(M,M' A,C B,C A,B) + \tkzDrawSegments[gray](D,M D,M' T,T') + \tkzDrawPoints(A,B,C,D,M,M',T,T') + \tkzLabelPoints(A,B,D,M) + \tkzLabelPoints[above](C,M',T,T') + \tkzMarkRightAngles(M',D,M A,C,B) +\end{tikzpicture} +\end{Verbatim} + +\begin{tkzelements} +z.A = point : new ( 0 , 0 ) +z.B = point : new ( 4 , 2 ) +L.AB = line : new ( z.A , z.B ) +z.a = point : new ( 1 , 2 ) +C.Aa = circle : new (z.A,z.a) +C.BC = C.Aa : orthogonal_from (z.B) +z.C,z.D = intersection (C.Aa,C.BC) +C.AC = circle : new (z.A,z.C) +z.T,z.Tp = C.AC : common_tangent (C.BC) +L.TTp = line : new (z.T,z.Tp) +z.M = C.AC : point (0.45) +L.MC =line : new (z.M,z.C) +z.Mp = intersection (L.MC, C.BC) +L.mm = L.TTp : ll_from (z.C) +_,z.M = intersection (L.mm, C.AC) +z.Mp = intersection (L.mm, C.BC) +\end{tkzelements} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,C B,C) + \tkzDrawSegments(M,M' A,C B,C A,B) + \tkzDrawSegments[gray](D,M D,M' T,T') + \tkzDrawPoints(A,B,C,D,M,M',T,T') + \tkzLabelPoints(A,B,D,M) + \tkzLabelPoints[above](C,M',T,T') + \tkzMarkRightAngles(M',D,M A,C,B) + \end{tikzpicture} +\end{center} +% subsection common_tangent_orthogonality (end) + + \subsection{Apollonius circle} % (fold) \label{sub:apollonius_circle} @@ -215,23 +483,26 @@ scale=.75 \end{Verbatim} \end{minipage} \begin{minipage}{.5\textwidth} - \hspace*{\fill} - \begin{tikzpicture}[scale=.8] - \tkzGetNodes - \tkzDrawSegment[add=0 and 1](A,M) - \tkzDrawSegments[purple](M,C M,D) - \tkzDrawCircle[purple](O,C) - \tkzDrawSegments(A,B B,M D,B) - \tkzDrawPoints(A,B,M,C,D) - \tkzLabelPoints[below right](A,B,C,D) - \tkzLabelPoints[above](M) - \tkzFillAngles[opacity=.4,cyan!20](A,M,B) - \tkzFillAngles[opacity=.4,purple!20](B,M,E) - \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D) - \tkzMarkAngles[mark=|](A,M,C C,M,B) - \tkzMarkAngles[mark=||](B,M,D D,M,E) - \end{tikzpicture} - \hspace*{\fill} + + \begin{center} + \begin{tikzpicture}[scale=.8] + \tkzGetNodes + \tkzDrawSegment[add=0 and 1](A,M) + \tkzDrawSegments[purple](M,C M,D) + \tkzDrawCircle[purple](O,C) + \tkzDrawSegments(A,B B,M D,B) + \tkzDrawPoints(A,B,M,C,D) + \tkzLabelPoints[below right](A,B,C,D) + \tkzLabelPoints[above](M) + \tkzFillAngles[opacity=.4,cyan!20](A,M,B) + \tkzFillAngles[opacity=.4,purple!20](B,M,E) + \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D) + \tkzMarkAngles[mark=|](A,M,C C,M,B) + \tkzMarkAngles[mark=||](B,M,D D,M,E) + \end{tikzpicture} + \end{center} + + \end{minipage} @@ -319,20 +590,23 @@ Remark : The circle can be obtained with: _,z.N = intersection (C.GA , C.OC) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,M) -\tkzDrawCircles[purple](O,C G,A) -\tkzDrawSegments[purple](M,D) -\tkzDrawSegments(D,B O,G M,C) -\tkzDrawSegments[red,dashed](M,N M,O M,G) -\tkzDrawPoints(A,B,M,C,D,N,O,G) -\tkzLabelPoints[below right](A,B,C,D,N,O,G) -\tkzLabelPoints[above](M) -\tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,M) + \tkzDrawCircles[purple](O,C G,A) + \tkzDrawSegments[purple](M,D) + \tkzDrawSegments(D,B O,G M,C) + \tkzDrawSegments[red,dashed](M,N M,O M,G) + \tkzDrawPoints(A,B,M,C,D,N,O,G) + \tkzLabelPoints[below right](A,B,C,D,N,O,G) + \tkzLabelPoints[above](M) + \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D) + \end{tikzpicture} +\end{center} + + % subsection apollonius_and_circle_circumscribed (end) \subsection{Apollonius circles in a triangle} % (fold) @@ -414,19 +688,22 @@ L.Bpt = line: new (z.Bp,z.T) z.O3 = L.Bpt.mid \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B') -\tkzDrawSegments[new](B,S C,T A,R) -\tkzDrawPolygon(A,B,C) -\tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3) -\tkzLabelPoints(A,B,C,A',B',C',O,I) -\tkzLabelPoints(O1,O2,O3) -\tkzDrawCircle[purple](O,A) -\tkzDrawLine(O1,O2) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B') + \tkzDrawSegments[new](B,S C,T A,R) + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3) + \tkzLabelPoints(A,B,C,A',B',C',O,I) + \tkzLabelPoints(O1,O2,O3) + \tkzDrawCircle[purple](O,A) + \tkzDrawLine(O1,O2) + \end{tikzpicture} +\end{center} + + Same result using the function |T.ABC.ab : apollonius (k) | @@ -493,15 +770,18 @@ Same result using the function |T.ABC.ab : apollonius (k) | C = circle: new (z.O_2,z.A) z.C,z.D = intersection (L ,C) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O_1,A O_2,A) -\tkzDrawSegments[new](O_1,A E,F C,D) -\tkzDrawSegments[purple](A,E A,F) -\tkzDrawPoints(A,O_1,O_2,E,F,C,D) -\tkzLabelPoints(A,O_1,O_2,E,F,C,D) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O_1,A O_2,A) + \tkzDrawSegments[new](O_1,A E,F C,D) + \tkzDrawSegments[purple](A,E A,F) + \tkzDrawPoints(A,O_1,O_2,E,F,C,D) + \tkzLabelPoints(A,O_1,O_2,E,F,C,D) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection archimedes (end) @@ -615,30 +895,156 @@ Same result using the function |T.ABC.ab : apollonius (k) | z.O_5 = T.CP1P2.circumcenter \end{tkzelements} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSemiCircles[teal](O_0,B) + \tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B) + \tkzDrawCircle[fill=green!10](O_4,P_0) + \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C) + \tkzDrawSegments(A,B O_0,P' B,P A,Q) + \tkzDrawSegments(P,B Q,O_2 P,O_1) + \tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C) + \tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S) + \tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P') + \tkzLabelPoints[above](Q,P) + \tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S) + \begin{scope}[font=\scriptsize] + \tkzLabelCircle[above](O_1,C)(120){$(\beta)$} + \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$} + \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$} + \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$} + \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$} + \end{scope} + \end{tikzpicture} +\end{center} + +% subsection bankoff_circle (end) + +\subsection{Symmedian property} % (fold) +\label{sub:example_symmedian_property} + +$L$ is the symmedian point or lemoine point. $\dfrac{CL}{CLc} = \dfrac{a^2+b^2}{a^2+b^2+c^2}$ + +\vspace{6pt} +\begin{minipage}{.5\textwidth} + \begin{Verbatim} + \begin{tkzelements} + scale = 1.5 + z.A = point : new (1,2) + z.B = point : new (5,1) + z.C = point : new (3,5) + T.ABC = triangle : new (z.A,z.B,z.C) + T.SY = T.ABC : symmedian () + z.La,z.Lb,z.Lc = get_points (T.SY) + k = (T.ABC.a*T.ABC.a + + T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a + + T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c) + L.SY = line : new (z.C,z.Lc) + z.L = L.SY : point (k) + \end{tkzelements} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,L,Lc) + \tkzDrawPoints[red](L) + \tkzDrawSegments[cyan](C,Lc) + \tkzLabelPoints(A,B,Lc) + \tkzLabelPoints[above](C) + \tkzLabelPoints[left](L) + \tkzLabelSegment(B,C){$a$} + \tkzLabelSegment(A,C){$b$} + \tkzLabelSegment(A,B){$ca$} + \end{tikzpicture} + \end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} + \begin{tkzelements} + scale = 1.5 + z.A = point : new (1,2) + z.B = point : new (5,1) + z.C = point : new (3,5) + T.ABC = triangle : new (z.A,z.B,z.C) + T.SY = T.ABC : symmedian () + z.La,z.Lb,z.Lc = get_points (T.SY) + k = (T.ABC.a*T.ABC.a + + T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a + + T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c) + L.SY = line : new (z.C,z.Lc) + z.L = L.SY : point (k) + \end{tkzelements} + \begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,L,Lc) + \tkzDrawPoints[red](L) + \tkzDrawSegments[cyan](C,Lc) + \tkzLabelPoints(A,B,Lc) + \tkzLabelPoints[above](C) + \tkzLabelPoints[left](L) + \tkzLabelSegment(B,C){$a$} + \tkzLabelSegment(A,C){$b$} + \tkzLabelSegment(A,B){$ca$} + \end{tikzpicture} + \end{center} +\end{minipage} + + +% subsection example_symmedian_property (end) + +\subsection{Example: Cevian with orthocenter} % (fold) +\label{sub:example_cevian_with_orthocenter} +\begin{minipage}{.5\textwidth} +\begin{Verbatim} +\begin{tkzelements} + scale = 1.5 + z.a = point: new (1,2) + z.b = point: new (5,1) + z.c = point: new (3,5) + T = triangle: new (z.a,z.b,z.c) + z.i = T.orthocenter + T.cevian = T : cevian (z.i) + z.ta,z.tb,z.tc = get_points (T.cevian) + C.cev = T : cevian_circle (z.i) + z.w = C.cev.center +\end{tkzelements} \begin{tikzpicture} -\tkzGetNodes -\tkzDrawSemiCircles[teal](O_0,B) -\tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B) -\tkzDrawCircle[fill=green!10](O_4,P_0) -\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C) -\tkzDrawSegments(A,B O_0,P' B,P A,Q) -\tkzDrawSegments(P,B Q,O_2 P,O_1) -\tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C) -\tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S) -\tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P') -\tkzLabelPoints[above](Q,P) -\tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S) -\begin{scope}[font=\scriptsize] - \tkzLabelCircle[above](O_1,C)(120){$(\beta)$} - \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$} - \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$} - \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$} - \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$} -\end{scope} + \tkzGetNodes + \tkzDrawPolygons(a,b,c ta,tb,tc) + \tkzDrawSegments(a,ta b,tb c,tc) + \tkzDrawPoints(a,b,c,i,ta,tb,tc) + \tkzLabelPoints(a,b,c,i) + \tkzDrawCircles(w,ta) \end{tikzpicture} -\hspace*{\fill} -% subsection bankoff_circle (end) +\end{Verbatim} +\end{minipage} +\begin{minipage}{.5\textwidth} +\begin{tkzelements} +scale = 1.5 +z.a = point: new (1,2) +z.b = point: new (5,1) +z.c = point: new (3,5) +T = triangle: new (z.a,z.b,z.c) +z.i = T.orthocenter +T.cevian = T : cevian (z.i) +z.ta,z.tb,z.tc = get_points (T.cevian) +C.cev = T : cevian_circle (z.i) +z.w = C.cev.center +\end{tkzelements} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(a,b,c ta,tb,tc) + \tkzDrawSegments(a,ta b,tb c,tc) + \tkzDrawPoints(a,b,c,i,ta,tb,tc) + \tkzLabelPoints(a,b,c,i) + \tkzDrawCircles(w,ta) + \end{tikzpicture} +\end{center} +\end{minipage} + +% subsection example_cevian_with_orthocenter (end) \subsection{Excircles} % (fold) \label{sub:excircles} @@ -693,73 +1099,33 @@ Same result using the function |T.ABC.ab : apollonius (k) | z.G = intersection (la,lb) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPoints[new](J_a,J_b,J_c) -\tkzClipBB -\tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c) -\tkzDrawLines[add=1 and 1](A,B B,C C,A) -\tkzDrawSegments[new](A,T_a B,T_b C,T_c) -\tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c) -\tkzDrawPolygon(A,B,C) -\tkzDrawPolygon[new](T_a,T_b,T_c) -\tkzDrawPoints(A,B,C,K) -\tkzDrawPoints[new](T_a,T_b,T_c) -\tkzLabelPoints[below left](A) -\tkzLabelPoints[below](B) -\tkzLabelPoints[above](C) -\tkzLabelPoints[new,below left](T_b) -\tkzLabelPoints[new,below right](T_c) -\tkzLabelPoints[new,right=6pt](T_a) -\tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A) -\end{tikzpicture} -\hspace*{\fill} -% subsection excircles (end) +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints[new](J_a,J_b,J_c) + \tkzClipBB + \tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c) + \tkzDrawLines[add=1 and 1](A,B B,C C,A) + \tkzDrawSegments[new](A,T_a B,T_b C,T_c) + \tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c) + \tkzDrawPolygon(A,B,C) + \tkzDrawPolygon[new](T_a,T_b,T_c) + \tkzDrawPoints(A,B,C,K) + \tkzDrawPoints[new](T_a,T_b,T_c) + \tkzLabelPoints[below left](A) + \tkzLabelPoints[below](B) + \tkzLabelPoints[above](C) + \tkzLabelPoints[new,below left](T_b) + \tkzLabelPoints[new,below right](T_c) + \tkzLabelPoints[new,right=6pt](T_a) + \tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A) + \end{tikzpicture} +\end{center} + + +% subsection excircles (end) -\subsection{Orthogonal circle through} % (fold) -\label{sub:orthogonal_circle_through} -\begin{minipage}{.5\textwidth} -\begin{Verbatim} -\begin{tkzelements} - z.O = point: new (0,1) - z.A = point: new (1,0) - z.z1 = point: new (-1.5,-1.5) - z.z2 = point: new (2.5,-1.25) - C.OA = circle: new (z.O,z.A) - C = C.OA: orthogonal_through (z.z1,z.z2) - z.c = C.center -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircle(O,A) - \tkzDrawCircle[new](c,z1) - \tkzDrawPoints[new](O,A,z1,z2,c) - \tkzLabelPoints[right](O,A,z1,z2,c) -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}{.5\textwidth}\begin{tkzelements} - z.O = point: new (0,1) - z.A = point: new (1,0) - z.z1 = point: new (-1.5,-1.5) - z.z2 = point: new (2.5,-1.25) - C.OA = circle: new (z.O,z.A) - C = C.OA: orthogonal_through (z.z1,z.z2) - z.c = C.center -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(O,A) -\tkzDrawCircle[orange](c,z1) -\tkzDrawPoints[orange](O,A,z1,z2,c) -\tkzLabelPoints[right](O,A,z1,z2,c) -\end{tikzpicture} -\hspace*{\fill} -\end{minipage} -% subsection orthogonal_circle_through (end) \subsection{Divine ratio} % (fold) \label{sub:divine_ratio} @@ -826,16 +1192,19 @@ L.BG = line: new (z.B,z.G) z.L = intersection (L.AR,L.BG) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygons(A,C,E,F A,B,G,H) -\tkzDrawCircles(O_1,C O_2,B O_0,B) -\tkzDrawSegments(H,C B,K A,L) -\tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L) -\tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,C,E,F A,B,G,H) + \tkzDrawCircles(O_1,C O_2,B O_0,B) + \tkzDrawSegments(H,C B,K A,L) + \tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L) + \tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L) + \end{tikzpicture} +\end{center} + + % subsection divine_ratio (end) \subsection{Director circle} % (fold) @@ -893,19 +1262,22 @@ z.J = L.J.pb z.K = L.K.pb \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPoints(F1,F2,O) -\tkzDrawCircles[teal](O,P) -\tkzDrawPolygon(H,O,A,P) -\tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0) -\tkzDrawSegments[orange](O,P O,L L,J L,K) -\tkzDrawPoints(F1,F2,O,H,A,P,L,J,K) -\tkzLabelPoints(F1,F2,O,H,A,P,L,J,K) -\tkzLabelPoints[above](L) -\tkzMarkRightAngles(A,P,H J,L,K) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(F1,F2,O) + \tkzDrawCircles[teal](O,P) + \tkzDrawPolygon(H,O,A,P) + \tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0) + \tkzDrawSegments[orange](O,P O,L L,J L,K) + \tkzDrawPoints(F1,F2,O,H,A,P,L,J,K) + \tkzLabelPoints(F1,F2,O,H,A,P,L,J,K) + \tkzLabelPoints[above](L) + \tkzMarkRightAngles(A,P,H J,L,K) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection director_circle (end) @@ -961,18 +1333,21 @@ z.C = intersection (L.EG,L.AB) z.O = C.AB: antipode (z.B) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawArc[delta=5](O,B)(G) - \tkzDrawCircles(A,B B,A) - \tkzDrawSegments(A,E B,E O,I) - \tkzDrawSegments[purple](J,E A,G G,I K,G E,G) - \tkzMarkSegments[mark=s||](A,E B,E O,A) - \tkzDrawPoints(A,B,C,E,I,J,G,O,K) - \tkzLabelPoints(A,B,C,E,I,J,G,O,K) -\end{tikzpicture} - \hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawArc[delta=5](O,B)(G) + \tkzDrawCircles(A,B B,A) + \tkzDrawSegments(A,E B,E O,I) + \tkzDrawSegments[purple](J,E A,G G,I K,G E,G) + \tkzMarkSegments[mark=s||](A,E B,E O,A) + \tkzDrawPoints(A,B,C,E,I,J,G,O,K) + \tkzLabelPoints(A,B,C,E,I,J,G,O,K) + \end{tikzpicture} +\end{center} + + % subsection gold_division (end) \subsection{Ellipse} % (fold) @@ -1014,15 +1389,17 @@ b = E.Ry slope = math.deg(E.slope) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles[teal](C,A) -\tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope}) -\tkzDrawPoints(C,A,B,b) -\tkzLabelPoints(C,A,B) -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles[teal](C,A) + \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope}) + \tkzDrawPoints(C,A,B,b) + \tkzLabelPoints(C,A,B) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsection ellipse (end) @@ -1060,12 +1437,15 @@ z.V = E : point (0) z.CoV = E : point (math.pi/2) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[gridded] -\tkzGetNodes -\tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) -\tkzDrawPoints(C,V,CoV) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture}[gridded] + \tkzGetNodes + \tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) + \tkzDrawPoints(C,V,CoV) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection ellipse_with_radii (end) @@ -1122,15 +1502,18 @@ z.F = L.ta.pb z.G = L.tb.pb \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPoints(A,B,C,K,F,G,V,cV) - \tkzLabelPoints(A,B,C,K,F,G,V,cV) + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,B,C,K,F,G,V,cV) + \tkzLabelPoints(A,B,C,K,F,G,V,cV) \tkzDrawEllipse[teal](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) - \tkzDrawLines(K,F K,G) -\end{tikzpicture} - \hspace*{\fill} + \tkzDrawLines(K,F K,G) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsection ellipse_with_foci (end) @@ -1184,19 +1567,21 @@ L.Ow = line : new (z.O,z.w) _,z.E = intersection (L.Ow, C.OA) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawArc(J,X)(Y) -\tkzDrawCircles(I,H O,A) -\tkzDrawCircle[red](w,I) -\tkzDrawLines(Y,C A,B X,C E,w E,B) -\tkzDrawSegments[blue](J,C J,K I,H I,O w,B) -\tkzDrawPoints(A,B,C,I,J,E,w,H,K,O) -\tkzLabelPoints(A,B,C,J,I,w,H,K,E,O) -\tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J) -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawArc(J,X)(Y) + \tkzDrawCircles(I,H O,A) + \tkzDrawCircle[red](w,I) + \tkzDrawLines(Y,C A,B X,C E,w E,B) + \tkzDrawSegments[blue](J,C J,K I,H I,O w,B) + \tkzDrawPoints(A,B,C,I,J,E,w,H,K,O) + \tkzLabelPoints(A,B,C,J,I,w,H,K,E,O) + \tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsection euler_relation (end) @@ -1242,20 +1627,23 @@ z.D = intersection (T.ext.ab,T.ABC.ab) z.E = z.C: symmetry (z.B) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawLine[purple,add=0 and .5](B,C) -\tkzDrawSegment[purple](A,D) -\tkzDrawSegment[orange](C,D) -\tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D) -\tkzMarkAngles[mark=|](D,C,A E,C,D) -\tkzDrawPoints(A,...,D) -\tkzLabelPoints[above](C) -\tkzLabelPoints(A,B,D) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawLine[purple,add=0 and .5](B,C) + \tkzDrawSegment[purple](A,D) + \tkzDrawSegment[orange](C,D) + \tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D) + \tkzMarkAngles[mark=|](D,C,A E,C,D) + \tkzDrawPoints(A,...,D) + \tkzLabelPoints[above](C) + \tkzLabelPoints(A,B,D) + \end{tikzpicture} +\end{center} + + \end{minipage} % subsection external_angle (end) @@ -1304,19 +1692,22 @@ L.LL = T.ab: ll_from (z.C) L.AD = line: new (z.A,z.D) z.E = intersection (L.LL,L.AD) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawLine[purple](C,E) -\tkzDrawSegment[purple](A,E) -\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) -\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D) -\tkzDrawPoints(A,...,E) -\tkzLabelPoints(A,B) -\tkzLabelPoints[above](C,D,E) -\tkzMarkSegments(A,C C,E) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawLine[purple](C,E) + \tkzDrawSegment[purple](A,E) + \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) + \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D) + \tkzDrawPoints(A,...,E) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C,D,E) + \tkzMarkSegments(A,C C,E) + \end{tikzpicture} +\end{center} + \end{minipage} %subsection internal_angle (end) @@ -1392,18 +1783,20 @@ L.LH = line: new (z.L,z.H) z.F = intersection (L.LH,C.IH) -- feuerbach \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[rotate=90] -\tkzGetNodes -\tkzDrawLine(L,F) -\tkzDrawCircle[red](N,A') -\tkzDrawCircle[blue](I,H) -\tkzDrawCircles[teal](O,A L,C') -\tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q) -\tkzDrawPolygons(A,B,C A',B',C') -\tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I) -\tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture}[rotate=90] + \tkzGetNodes + \tkzDrawLine(L,F) + \tkzDrawCircle[red](N,A') + \tkzDrawCircle[blue](I,H) + \tkzDrawCircles[teal](O,A L,C') + \tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q) + \tkzDrawPolygons(A,B,C A',B',C') + \tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I) + \tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection nine_points (end) @@ -1448,15 +1841,17 @@ L.AK = line: new (z.Y,z.K) z.C = intersection (L.AK,L.AB) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines(A,B X,K) -\tkzDrawLine[teal](Y,K) -\tkzDrawPoints(A,B,C,X,Y,M,K) -\tkzDrawArc[delta=20](M,A)(K) -\tkzLabelPoints(A,B,C) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B X,K) + \tkzDrawLine[teal](Y,K) + \tkzDrawPoints(A,B,C,X,Y,M,K) + \tkzDrawArc[delta=20](M,A)(K) + \tkzLabelPoints(A,B,C) + \end{tikzpicture} +\end{center} + \end{minipage} %subsection gold_ratio_with_segment (end) @@ -1502,13 +1897,15 @@ L.AB = line: new (z.A,z.B) z.O_0 = L.AB.mid \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x) -\tkzDrawPoints(A,C,B,O_1,O_2,O_0,x) -\tkzLabelPoints[below right](A,C,B) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x) + \tkzDrawPoints(A,C,B,O_1,O_2,O_0,x) + \tkzLabelPoints[below right](A,C,B) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection gold_arbelos (end) @@ -1554,15 +1951,16 @@ z.O_0 = L.AB.mid L.GF = line :new (z.G,z.F) z.C = intersection (L.GF,L.AB) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D) - \tkzDrawPoints(A,B,G,E,F,C,D) - \tkzLabelPoints(A,B,G,E,F,C,D) - \tkzMarkSegments(F,B B,E) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D) + \tkzDrawPoints(A,B,G,E,F,C,D) + \tkzLabelPoints(A,B,G,E,F,C,D) + \tkzMarkSegments(F,B B,E) + \end{tikzpicture} +\end{center} \end{minipage} % subsection harmonic_division_v1 (end) @@ -1616,13 +2014,15 @@ L.GX = line: new (z.G,z.X) z.C = intersection (L.GX,L.AB) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C) -\tkzDrawPoints(A,...,G,X) -\tkzLabelPoints(A,...,G,X) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C) + \tkzDrawPoints(A,...,G,X) + \tkzLabelPoints(A,...,G,X) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection harmonic_division_v2 (end) @@ -1666,390 +2066,21 @@ z.Q = intersection (L.AC,L.PX) z.R = intersection (L.BC,L.PX) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawLine[new](P,R) -\tkzDrawLines(P,B A,C B,C) -\tkzDrawPoints(P,Q,R,A,B,C) -\tkzLabelPoints(A,B,C,P,Q,R) -\end{tikzpicture} -\hspace*{\fill} -\end{minipage} -% subsection menelaus (end) - -\subsection{Radical axis v1} % (fold) -\label{sub:radical_axis_v1} - -\begin{Verbatim} -\begin{tkzelements} -scale = .75 -z.X = point : new (0,0) -z.B = point : new (2,2) -z.Y = point : new (7,1) -z.Ap = point : new (8,-1) -L.XY = line : new (z.X,z.Y) -C.XB = circle : new (z.X,z.B) -C.YAp = circle : new (z.Y,z.Ap) -z.E,z.F = get_points (C.XB : radical_axis (C.YAp)) -z.A = C.XB : point (0.4) -T.ABAp = triangle: new (z.A,z.B,z.Ap) -z.O = T.ABAp.circumcenter -C.OAp = circle : new (z.O,z.Ap) -_,z.Bp = intersection (C.OAp,C.YAp) -L.AB = line : new (z.A,z.B) -L.ApBp = line : new (z.Ap,z.Bp) -z.M = intersection (L.AB,L.ApBp) -z.H = L.XY : projection (z.M) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(X,B Y,A') - \tkzDrawArc[dashed,delta=30](O,A')(A) - \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F) - \tkzDrawLines[red](A,M A',M X,Y E,F) - \tkzDrawLines[red,add=1 and 3](M,H) -\end{tikzpicture} -\end{Verbatim} - -\begin{tkzelements} -scale = .75 -z.X = point : new (0,0) -z.B = point : new (2,2) -z.Y = point : new (7,1) -z.Ap = point : new (8,-1) -L.XY = line : new (z.X,z.Y) -C.XB = circle : new (z.X,z.B) -C.YAp = circle : new (z.Y,z.Ap) -z.E,z.F = get_points (C.XB : radical_axis (C.YAp)) -z.A = C.XB : point (0.4) -T.ABAp = triangle: new (z.A,z.B,z.Ap) -z.O = T.ABAp.circumcenter -C.OAp = circle : new (z.O,z.Ap) -_,z.Bp = intersection (C.OAp,C.YAp) -L.AB = line : new (z.A,z.B) -L.ApBp = line : new (z.Ap,z.Bp) -z.M = intersection (L.AB,L.ApBp) -z.H = L.XY : projection (z.M) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(X,B Y,A') -\tkzDrawArc[dashed,delta=30](O,A')(A) -\tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F) -\tkzDrawLines[red](A,M A',M X,Y E,F) -\tkzDrawLines[red,add=1 and 3](M,H) -\end{tikzpicture} -% subsection radical_axis_v1 (end) - -\subsection{Radical axis v2} % (fold) -\label{sub:radical_axis_v2} - -\begin{Verbatim} -\begin{tkzelements} -scale = 1.25 -z.O = point : new (-1,0) -z.Op = point : new (4,-1) -z.B = point : new (0,2) -z.D = point : new (4,0) -C.OB = circle : new (z.O,z.B) -C.OpD = circle : new (z.Op,z.D) -L.EF = C.OB : radical_axis (C.OpD) -z.E,z.F = get_points (L.EF) -z.M = L.EF : point (.75) -L.MT,L.MTp = C.OB : tangent_from (z.M) -_,z.T = get_points (L.MT) -_,z.Tp = get_points (L.MTp) -L.MK,L.MKp = C.OpD : tangent_from (z.M) -_,z.K = get_points (L.MK) -_,z.Kp = get_points (L.MKp) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(O,B O',D) - \tkzDrawLine(E,F) - \tkzDrawLine[add=.5 and .5](O,O') - \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K') - \tkzDrawCircle(M,T) - \tkzDrawPoints(O,O',T,M,T',K,K') - \tkzLabelPoints(O,O',T,T',K,K',M) -\end{tikzpicture} -\end{Verbatim} - -\begin{tkzelements} -scale =1.25 -z.O = point : new (-1,0) -z.Op = point : new (4,-1) -z.B = point : new (0,2) -z.D = point : new (4,0) -C.OB = circle : new (z.O,z.B) -C.OpD = circle : new (z.Op,z.D) -L.EF = C.OB : radical_axis (C.OpD) -z.E,z.F = get_points (L.EF) -z.M = L.EF : point (.75) -L.MT,L.MTp = C.OB : tangent_from (z.M) -_,z.T = get_points (L.MT) -_,z.Tp = get_points (L.MTp) -L.MK,L.MKp = C.OpD : tangent_from (z.M) -_,z.K = get_points (L.MK) -_,z.Kp = get_points (L.MKp) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O,B O',D) -\tkzDrawLine(E,F) -\tkzDrawLine[add=.5 and .5](O,O') -\tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K') -\tkzDrawCircle(M,T) -\tkzDrawPoints(O,O',T,M,T',K,K') -\tkzLabelPoints(O,O',T,T',K,K',M) -\end{tikzpicture} -\hspace*{\fill} -% subsection radical_axis_v2 (end) - -\subsection{Radical axis v3} % (fold) -\label{sub:radical_axis_v3} - -\begin{Verbatim} - \begin{tkzelements} - z.O = point : new (0,0) - z.B = point : new (4,0) - z.Op = point : new (6,0) - C.OB = circle : new (z.O,z.B) - C.OpB = circle : new (z.Op,z.B) - L.EF = C.OB : radical_axis (C.OpB) - z.E,z.F = get_points(L.EF) - z.M = L.EF : point (0.2) - L = C.OB : tangent_from (z.M) - _,z.T = get_points (L) - L = C.OpB : tangent_from (z.M) - _,z.Tp = get_points (L) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(O,B O',B) - \tkzDrawSegments(M,T M,T') - \tkzDrawSegments(E,F) - \tkzDrawLine[add=.5 and .5](O,O') - \tkzDrawPoints(O,B,O',E,F,M,T,T') - \tkzLabelPoints(O,O',B,E,F,T,T') - \tkzDrawArc(M,T')(T) -\end{tikzpicture} -\end{Verbatim} - -\begin{tkzelements} -z.O = point : new (0,0) -z.B = point : new (4,0) -z.Op = point : new (6,0) -C.OB = circle : new (z.O,z.B) -C.OpB = circle : new (z.Op,z.B) -L.EF = C.OB : radical_axis (C.OpB) -z.E,z.F = get_points(L.EF) -z.M = L.EF : point (0.2) -L = C.OB : tangent_from (z.M) -_,z.T = get_points (L) -L = C.OpB : tangent_from (z.M) -_,z.Tp = get_points (L) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O,B O',B) -\tkzDrawSegments(M,T M,T') -\tkzDrawSegments(E,F) -\tkzDrawLine[add=.5 and .5](O,O') -\tkzDrawPoints(O,B,O',E,F,M,T,T') -\tkzLabelPoints(O,O',B,E,F,T,T') -\tkzDrawArc(M,T')(T) -\end{tikzpicture} -\hspace*{\fill} -% subsection radical_axis_v3 (end) - -\subsection{Radical axis v4} % (fold) -\label{sub:radical_axis_v4} -\begin{Verbatim} -\begin{tkzelements} - z.O = point : new (0,0) - z.B = point : new (5,0) - z.Op = point : new (3,0) - C.OB = circle : new (z.O,z.B) - C.OpB = circle : new (z.Op,z.B) - L.EF = C.OB : radical_axis (C.OpB) - z.E,z.F = get_points(L.EF) - z.H = L.EF.mid - z.M = L.EF : point (.8) - _,L = C.OB : tangent_from (z.M) - _,z.T = get_points (L) - _,L = C.OpB : tangent_from (z.M) - _,z.Tp = get_points (L) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(O,B O',B) - \tkzDrawSegments(M,T M,T') - \tkzDrawSegments(E,F) - \tkzDrawLine[add=.3 and .3](O,H) - \tkzDrawPoints(O,O',B,E,H,M) - \tkzLabelPoints[below right](O,O',E,F,M,T,T') - \tkzDrawArc(M,B)(T) -\end{tikzpicture} -\end{Verbatim} - - -\begin{tkzelements} - z.O = point : new (0,0) - z.B = point : new (5,0) - z.Op = point : new (3,0) - C.OB = circle : new (z.O,z.B) - C.OpB = circle : new (z.Op,z.B) - L.EF = C.OB : radical_axis (C.OpB) - z.E,z.F = get_points(L.EF) - z.H = L.EF.mid - z.M = L.EF : point (.8) - _,L = C.OB : tangent_from (z.M) - _,z.T = get_points (L) - _,L = C.OpB : tangent_from (z.M) - _,z.Tp = get_points (L) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(O,B O',B) - \tkzDrawSegments(M,T M,T') - \tkzDrawSegments(E,F) - \tkzDrawLine[add=.3 and .3](O,H) - \tkzDrawPoints(O,O',B,E,H,M) - \tkzLabelPoints[below right](O,O',E,F,M,T,T') - \tkzDrawArc(M,B)(T) -\end{tikzpicture} -\hspace*{\fill} -% subsection radical_axis_v4 (end) - -\subsection{Radical center} % (fold) -\label{sub:radical_center} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} -\begin{tkzelements} - z.O = point : new (0,0) - z.x = point : new (1,0) - z.y = point : new (4,0) - z.z = point : new (2,0) - z.Op = point : new (4,2) - z.P = point : new (2,2.5) - C.Ox = circle : new (z.O,z.x) - C.Pz = circle : new (z.P,z.z) - C.Opy = circle : new (z.Op,z.y) - z.ap,z.a = intersection (C.Ox,C.Pz) - z.bp,z.b = intersection (C.Opy,C.Pz) - L.aap = line : new (z.a,z.ap) - L.bbp = line : new (z.b,z.bp) - z.X = intersection (L.aap,L.bbp) --- or z.X = radical_center(C.Ox,C.Pz,C.Opy) - L.OOp = line : new (z.O,z.Op) - z.H = L.OOp : projection (z.X) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(O,a O',b P,z) - \tkzDrawLines[red](a,X b',X H,X O,O') - \tkzDrawPoints(O,O',P,a,a',b,b',X,H) - \tkzLabelPoints[below right](O,O',P,H) -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{tkzelements} -z.O = point : new (0,0) -z.x = point : new (1,0) -z.y = point : new (4,0) -z.z = point : new (2,0) -z.Op = point : new (4,2) -z.P = point : new (2,2.5) -C.Ox = circle : new (z.O,z.x) -C.Pz = circle : new (z.P,z.z) -C.Opy = circle : new (z.Op,z.y) -z.ap,z.a = intersection (C.Ox,C.Pz) -z.bp,z.b = intersection (C.Opy,C.Pz) -L.aap = line : new (z.a,z.ap) -L.bbp = line : new (z.b,z.bp) -z.X = intersection (L.aap,L.bbp) -L.OOp = line : new (z.O,z.Op) -z.H = L.OOp : projection (z.X) -\end{tkzelements} - -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O,a O',b P,z) -\tkzDrawLines[red](a,X b',X H,X O,O') -\tkzDrawPoints(O,O',P,a,a',b,b',X,H) -\tkzLabelPoints[below right](O,O',P,H) -\end{tikzpicture} -\end{minipage} -% subsection radical_center (end) +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawLine[new](P,R) + \tkzDrawLines(P,B A,C B,C) + \tkzDrawPoints(P,Q,R,A,B,C) + \tkzLabelPoints(A,B,C,P,Q,R) + \end{tikzpicture} +\end{center} -\subsection{Radical circle} % (fold) -\label{sub:radical_circle} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} -\begin{tkzelements} - scale = .5 - z.A = point: new (0,0) - z.B = point: new (6,0) - z.C = point: new (0.8,4) - T.ABC = triangle : new ( z.A,z.B,z.C ) - C.exa = T.ABC : ex_circle () - z.I_a,z.Xa = get_points (C.exa) - C.exb = T.ABC : ex_circle (1) - z.I_b,z.Xb = get_points (C.exb) - C.exc = T.ABC : ex_circle (2) - z.I_c,z.Xc = get_points (C.exc) - C.ortho = C.exa : radical_circle (C.exb,C.exc) - z.w,z.a = get_points (C.ortho) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C) - \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc) - \tkzDrawCircles[red,thick](w,a) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C) -\end{tikzpicture} -\end{Verbatim} \end{minipage} +% subsection menelaus (end) -\begin{tkzelements} - scale = .5 - z.A = point: new (0,0) - z.B = point: new (6,0) - z.C = point: new (0.8,4) - T.ABC = triangle : new ( z.A,z.B,z.C ) - C.exa = T.ABC : ex_circle () - z.I_a,z.Xa = get_points (C.exa) - C.exb = T.ABC : ex_circle (1) - z.I_b,z.Xb = get_points (C.exb) - C.exc = T.ABC : ex_circle (2) - z.I_c,z.Xc = get_points (C.exc) - C.ortho = C.exa : radical_circle (C.exb,C.exc) - z.w,z.a = get_points (C.ortho) -\end{tkzelements} - -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawPolygon(A,B,C) - \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc) - \tkzDrawCircles[red,thick](w,a) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C) -\end{tikzpicture} -\hspace*{\fill} - -% subsection radical_circle (end) \subsection{Euler ellipse} % (fold) \label{sub:hexagram} @@ -2136,21 +2167,22 @@ _,z.W = intersection (L.ZO,E) \end{Verbatim} \end{minipage} \begin{minipage}{.6\textwidth} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon(A,B,C) -\tkzDrawCircles[red](N,Ma O,A) -\tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O) -\tkzDrawPolygon[red](U,V,W) -\tkzLabelPoints[red](U,V,W) -\tkzLabelPoints(A,B,C,X,Y,Z) -\tkzDrawLine[blue](I,J) -\tkzLabelPoints[blue,right](O,N,G,H,I,J) -\tkzDrawPoints(I,J,U,V,W) -\tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc) -\tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon(A,B,C) + \tkzDrawCircles[red](N,Ma O,A) + \tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O) + \tkzDrawPolygon[red](U,V,W) + \tkzLabelPoints[red](U,V,W) + \tkzLabelPoints(A,B,C,X,Y,Z) + \tkzDrawLine[blue](I,J) + \tkzLabelPoints[blue,right](O,N,G,H,I,J) + \tkzDrawPoints(I,J,U,V,W) + \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc) + \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) + \end{tikzpicture} +\end{center} \end{minipage} \begin{Verbatim} @@ -2165,8 +2197,8 @@ _,z.W = intersection (L.ZO,E) \tkzDrawLine[blue](I,J) \tkzLabelPoints[blue,right](O,N,G,H,I,J) \tkzDrawPoints(I,J,U,V,W) - \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc) - \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) + \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc) + \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang}) \end{tikzpicture} \end{Verbatim} @@ -2256,36 +2288,39 @@ z.O = C.DC : inversion (z.W) \end{Verbatim} \end{minipage} \begin{minipage}{.6\textwidth} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles[teal](O_1,B) -\tkzDrawSemiCircles[thin,teal](O_2,C O_3,B) -\tkzDrawArc[purple,delta=0](D,V)(U) -\tkzDrawCircle[new](O_7,C) -\tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V) -\tkzDrawSegments[thin,red](O,D A,O O,B) -\tkzDrawPoints(A,B,C,D,O_7) %, -\tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O) -\tkzDrawSegments[cyan](O_3,S O_2,R) -\tkzDrawSegments[very thin](A,B) -\tkzDrawSegments[cyan,thin](C,U U,D) -\tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B - D,S,C D,W,V O_3,S,U O_2,R,U) -\tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1 - C,D,B D,C,R B,C,S A,R,O_2) -\tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D - D,B,C R,C,A O_3,S,B) -\tkzLabelPoints[below](C,O_2,O_3,O_1) -\tkzLabelPoints[above](D) -\tkzLabelPoints[below](O) -\tkzLabelPoints[below left](A) -\tkzLabelPoints[above left](R) -\tkzLabelPoints[above right](S) -\tkzLabelPoints[left](V) -\tkzLabelPoints[below right](B,U,W,O_7) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles[teal](O_1,B) + \tkzDrawSemiCircles[thin,teal](O_2,C O_3,B) + \tkzDrawArc[purple,delta=0](D,V)(U) + \tkzDrawCircle[new](O_7,C) + \tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V) + \tkzDrawSegments[thin,red](O,D A,O O,B) + \tkzDrawPoints(A,B,C,D,O_7) %, + \tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O) + \tkzDrawSegments[cyan](O_3,S O_2,R) + \tkzDrawSegments[very thin](A,B) + \tkzDrawSegments[cyan,thin](C,U U,D) + \tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B + D,S,C D,W,V O_3,S,U O_2,R,U) + \tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1 + C,D,B D,C,R B,C,S A,R,O_2) + \tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D + D,B,C R,C,A O_3,S,B) + \tkzLabelPoints[below](C,O_2,O_3,O_1) + \tkzLabelPoints[above](D) + \tkzLabelPoints[below](O) + \tkzLabelPoints[below left](A) + \tkzLabelPoints[above left](R) + \tkzLabelPoints[above right](S) + \tkzLabelPoints[left](V) + \tkzLabelPoints[below right](B,U,W,O_7) + \end{tikzpicture} +\end{center} + + \end{minipage} \begin{Verbatim} @@ -2379,25 +2414,27 @@ z.O = C.DC : inversion (z.W) z.xa,z.xb,z.xc = C.ortho : inversion (z.Ea,z.Eb,z.Ec) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} - \tkzGetNodes -\tkzDrawCircles[red](O,xa N,Ea) -\tkzFillCircles[green!30!black,opacity=.3](O,xa) -\tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec) -\tkzFillCircles[teal!30!black,opacity=.3](S,a) -\tkzFillCircles[green!30,opacity=.3](N,Ea) -\tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N) -\tkzClipCircle(O,xa) -\tkzDrawLines[add=3 and 3](A,B A,C B,C) -\tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec) -\tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec) -\tkzDrawCircles[teal](S,a) -\tkzDrawPoints(A,B,C,O) -\tkzDrawPoints[teal](S) -\tkzLabelPoints(A,B,C,O,S,N) -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles[red](O,xa N,Ea) + \tkzFillCircles[green!30!black,opacity=.3](O,xa) + \tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec) + \tkzFillCircles[teal!30!black,opacity=.3](S,a) + \tkzFillCircles[green!30,opacity=.3](N,Ea) + \tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N) + \tkzClipCircle(O,xa) + \tkzDrawLines[add=3 and 3](A,B A,C B,C) + \tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec) + \tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec) + \tkzDrawCircles[teal](S,a) + \tkzDrawPoints(A,B,C,O) + \tkzDrawPoints[teal](S) + \tkzLabelPoints(A,B,C,O,S,N) + \end{tikzpicture} +\end{center} + + % subsection apollonius_circle_v1_with_inversion (end) \subsection{Apollonius circle v2} % (fold) @@ -2472,82 +2509,24 @@ L.MaS = line: new (z.Ma,z.S) z.t = intersection (L.ox,L.MaS) -- through \end{tkzelements} - -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawLines[add=1 and 1](A,B A,C B,C) -\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) % -\tkzClipCircle(o,t) -\tkzDrawLines[red](o,L N,o Ma,t) -\tkzDrawLines[cyan,add=4 and 4](Ma,N o,t) -\tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc) -\tkzDrawPoints[red](N,O,L,S,o,t) -\tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o) -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawLines[add=1 and 1](A,B A,C B,C) + \tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) % + \tkzClipCircle(o,t) + \tkzDrawLines[red](o,L N,o Ma,t) + \tkzDrawLines[cyan,add=4 and 4](Ma,N o,t) + \tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc) + \tkzDrawPoints[red](N,O,L,S,o,t) + \tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o) + \end{tikzpicture} +\end{center} % subsection apollonius_circle_v2 (end) -\subsection{Orthogonal circles v1} % (fold) -\label{sub:orthogonal_circles_v1} - -\begin{Verbatim} -\begin{tkzelements} - scale = .6 - z.C_1 = point: new (0,0) - z.C_2 = point: new (8,0) - z.A = point: new (5,0) - C = circle: new (z.C_1,z.A) - z.S,z.T = get_points (C: orthogonal_from (z.C_2)) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircles(C_1,T C_2,T) - \tkzDrawSegments(C_1,T C_2,T) - \tkzDrawLine(C_1,C_2) - \tkzMarkRightAngle[fill=teal,% - opacity=.2,size=1](C_1,T,C_2) - \tkzDrawPoints(C_1,C_2,T) - \tkzLabelPoints(C_1,C_2) - \tkzLabelPoints[above](T) - \tkzLabelSegment[left](C_1,T){r} - \tkzLabelSegments[right](C_2,T){$\gamma$} - \tkzLabelSegment[below](C_1,C_2){d} - \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1} - \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2} -\end{tikzpicture} -\end{Verbatim} - -\begin{tkzelements} -scale = .6 -z.C_1 = point: new (0,0) -z.C_2 = point: new (8,0) -z.A = point: new (5,0) -C = circle: new (z.C_1,z.A) -z.S,z.T = get_points (C: orthogonal_from (z.C_2)) -\end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(C_1,T C_2,T) -\tkzDrawSegments(C_1,T C_2,T) -\tkzDrawLine(C_1,C_2) -\tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2) -\tkzDrawPoints(C_1,C_2,T) -\tkzLabelPoints(C_1,C_2) -\tkzLabelPoints[above](T) -\tkzLabelSegment[left](C_1,T){r} -\tkzLabelSegments[right](C_2,T){$\gamma$} -\tkzLabelSegment[below](C_1,C_2){d} -\tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1} -\tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2} -\end{tikzpicture} -\hspace*{\fill} -% subsection orthogonal_circles_v1 (end) - -\subsection{Orthogonal circles v2} % (fold) +\subsection{Orthogonal circles} % (fold) \label{sub:orthogonal_circles_v2} \begin{Verbatim} @@ -2602,24 +2581,26 @@ L.OOp = line : new (z.O,z.Op) z.M = L.OOp.mid \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle[red](O,P) -\tkzDrawCircle[purple](O',z1) -\tkzDrawCircle[cyan](M,T) -\tkzDrawSegments(O',T O,T' O',T') -\tkzDrawSegment[purple](O',T) -\tkzDrawSegments[red](O,T O,O') -\tkzDrawPoints(O,O',T,T',M) -\tkzMarkRightAngle[fill=gray!10](O',T,O) -\tkzLabelPoint[below](O){$O$} -\tkzLabelPoint[above](T){$T$} -\tkzLabelPoint[above](M){$M$} -\tkzLabelPoint[below](T'){$T'$} -\tkzLabelPoint[above left](O'){$O'$} -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle[red](O,P) + \tkzDrawCircle[purple](O',z1) + \tkzDrawCircle[cyan](M,T) + \tkzDrawSegments(O',T O,T' O',T') + \tkzDrawSegment[purple](O',T) + \tkzDrawSegments[red](O,T O,O') + \tkzDrawPoints(O,O',T,T',M) + \tkzMarkRightAngle[fill=gray!10](O',T,O) + \tkzLabelPoint[below](O){$O$} + \tkzLabelPoint[above](T){$T$} + \tkzLabelPoint[above](M){$M$} + \tkzLabelPoint[below](T'){$T'$} + \tkzLabelPoint[above left](O'){$O'$} + \end{tikzpicture} +\end{center} + + % subsection orthogonal_circles_v2 (end) % \subsection{Orthogonal circle to two circles} % (fold) @@ -2674,19 +2655,22 @@ z.Tp = L.Tp.pb z.Kp = L.Kp.pb \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(O,B O',D) -\tkzDrawLine[cyan](E,F) -\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T') -\tkzDrawSegments[cyan](M,T M,T' M,K M,K') -\tkzDrawCircle(M,T) -\tkzDrawPoints(O,O',T,M,T',K,K') -\tkzLabelPoints(O,O',T,T',M,K,K') -\end{tikzpicture} -\hspace*{\fill} -% \subsection{Orthogonal to two circles} % (fold) + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(O,B O',D) + \tkzDrawLine[cyan](E,F) + \tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T') + \tkzDrawSegments[cyan](M,T M,T' M,K M,K') + \tkzDrawCircle(M,T) + \tkzDrawPoints(O,O',T,M,T',K,K') + \tkzLabelPoints(O,O',T,T',M,K,K') + \end{tikzpicture} +\end{center} + + +% subsection Orthogonal to two circles (fold) \subsection{Midcircles} % (fold) \label{sub:midcircles} @@ -2738,36 +2722,39 @@ z.Ap = z.M_1: symmetry (z.A) z.H_4,z.F,z.E,z.H_0 = L.AB : projection (z.O_4,z.G,z.H,z.P_0) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle[thin,fill=green!10](O_4,P_0) -\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C) -\tkzDrawSemiCircles[teal](O_0,B) -\tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B) -\tkzDrawSemiCircles[color = orange](M_2,B) -\tkzDrawSemiCircles[color = orange](M_1,A') -\tkzDrawArc[purple,delta=0](M_0,P_0)(C) -\tkzDrawSegments[very thin](A,B A,P B,Q) -\tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2) -\tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J) -\tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S) -\tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H) -\tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0) -\tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0) -\tkzLabelPoints[above](P_0,O_5,O_4) -\tkzLabelPoints[above](P_1,J) -\tkzLabelPoints[above](P_2,P,Q,S) -\tkzLabelPoints[above right](H,E) -\tkzLabelPoints[above left](F,G) -\tkzLabelPoints[below right](H_0) -\tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$} -\tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$} -\tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$} -\tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$} -\tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$} -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle[thin,fill=green!10](O_4,P_0) + \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C) + \tkzDrawSemiCircles[teal](O_0,B) + \tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B) + \tkzDrawSemiCircles[color = orange](M_2,B) + \tkzDrawSemiCircles[color = orange](M_1,A') + \tkzDrawArc[purple,delta=0](M_0,P_0)(C) + \tkzDrawSegments[very thin](A,B A,P B,Q) + \tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2) + \tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J) + \tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S) + \tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H) + \tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0) + \tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0) + \tkzLabelPoints[above](P_0,O_5,O_4) + \tkzLabelPoints[above](P_1,J) + \tkzLabelPoints[above](P_2,P,Q,S) + \tkzLabelPoints[above right](H,E) + \tkzLabelPoints[above left](F,G) + \tkzLabelPoints[below right](H_0) + \tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$} + \tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$} + \tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$} + \tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$} + \tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$} + \end{tikzpicture} +\end{center} + + \begin{Verbatim} \begin{tkzelements} @@ -2900,18 +2887,20 @@ z.xp,z.yp = get_points (C.C0A : orthogonal_from (z.M_1)) z.O = L.BA.mid \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A) -\tkzDrawCircles[thick,color=red](M_0,x M_1,x') -\tkzDrawCircles[thick,color=blue](O,A) -\tkzDrawLines(C_0,C_1 B,M_1) -\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y) -\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y) -\tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$} -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A) + \tkzDrawCircles[thick,color=red](M_0,x M_1,x') + \tkzDrawCircles[thick,color=blue](O,A) + \tkzDrawLines(C_0,C_1 B,M_1) + \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y) + \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y) + \tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$} + \end{tikzpicture} +\end{center} + + % subsection pencil_v1 (end) \subsection{Pencil v2} % (fold) @@ -2967,123 +2956,20 @@ z.O = L.BA.mid z.t = C.orth2.through \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(C_0,A C_1,B) -\tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t) -\tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1) -\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2) -\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2) -\tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$} -\end{tikzpicture} -\hspace*{\fill} -%subsection pencil_v2 (end) - -\subsection{Power v1} % (fold) -\label{sub:power_v1} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} -\begin{tkzelements} - z.O = point : new (0,0) - z.A = point : new (2,-2) - z.M = point : new (-6,0) - L.AM = line : new (z.A,z.M) - C.OA = circle : new (z.O,z.A) - z.Ap = C.OA : antipode (z.A) - z.B = intersection (L.AM, C.OA) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircle(O,A) - \tkzMarkRightAngle[fill=gray!10](A',B,M) - \tkzDrawSegments(M,O A,A' A',B) - \tkzDrawPoints(O,A,A',M,B) - \tkzLabelPoints(O,A,A',M,B) - \tkzDrawSegments[-Triangle](M,A M,A') -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{tkzelements} -scale = 1 -z.O = point : new (0,0) -z.A = point : new (2,-2) -z.M = point : new (-6,0) -L.AM = line : new (z.A,z.M) -C.OA = circle : new (z.O,z.A) -z.Ap = C.OA : antipode (z.A) -z.B = intersection (L.AM, C.OA) -\end{tkzelements} - -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(O,A) -\tkzMarkRightAngle[fill=gray!10](A',B,M) -\tkzDrawSegments(M,O A,A' A',B) -\tkzDrawPoints(O,A,A',M,B) -\tkzLabelPoints(O,A,A',M,B) -\tkzDrawSegments[-Triangle](M,A M,A') -\end{tikzpicture} -\end{minipage} -% subsection power_v1 (end) +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(C_0,A C_1,B) + \tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t) + \tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1) + \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2) + \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2) + \tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$} + \end{tikzpicture} +\end{center} -\subsection{Power v2} % (fold) -\label{sub:power_v2} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} -\begin{tkzelements} - z.O = point : new (0,0) - z.A = point : new (2,2) - z.M = point : new (-1.5,0) - L.AM = line : new (z.A,z.M) - C.OA = circle : new (z.O,z.A) - z.Ap = C.OA : antipode (z.A) - _,z.B = intersection (L.AM, C.OA) - z.m = z.M : north(1) - L.mM = line : new (z.m,z.M) - z.U,z.V = intersection (L.mM,C.OA) -\end{tkzelements} -\begin{tikzpicture} - \tkzGetNodes - \tkzDrawCircle(O,A) - \tkzMarkRightAngle[fill=gray!10](A',B,M) - \tkzDrawSegments(M,O A,A' A',B A,B U,V) - \tkzDrawPoints(O,A,A',M,B,U,V,m) - \tkzLabelPoints(O,A,M,U,V,m) - \tkzLabelPoints[below left](A',B) - \tkzDrawSegments(M,A M,A') -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{tkzelements} -scale = 1 -z.O = point : new (0,0) -z.A = point : new (2,2) -z.M = point : new (-1.5,0) -L.AM = line : new (z.A,z.M) -C.OA = circle : new (z.O,z.A) -z.Ap = C.OA : antipode (z.A) -_,z.B = intersection (L.AM, C.OA) -z.m = z.M : north(1) -L.mM = line : new (z.m,z.M) -z.U,z.V = intersection (L.mM,C.OA) -\end{tkzelements} +%subsection pencil_v2 (end) -\hspace*{\fill}\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(O,A) -\tkzMarkRightAngle[fill=gray!10](A',B,M) -\tkzDrawSegments(M,O A,A' A',B A,B U,V) -\tkzDrawPoints(O,A,A',M,B,U,V,m) -\tkzLabelPoints(O,A,M,U,V,m) -\tkzLabelPoints[below left](A',B) -\tkzDrawSegments(M,A M,A') -\end{tikzpicture} -\end{minipage} -% subsection power_v2 (end) \subsection{Reim v1} % (fold) \label{sub:reim_v1} @@ -3137,22 +3023,25 @@ z.U,z.V = intersection (L.mM,C.OA) z.O = intersection (L.EC,L.FD) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(A,E B,H) -\tkzDrawSegments(E,D C,F) -\tkzDrawLines(E,O F,O) -\tkzDrawLines[red](E,F H,G) -\tkzDrawPoints(A,...,H,O) -\tkzLabelPoints(A,B,D,F,G,O) -\tkzLabelPoints[above](E,C,H) -\tkzMarkAngles[size=.5](E,C,F E,D,F) -\tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F) -\tkzMarkAngles[size=.5](F,C,H G,D,E) -\tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,E B,H) + \tkzDrawSegments(E,D C,F) + \tkzDrawLines(E,O F,O) + \tkzDrawLines[red](E,F H,G) + \tkzDrawPoints(A,...,H,O) + \tkzLabelPoints(A,B,D,F,G,O) + \tkzLabelPoints[above](E,C,H) + \tkzMarkAngles[size=.5](E,C,F E,D,F) + \tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F) + \tkzMarkAngles[size=.5](F,C,H G,D,E) + \tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E) + \end{tikzpicture} +\end{center} + + % subsection reim_v1 (end) \subsection{Reim v2} % (fold) @@ -3200,19 +3089,22 @@ z.m,z.mp = get_points (C.AC: tangent_at (z.M)) z.n,z.np = get_points (C.BC: tangent_at (z.N)) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(A,C B,C) -\tkzDrawLines[new,add=1 and 1](M,m N,n C,c) -\tkzDrawSegment(M,N) -\tkzDrawPoints(A,B,C,M,N) -\tkzLabelPoints[below right](A,B,C,M,N) -\tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C) -\tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$} -\tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$} -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,C B,C) + \tkzDrawLines[new,add=1 and 1](M,m N,n C,c) + \tkzDrawSegment(M,N) + \tkzDrawPoints(A,B,C,M,N) + \tkzLabelPoints[below right](A,B,C,M,N) + \tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C) + \tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$} + \tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$} + \end{tikzpicture} +\end{center} + + % subsection reim_v2 (end) \subsection{Reim v3} % (fold) @@ -3282,21 +3174,23 @@ z.n,z.np = get_points (C.BC: tangent_at (z.N)) z.D = intersection (L.KO,C.zO) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawSegments(K,D D,C) -\tkzDrawPolygon[teal](A,B,C) -\tkzDrawCircles[orange](x,A y,B z,C) -\tkzDrawPoints[fill=white](A,B,C,I,J,K,D) -\tkzLabelPoints[below](A,B,J,K,O) -\tkzLabelPoints[above](C,D,I) -\tkzDrawPoints[fill=black](O) -\tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$} -\tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$} -\tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$} -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawSegments(K,D D,C) + \tkzDrawPolygon[teal](A,B,C) + \tkzDrawCircles[orange](x,A y,B z,C) + \tkzDrawPoints[fill=white](A,B,C,I,J,K,D) + \tkzLabelPoints[below](A,B,J,K,O) + \tkzLabelPoints[above](C,D,I) + \tkzDrawPoints[fill=black](O) + \tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$} + \tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$} + \tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$} + \end{tikzpicture} +\end{center} + + % subsection reim_v3 (end) \subsection{Tangent and circle} % (fold) @@ -3339,14 +3233,17 @@ z.i = L.Ti.pb z.j = L.Tj.pb z.k,z.l = get_points (C.AB: tangent_at (z.B)) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(A,B M,A) -\tkzDrawPoints(A,B,E,i,j,M,S) -\tkzDrawLines(E,i E,j k,l) -\tkzLabelPoints[right,font=\small](A,B,E,S,M) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(A,B M,A) + \tkzDrawPoints(A,B,E,i,j,M,S) + \tkzDrawLines(E,i E,j k,l) + \tkzLabelPoints[right,font=\small](A,B,E,S,M) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection tangent_and_circle (end) @@ -3377,13 +3274,16 @@ z.B = point: new (1,2) z.E = point: new (-3,2) z.C,z.D = z.E : homothety(2,z.A,z.B) \end{tkzelements} -\hspace*{\fill}\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPoints(A,B,C,E,D) -\tkzLabelPoints(A,B,C,E) -\tkzDrawCircles(A,B C,D) -\tkzDrawLines(E,C E,D) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,B,C,E,D) + \tkzLabelPoints(A,B,C,E) + \tkzDrawCircles(A,B C,D) + \tkzDrawLines(E,C E,D) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection homothety (end) @@ -3436,18 +3336,21 @@ z.b1,z.b2 = get_points (C.OA: tangent_at (z.B)) z.H = L.AB: projection (z.O) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircle(O,A) -\tkzDrawPolygon(A,B,C) -\tkzDrawSegments[new](A,O B,O O,H A,D D,B) -\tkzDrawLine(b1,b2) -\tkzDrawPoints(A,B,C,D,H,O) -\tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B A,B,b1) -\tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A) -\tkzLabelPoints(A,B,C,D,H,O) -\end{tikzpicture} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircle(O,A) + \tkzDrawPolygon(A,B,C) + \tkzDrawSegments[new](A,O B,O O,H A,D D,B) + \tkzDrawLine(b1,b2) + \tkzDrawPoints(A,B,C,D,H,O) + \tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B A,B,b1) + \tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A) + \tkzLabelPoints(A,B,C,D,H,O) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection tangent_and_chord (end) @@ -3541,26 +3444,26 @@ z.Cp,_ = intersection (L.GD,C.xD) \end{Verbatim} \end{minipage} \begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\hspace*{\fill} -\begin{tikzpicture}[scale=.75] -\tkzGetNodes -\tkzDrawCircles(O,B) -\tkzDrawCircles[cyan](P,B) -\tkzDrawCircles[red](w,E) -\tkzDrawCircles[new](x,F) -\tkzDrawSegments(A,G E,G C,G) -\tkzDrawPolygons[new](A,E,C A',E',C') -\tkzDrawPoints(A,...,G,A',E',C',O,P) -\begin{scope}[font=\scriptsize] - \tkzLabelPoints(A,...,F) - \tkzLabelPoints[above left](G,A',E',C') - \tkzLabelCircle[left](O,B)(30){$(\beta)$} - \tkzLabelCircle[below](P,A)(40){$(\gamma)$} - \tkzLabelCircle[right](w,C)(90){$(\alpha)$} - \tkzLabelCircle[left](x,B)(-230){$((\delta))$} -\end{scope} -\end{tikzpicture} -\hspace*{\fill} +\begin{center} + \begin{tikzpicture}[scale=.75] + \tkzGetNodes + \tkzDrawCircles(O,B) + \tkzDrawCircles[cyan](P,B) + \tkzDrawCircles[red](w,E) + \tkzDrawCircles[new](x,F) + \tkzDrawSegments(A,G E,G C,G) + \tkzDrawPolygons[new](A,E,C A',E',C') + \tkzDrawPoints(A,...,G,A',E',C',O,P) + \begin{scope}[font=\scriptsize] + \tkzLabelPoints(A,...,F) + \tkzLabelPoints[above left](G,A',E',C') + \tkzLabelCircle[left](O,B)(30){$(\beta)$} + \tkzLabelCircle[below](P,A)(40){$(\gamma)$} + \tkzLabelCircle[right](w,C)(90){$(\alpha)$} + \tkzLabelCircle[left](x,B)(-230){$((\delta))$} + \end{scope} + \end{tikzpicture} +\end{center} \end{minipage} % subsection three_chords (end) @@ -3620,19 +3523,20 @@ L.TA = C.wE : tangent_at (z.A) L.TC = C.xE : tangent_at (z.C) z.I = intersection (L.TA,L.TC) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawCircles(w,E) -\tkzDrawCircles[cyan](x,E) -\tkzDrawCircles[red](G,A) -\tkzDrawLines(A,I C,I F,I) -\tkzDrawPoints(A,C,E,F) -\tkzLabelPoints[right](A) -\tkzLabelPoints[above right](E,F) -\tkzLabelPoints[below](C) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawCircles(w,E) + \tkzDrawCircles[cyan](x,E) + \tkzDrawCircles[red](G,A) + \tkzDrawLines(A,I C,I F,I) + \tkzDrawPoints(A,C,E,F) + \tkzLabelPoints[right](A) + \tkzLabelPoints[above right](E,F) + \tkzLabelPoints[below](C) + \end{tikzpicture} +\end{center} \end{minipage} % subsection three_tangents (end) @@ -3665,15 +3569,16 @@ C.AB = circle: new (z.A,z.B) z.C = z.A: rotation (math.pi/3,z.B) z.D = C.AB: midarc (z.B,z.C) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPoints(A,B,C) -\tkzDrawCircles(A,B) -\tkzDrawPoints(A,...,D) -\tkzLabelPoints(A,...,D) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPoints(A,B,C) + \tkzDrawCircles(A,B) + \tkzDrawPoints(A,...,D) + \tkzLabelPoints(A,...,D) + \end{tikzpicture} +\end{center} \end{minipage} % subsection midarc (end) @@ -3738,68 +3643,92 @@ z.Q = intersection (L.tB,L.AC) z.R = intersection (L.tC,L.AB) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygon[teal](A,B,C) -\tkzDrawCircle(O,A) -\tkzDrawPoints(A,B,C,P,Q,R) -\tkzLabelPoints(A,B,C,P,Q,R) -\tkzDrawLine[blue](Q,R) -\tkzDrawLines[red](Ar,Al Br,Q Cr,Cl) -\tkzDrawSegments(A,R C,P C,Q) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygon[teal](A,B,C) + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,P,Q,R) + \tkzLabelPoints(A,B,C,P,Q,R) + \tkzDrawLine[blue](Q,R) + \tkzDrawLines[red](Ar,Al Br,Q Cr,Cl) + \tkzDrawSegments(A,R C,P C,Q) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection lemoine_line_without_macro (end) \subsection{First Lemoine circle} % (fold) \label{sub:first_lemoine_circle} +Draw lines through the symmedian point $L$ and parallel to the sides of the triangle. The points where the parallel lines intersect the sides of the triangle then lie on a circle known as the first Lemoine circle. It has center at the Brocard midpoint, i.e., the midpoint of $[OL]$, where $O$ is the circumcenter and $K$ is the symmedian point + +[\href{https://mathworld.wolfram.com/FirstLemoineCircle.html}{Weisstein, Eric W. "First Lemoine Circle." From MathWorld--A Wolfram Web Resource.}] + \begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} \begin{tkzelements} z.A = point: new (1,1) z.B = point: new (5,1) - z.C = point: new (2,3) - T = triangle: new (z.A,z.B,z.C) - z.O = T.circumcenter - z.o,z.w = get_points (T : first_lemoine_circle ()) + z.C = point: new (2.2,4) + T = triangle: new (z.A,z.B,z.C) + z.O = T.circumcenter + C.first_lemoine = T:first_lemoine_circle() + z.o,z.w = get_points( C.first_lemoine ) + z.y1,z.y2 = intersection (T.ab,C.first_lemoine) + z.y5,z.y6 = intersection (T.bc,C.first_lemoine) + z.y3,z.y4 = intersection (T.ca,C.first_lemoine) z.L = T : lemoine_point () \end{tkzelements} +\begin{center} \begin{tikzpicture} \tkzGetNodes \tkzDrawPolygons(A,B,C) - \tkzDrawPoints(A,B,C,o,w,O,L) - \tkzLabelPoints(A,B,C,o,w,O,L) - \tkzDrawCircles(o,w O,A) + \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6) + \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6) + \tkzDrawCircles(o,w) + \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L) \end{tikzpicture} -\end{Verbatim} +\end{center} \end{minipage} + \begin{minipage}[t]{.5\textwidth}\vspace{0pt}% +\begin{Verbatim} \begin{tkzelements} -z.A = point: new (1,1) -z.B = point: new (5,1) -z.C = point: new (2,3) -T = triangle: new (z.A,z.B,z.C) -z.O = T.circumcenter -z.o,z.w = get_points(T:first_lemoine_circle()) -z.L = T : lemoine_point () + z.A = point: new (1,1) + z.B = point: new (5,1) + z.C = point: new (2.2,4) + T = triangle: new (z.A,z.B,z.C) + z.O = T.circumcenter + C.first_lemoine = T:first_lemoine_circle() + z.o,z.w = get_points( C.first_lemoine ) + z.y1,z.y2 = intersection (T.ab,C.first_lemoine) + z.y5,z.y6 = intersection (T.bc,C.first_lemoine) + z.y3,z.y4 = intersection (T.ca,C.first_lemoine) + z.L = T : lemoine_point () \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[scale = 1.25] -\tkzGetNodes -\tkzDrawPolygons(A,B,C) -\tkzDrawPoints(A,B,C,o,w,O,L) -\tkzLabelPoints(A,B,C,o,w,O,L) -\tkzDrawCircles(o,w O,A) +\begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(A,B,C) + \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6) + \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6) + \tkzDrawCircles(o,w) + \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L) \end{tikzpicture} +\end{Verbatim} \end{minipage} + % subsection first_lemoine_circle (end) \subsection{First and second Lemoine circles} % (fold) \label{sub:first_and_second_lemoine_circles} +Draw antiparallels through the symmedian point $L$. The points where these lines intersect the sides then lie on a circle, known as the cosine circle (or sometimes the second Lemoine circle). Refer to [\ref{sub:antiparallel_through_lemoine_point}] + +[\href{https://mathworld.wolfram.com/CosineCircle.html}{Weisstein, Eric W. "Cosine Circle." From MathWorld--A Wolfram Web Resource.}] + + \begin{Verbatim} \begin{tkzelements} scale = 2 @@ -3863,19 +3792,22 @@ L.y4y5 = line : new (z.y4,z.y5) L.y2y3 = line : new (z.y2,z.y3) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture}[scale = .75] -\tkzGetNodes -\tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6) -\tkzDrawPoints(x1,x2,x3,x4,x5,x6,L) -\tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6) -\tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6) -\tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6) -\tkzLabelPoints[above](L) -\tkzDrawCircles(L,x o,p O,a) -\tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6) -\end{tikzpicture} -\hspace*{\fill} + +\begin{center} + \begin{tikzpicture}[scale = .75] + \tkzGetNodes + \tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6) + \tkzDrawPoints(x1,x2,x3,x4,x5,x6,L) + \tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6) + \tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6) + \tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6) + \tkzLabelPoints[above](L) + \tkzDrawCircles(L,x o,p O,a) + \tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6) + \end{tikzpicture} +\end{center} + + % subsection first_and_second_lemoine_circles (end) \subsection{Inversion} % (fold) @@ -3942,52 +3874,6 @@ z.Cp = C.AC: inversion ( z.B, z.E, z.C ) \end{minipage} % subsection inversion (end) -\subsection{Gergonne point} % (fold) -\label{sub:gergonne_point} - -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{Verbatim} -\begin{tkzelements} -z.a = point: new(1,0) -z.b = point: new(6,2) -z.c = point: new(2,5) -T = triangle : new (z.a,z.b,z.c) -z.g = T : gergonne_point () -z.i = T.incenter -z.ta,z.tb,z.tc = get_points (T : intouch ()) -\end{tkzelements} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygons(a,b,c) -\tkzDrawPoints(a,b,c,g) -\tkzLabelPoints(a,b,c) -\tkzDrawSegments (a,ta b,tb c,tc) -\tkzDrawCircle(i,ta) -\end{tikzpicture} -\end{Verbatim} -\end{minipage} -\begin{minipage}[t]{.5\textwidth}\vspace{0pt}% -\begin{tkzelements} -z.a = point: new(1,0) -z.b = point: new(6,2) -z.c = point: new(2,5) -T = triangle : new (z.a,z.b,z.c) -z.g = T : gergonne_point () -z.i = T.incenter -z.ta,z.tb,z.tc = get_points (T : intouch ()) -\end{tkzelements} - -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygons(a,b,c) -\tkzDrawPoints(a,b,c,g) -\tkzLabelPoints(a,b,c) -\tkzDrawSegments (a,ta b,tb c,tc) -\tkzDrawCircle(i,ta) -\end{tikzpicture} -\end{minipage} -% subsection gergonne_point (end) \subsection{Antiparallel through Lemoine point} % (fold) \label{sub:antiparallel_through_lemoine_point} @@ -4035,16 +3921,18 @@ L.anti = T : antiparallel (z.L,2) z.z_0,z.z_1 = get_points (L.anti) \end{tkzelements} -\hspace*{\fill} -\begin{tikzpicture} -\tkzGetNodes -\tkzDrawPolygons(a,b,c) -\tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1) -\tkzLabelPoints(a,b) -\tkzLabelPoints[above](L,c) -\tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1) -\tkzDrawCircle(L,x_0) -\end{tikzpicture} +\begin{center} + \begin{tikzpicture} + \tkzGetNodes + \tkzDrawPolygons(a,b,c) + \tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1) + \tkzLabelPoints(a,b) + \tkzLabelPoints[above](L,c) + \tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1) + \tkzDrawCircle(L,x_0) + \end{tikzpicture} +\end{center} + \end{minipage} % subsection antiparallel_through_lemoine_point (end) @@ -4362,7 +4250,8 @@ end \end{minipage} % subsection three_circles (end) -\subsection{pentagons in a golden arbelos} % (fold) +\subsection{p +Pentagons in a golden arbelos} % (fold) \label{sub:golden_arbelos} \begin{tkzelements} @@ -4499,6 +4388,5 @@ z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1) \end{tikzpicture} \end{Verbatim} - - -% subsection golden_arbelos (end)
\ No newline at end of file +% subsection golden_arbelos (end) +% section examples (end)
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex index 6f58cbec5c..140063f928 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex @@ -282,7 +282,7 @@ Then |z.B = z.A * za| describes a rotation of point A by an angle |a|. \end{minipage} % subsubsection example_of_complex_use (end) -\subsubsection{Point operations(complex)} % (fold) +\subsubsection{Point operations (complex)} % (fold) \label{ssub:point_operations_complex} \begin{minipage}{.5\textwidth} diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex index cc842aba53..1ba8fd0981 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex @@ -61,7 +61,7 @@ end \end{tikzpicture} \end{minipage} -Other examples: \ref{ssub:altshiller}, \ref{ssub:lemoine}, \ref{sub:alternate} +Other examples: \ref{sub:altshiller}, \ref{sub:lemoine}, \ref{sub:alternate} % subsection line_line (end) \newpage @@ -117,7 +117,7 @@ _,z.K = intersection (C.OD,L.AE) \end{tikzpicture} \end{minipage} -Other examples: \ref{ssub:altshiller} +Other examples: \ref{sub:altshiller} % subsection line_circle (end) \newpage @@ -168,7 +168,7 @@ C.DC = circle : new (z.D,z.C) \end{tikzpicture} \end{minipage} -Other examples: \ref{ssub:altshiller}, \ref{sub:the_figure_pappus_circle} +Other examples: \ref{sub:altshiller}, \ref{sub:the_figure_pappus_circle} % subsection circle_circle (end) \newpage diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex index 55608bb26b..10998bb7f5 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex +++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex @@ -1,6 +1,6 @@ % !TEX TS-program = lualatex % encoding : utf8 -% Documentation of tkz-elements v2.25c +% Documentation of tkz-elements v2.30c % Copyright 2024 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -21,10 +21,10 @@ headings = small ]{tkz-doc} \gdef\tkznameofpack{tkz-elements} -\gdef\tkzversionofpack{2.25c} +\gdef\tkzversionofpack{2.30c} \gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{tkz-elements.pdf} -\gdef\tkzversionofdoc{2.25c} +\gdef\tkzversionofdoc{2.30c} \gdef\tkzdateofdoc{\today} \gdef\tkzauthorofpack{Alain Matthes} \gdef\tkzadressofauthor{} @@ -170,10 +170,8 @@ sharp corners \AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb - - \begin{document} -\LuaCodeDebugOn +%\LuaCodeDebugOn \parindent=0pt \tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry} diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf Binary files differindex d42a3a109b..edb5864f4f 100644 --- a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf +++ b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty index 0a11787d21..597a050850 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty @@ -1,5 +1,5 @@ % encoding : utf8 -% tkz-elements.sty v2.25c +% tkz-elements.sty v2.30c % Copyright 2024 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -11,7 +11,7 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\ProvidesPackage{tkz-elements}[2024/04/27 v2.25c Graphic Object Library] +\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library] \RequirePackage{luacode} \directlua{require "tkz_elements_main"} @@ -34,20 +34,19 @@ V={}} \luacode} {\endluacode} - + % new version of the next macro proposed by Sanskar Singh \def\tkzGetNodes{\directlua{% - for K,V in pairs(z) do - local n,sd,ft - n = string.len(K) - if n >1 then - _,_,ft, sd = string.find( K , "(.+)(.)" ) - if sd == "p" then K=ft.."'" end - _,_,xft, xsd = string.find( ft , "(.+)(.)" ) - if xsd == "p" then K=xft.."'".."'" end - end - tex.print("\\coordinate ("..K..") at ("..V.re..","..V.im..") ;\\\\") -end} -} + for K,V in pairs(z) do + local n,sd,ft + n = string.len(K) + if n >1 then + _,_,ft, sd = string.find( K , "(.+)(.)" ) + if sd == "p" then K=ft.."'" end + _,_,xft, xsd = string.find( ft , "(.+)(.)" ) + if xsd == "p" then K=xft.."'".."'" end + end + tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r") +end}} \def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}} \makeatletter diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua index 1999b8a073..e17ccb2ebb 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua @@ -1,6 +1,6 @@ -- tkz_elements-circles.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua index b6a1bf7a5a..3ded691d53 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua @@ -1,6 +1,6 @@ -- tkz_elements_class.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- from class.lua (Simple Lua Classes from Lua-users wiki) -- Compatible with Lua 5.1 (not 5.0). -- http://lua-users.org/wiki/SimpleLuaClasses DavidManura diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua index a98cf40a63..7581c19d7a 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua @@ -1,6 +1,6 @@ -- tkz_elements-ellipses.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua index 40f2a4ebbf..88f9040b7f 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_circles.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua index 69dcd6ace3..fe253e9aa2 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua @@ -1,6 +1,6 @@ -- tkz_elements_intersections.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua index 401ad46dda..a5504593c0 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_lines.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua index a71c0f7c27..c3f7e54ffd 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_maths.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua index 4371214047..c80420090f 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_matrices.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_matrices.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua index f1c4dc5d41..e2366e25e3 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_points.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua index 5e92b4d598..0f74d28fe9 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_regular.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua index d4523d1826..02d3058a16 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_triangles.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 @@ -259,6 +259,15 @@ function feuerbach_tr_ (a,b,c) intersection_cc_ (e,m,jb,hb), intersection_cc_ (e,m,jc,hc) end + +function similar_ (a,b,c) + local x,y,z,g + g = centroid_ (a,b,c) + x = homothety_ (g,-2,a) + y = homothety_ (g,-2,b) + z = homothety_ (g,-2,c) + return x,y,z +end -------------------- -- ellipse -- -------------------- diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua index 9304768f31..797365f33f 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua @@ -1,6 +1,6 @@ -- tkz_elements_lines.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 @@ -324,11 +324,25 @@ function line: mediator () m = midpoint_ (self.pa,self.pb) return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb)) end + +function line : perpendicular_bisector () + local m + m = midpoint_ (self.pa,self.pb) + return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb)) +end + ------------------- -- Result -> circle ------------------- -function line: circle () +function line: circle (swap) + if swap == nil then + swap = false + end + if swap then + return circle : new (self.pb,self.pa) + else return circle : new (self.pa,self.pb) + end end function line: circle_swap () diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua index 10ee219519..142f00c8ed 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua @@ -1,6 +1,6 @@ -- tkz_elements-main.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua index 981ac68094..035e8a0a33 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_matrices.lua @@ -1,6 +1,6 @@ -- tkz_elements_matrices.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua index 94c9c555c0..daa3e21872 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua @@ -1,6 +1,6 @@ -- tkz_elements_functions_maths.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua index fd0a3533a3..d471976d06 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua @@ -1,6 +1,6 @@ -- tkz_elements_parallelogram.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua index 4eb4b549d1..e29779ef79 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua @@ -1,6 +1,6 @@ -- tkz_elements_point.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua index e77e0af561..6625b9d789 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua @@ -1,6 +1,6 @@ -- tkz_elements_quadrilateral.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua index 2c07f78399..fdc3084501 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua @@ -1,6 +1,6 @@ -- tkz_elements-rectangle.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua index 0641a858de..a4527c779b 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua @@ -1,6 +1,6 @@ -- tkz_elements_regular.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua index 1852c0ded4..93860b825c 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua @@ -1,6 +1,6 @@ -- tkz_elements-square.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua index c6dd2c3757..84b10273da 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua @@ -1,6 +1,6 @@ -- tkz_elements_triangles.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 @@ -57,19 +57,19 @@ end -- points -- ----------------------- function triangle: trilinear (a,b,c) - return barycenter_ ( {self.pa,a*self.a },{self.pb,b*self.b},{self.pc,c*self.c} ) + return barycenter_ ({self.pa,a*self.a},{self.pb,b*self.b},{self.pc,c*self.c}) end function triangle: barycentric (a,b,c) - return barycenter_ ( {self.pa,a },{self.pb,b},{self.pc,c} ) + return barycenter_ ({self.pa,a},{self.pb,b},{self.pc,c}) end function triangle: bevan_point () - return circum_center_ ( self : excentral_tr()) + return circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc)) end function triangle: mittenpunkt_point () - return lemoine_point_ ( self : excentral_tr()) + return lemoine_point_ ( excentral_tr_ ( self.pa , self.pb , self.pc)) end function triangle: gergonne_point () @@ -322,13 +322,20 @@ function triangle : cevian_circle (p) pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p) return circle : new (circum_circle_ (pta,ptb,ptc),pta) end + +function triangle : symmedial_circle () + local pta,ptb,ptc,p + p = lemoine_point_ ( self.pa , self.pb , self.pc) + pta,ptb,ptc = cevian_ (self.pa,self.pb,self.pc,p) + return circle : new (circum_circle_ (pta,ptb,ptc),pta) +end - function triangle : conway_circle () - local i,t - i = in_center_ (self.pa,self.pb,self.pc) - t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa) - return circle : new (i,t) - end +function triangle : conway_circle () + local i,t + i = in_center_ (self.pa,self.pb,self.pc) + t = report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa) + return circle : new (i,t) +end function triangle : pedal_circle (pt) local x,y,z,c @@ -338,7 +345,13 @@ function triangle : pedal_circle (pt) c = circum_center_ (x,y,z) return circle : new (c,x) end - + +function triangle: bevan_circle () + local o,r,s,t + o = circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc)) + r,s,t = excentral_tr_ ( self.pa , self.pb , self.pc) +return circle : new (o, r) +end ------------------- -- Result -> triangle ------------------- @@ -392,6 +405,12 @@ function triangle: symmedian () return triangle : new (cevian_ (self.pa,self.pb,self.pc,p)) end +function triangle: symmedial () + local p + p = lemoine_point_ ( self.pa , self.pb , self.pc) + return triangle : new (cevian_ (self.pa,self.pb,self.pc,p)) +end + function triangle: euler () return triangle : new (euler_points_ (self.pa,self.pb,self.pc) ) end @@ -403,6 +422,10 @@ function triangle: pedal (pt) z = projection_ (self.pa,self.pb,pt) return triangle : new (x,y,z) end + +function triangle: similar () + return triangle : new (similar_ (self.pa,self.pb,self.pc) ) +end ------------------- -- Result -> ellipse ------------------- diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua index 8b26fe4bd3..0dcbbfde61 100644 --- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua +++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua @@ -1,6 +1,6 @@ -- tkz_elements_vectors.lua --- date 2024/04/27 --- version 2.25c +-- date 2024/07/16 +-- version 2.30c -- Copyright 2024 Alain Matthes -- This work may be distributed and/or modified under the -- conditions of the LaTeX Project Public License, either version 1.3 |