texlive[69715] Master/texmf-dist: tkz-elements (5feb24)

commits+karl at tug.org commits+karl at tug.org
Mon Feb 5 22:11:54 CET 2024


Revision: 69715
          https://tug.org/svn/texlive?view=revision&revision=69715
Author:   karl
Date:     2024-02-05 22:11:54 +0100 (Mon, 05 Feb 2024)
Log Message:
-----------
tkz-elements (5feb24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-presentation.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/tkz-elements.pdf
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,10 +1,10 @@
 # tkz-elements — for euclidean geometry
 
-Release 1.82c 2024/01/16
+Release 2.00c 2024/02/04
 
 ## Description
 
-`tkz-elements v.1.82c` 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.00c` 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.
 
@@ -60,6 +60,18 @@
 are on the site.
 
 ## History
+   - version 2.00c
+      - class development “vector”
+      - added attribute “vec”
+      - added “at” and “orthogonal” methods to the class “point”
+      - rewriting the function angle\_normalize\_
+      - modification of the slope attribute for the “line”, now the result is normalized.
+      - the angles of a triangle are also normalized
+      - added function format\_number(number,decimal) sets the number of digits in the decimal part.
+      - added \tkzDN a macro pour formater les nombres dans la partie TikZ
+        \tkzDN[nb_decimal]{number}
+      - added the macro \tkzDrawLuaEllipse draw an ellipse in tikz knowing its center, vertex and covertex.
+      -  correction de la documentation 
    - version 1.82c
       - Point object  : name like z.App now gives a node with name A''
       - Modification of methods north,south 

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -270,12 +270,12 @@
 \subsubsection{Inversion: point, line and circle} % (fold)
 \label{ssub:inversion}
 
-The "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.
+The “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}
 
-The "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.
+The “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.
 
 \begin{minipage}{.5\textwidth}
 \begin{verbatim}
@@ -756,11 +756,11 @@
 Cette fonction retourne une chaîne qui indique la position du cercle par rapport à un autre. Utile pour créer une fonction. Les cas sont:
 
 \begin{itemize}
-   \item  "outside"
-   \item "outside tangent"
-   \item "inside tangent"
-   \item "inside"
-   \item "intersect"
+   \item “outside”
+   \item “outside tangent”
+   \item “inside tangent”
+   \item “inside”
+   \item “intersect”
 \end{itemize}
 
 \begin{minipage}{.5\textwidth}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -28,12 +28,13 @@
 \Iattr{line}{mid} & Middle of the segment& |z.M = L.AB.mid|\\
 \Iattr{line}{slope} & Slope of the line & see (\ref{ssub:example_class_line})\\
 \Iattr{line}{length} &|l = L.AB.length|&see (\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line})\\  
-\Iattr{line}{north\_pa}   & See (\ref{ssub:example_class_line}) &  \\
+\Iattr{line}{north\_pa}   & &See (\ref{ssub:example_class_line})  \\
 \Iattr{line}{north\_pb}   & &\\
 \Iattr{line}{south\_pa}   & &\\
 \Iattr{line}{south\_pb}   & &See (\ref{ssub:example_class_line}) \\
 \Iattr{line}{east}   & &\\
 \Iattr{line}{west}   & &\\
+\Iattr{line}{vec}   & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ See (\ref{sec:class_vector})\\
 \bottomrule
 \end{tabular}
 \egroup
@@ -410,7 +411,7 @@
    z.E = T.ABE.pc
    T.ABF = L.AB : golden ()
    z.F = T.ABF.pc
-   T.ABG = L.AB : devine ()
+   T.ABG = L.AB : divine ()
    z.G = T.ABG.pc
    T.ABH = L.AB : pythagoras ()
    z.H = T.ABH.pc

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -103,9 +103,9 @@
 \textbf{Attributes}     & \textbf{Application}& \textbf{Example}\\
 \Iattr{point}{re}       &  |z.A.re = 1|    & see (\ref{ssub:methods}) \\
 \Iattr{point}{im}       &  |z.A.im = 2|    &see (\ref{ssub:methods})  \\
-\Iattr{point}{type}     &  |z.A.type = 'point|  & \\  
+\Iattr{point}{type}     &  |z.A.type = 'point'|  & \\  
 \Iattr{point}{argument} &  |z.A.argument $\approx$ 0.78539816339745| & see (\ref{ssub:example_point_attributes})\\
-\Iattr{point}{module}   & |z.A.module| $\approx$ |2.2360...| =$\sqrt{5}$ & see (\ref{ssub:example_point_attributes})\\
+\Iattr{point}{modulus}   & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & see (\ref{ssub:example_point_attributes})\\
 \bottomrule
 \end{tabular}
 \egroup
@@ -242,7 +242,7 @@
 \subsection{Methods of the class point} % (fold)
 \label{sub:methods_of_the_class_point}
 
-The methods described in the following table are standard. You'll find them in most of the examples at the end of this documentation. The result of the different methods presented in the following table is a \tkzNameObj{point}.
+The methods described in the following table are standard. You'll find them in most of the examples at the end of this documentation. The result of the different methods presented in the following table is a \tkzNameObj{point}. See section  (\ref{sub:complex_numbers}) for the metamethods.
 
 \vspace{1em}
 \bgroup
@@ -265,6 +265,8 @@
 \Imeth{point}{west(r)}  &  & \\
 \Imeth{point}{normalize()} &  |z.b = z.a: normalize ()| &  see (\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$\\
  \midrule
   \textbf{Transformations} &&\\
  \midrule
@@ -369,7 +371,6 @@
    \tkzLabelPoints[above right](C,D,F)
 \end{tikzpicture}
 \end{minipage}
-
 % subsubsection report_de_distance (end)
 
 
@@ -460,7 +461,87 @@
 \end{minipage}
 % subsubsection method_normalize (end)
 
+\subsubsection{\Imeth{point}{Orthogonal (d)} method} % (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$.
+
+\begin{minipage}{.6\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+  z.A = point : new (  3 , 1  )
+  z.B = z.A : orthogonal (1)
+  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}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.4\textwidth}
+\begin{tkzelements}
+  z.A = point : new (  3 , 1  )
+  z.B = z.A : orthogonal (1)
+  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}
+\end{minipage}
+% subsubsection orthogonal_method (end)
+
+\subsubsection{\Imeth{point}{at} method} % (fold)
+\label{ssub:_imeth_point_at_method}
+
+Cette méthode est complémentaire de la précédente, ainsi on peut souhaiter non pas avoir $\overrightarrow{OB}\perp \overrightarrow{OA}$ mais $\overrightarrow{AB}\perp \overrightarrow{OA}$.
+
+\begin{minipage}{.6\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+  z.A = point : new (  3 , 1  )
+  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.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}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.4\textwidth}
+\begin{tkzelements}
+z.A = point : new (  3 , 1  )
+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.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}
+\end{minipage}
+
+% subsubsection _imeth_point_at_method (end)
+
 \subsubsection{Example: \Imeth{point}{rotation of points}} % (fold)
 \label{ssub:example_rotation_of_points}
 

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -258,8 +258,8 @@
 z.X    = point : new ( 0 , 0 )
 z.Y    = point : new ( 4 , 2 )
 R.gold = rectangle : gold (z.X,z.Y)
-z.C    = R.gold.pc
-z.D    = R.gold.pd
+z.Z    = R.gold.pc
+z.W    = R.gold.pd
 z.I    = R.gold.center
 \end{tkzelements}
 

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -40,6 +40,46 @@
 \end{tabular}
 \egroup
 
+\subsection{Triangle attributes: angles} % (fold)
+\label{sub:triangle_attributes_angles}
+
+\begin{minipage}{.6\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+  z.A       = point: new(0,0)
+  z.B       = point: new(5,0)
+  z.C       = point: new(2,3)
+  T.ABC     = triangle: new (z.A,z.B,z.C)
+\end{tkzelements}
+\def\wangle#1{\tkzDN[2]{%
+  \tkzUseLua{math.deg(T.ABC.#1)}}}
+\begin{tikzpicture}
+\tkzGetNodes
+  \tkzDrawPolygons(A,B,C)
+  \tkzLabelAngle(B,A,C){$\wangle{alpha}^\circ$}
+  \tkzLabelAngle(C,B,A){$\wangle{beta}^\circ$}
+  \tkzLabelAngle(A,C,B){$\wangle{gamma}^\circ$}
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.4\textwidth}
+\begin{tkzelements}
+   z.A       = point: new(0,0)
+   z.B       = point: new(5,0)
+   z.C       = point: new(2,3)
+   T.ABC     = triangle: new (z.A,z.B,z.C)
+\end{tkzelements}
+\def\wangle#1{\tkzDN[2]{\tkzUseLua{math.deg(T.ABC.#1)}}}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(A,B,C)
+\tkzLabelAngle(B,A,C){$\wangle{alpha}^\circ$}
+\tkzLabelAngle(C,B,A){$\wangle{beta}^\circ$}
+\tkzLabelAngle(A,C,B){$\wangle{gamma}^\circ$}
+\end{tikzpicture}
+\end{minipage}
+% subsection triangle_attributes_angles (end)
+
 \subsubsection{Example: triangle attributes} % (fold)
 \label{ssub:example_triangle_attributes}
 \begin{minipage}{.5\textwidth}
@@ -149,6 +189,20 @@
 \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.\\
+\midrule 
+ \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 ()} & see example \ref{sub:antiparallel_through_lemoine_point}\\
+\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle\\
+
 \bottomrule
 \end{tabular}
 \end{minipage}
@@ -169,19 +223,6 @@
 \toprule
 \textbf{Methods} & \textbf{Comments}     \\
 \midrule 
- \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 ()} & see example \ref{sub:antiparallel_through_lemoine_point}\\
-\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle\\
-\midrule 
  \textbf{Triangles} &\\
 \midrule 
 \Imeth{triangle}{orthic ()}  &  |T = T.ABC : orthic ()| triangle joining the feet of the altitudes   \\
@@ -234,7 +275,7 @@
    \tkzDrawCircle[red](N,I)
    \tkzDrawCircles[teal](O,A)
    \tkzDrawSegments(A,P B,Q C,R)
-   \tkzDrawSegments[red](A,I B,J C,K)\include{TKZdoc-elements-classes-triangle.tex}
+   \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,H)
@@ -331,11 +372,9 @@
   \tkzDrawPoints(A,B,M,C,D,E,F)
   \tkzLabelPoints[below right](A,B,C,D,E)
   \tkzLabelPoints[above](M,F)
-  \tkzFillAngles[opacity=.4,cyan!20](A,M,B B,E,M)
-  \tkzFillAngles[opacity=.4,purple!20](B,M,F M,F,B)
   \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-  \tkzMarkAngles[mark=||](A,M,E E,M,B B,E,M)
-  \tkzMarkAngles[mark=|](B,M,F M,F,B)
+  \tkzMarkAngles[mark=||,size=.5](A,M,E E,M,B B,E,M)
+  \tkzMarkAngles[mark=|,size=.5](B,M,F M,F,B)
   \tkzMarkSegments(B,E B,M B,F)
 \end{tikzpicture}
 \end{minipage}
@@ -350,11 +389,9 @@
    \tkzDrawPoints(A,B,M,C,D,E,F)
    \tkzLabelPoints[below right](A,B,C,D,E)
    \tkzLabelPoints[above](M,F)
-   \tkzFillAngles[opacity=.4,cyan!20](A,M,B B,E,M)
-   \tkzFillAngles[opacity=.4,purple!20](B,M,F M,F,B)
    \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-   \tkzMarkAngles[mark=||](A,M,E E,M,B B,E,M)
-   \tkzMarkAngles[mark=|](B,M,F M,F,B)
+   \tkzMarkAngles[mark=||,size=.5](A,M,E E,M,B B,E,M)
+   \tkzMarkAngles[mark=|,size=.5](B,M,F M,F,B)
    \tkzMarkSegments(B,E B,M B,F)
 \end{tikzpicture}
 \end{verbatim}

Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -0,0 +1,193 @@
+\newpage
+
+\section{Class \Iclass{vector}} % (fold)
+\label{sec:class_vector}
+
+In fact, they are more a class of oriented segments than vectors in the strict mathematical sense.
+
+A vector is defined by giving two points (i.e. two affixes). 
+|V.AB = vector : new (z.A,z.B)| creates the vector $\overrightarrow(AB)$, i.e. the oriented segment with origin $A$ representing a vector. A few rudimentary operations are defined, such as sum, subtraction and multiplication by a scalar.
+
+The sum is defined as follows:
+
+Let V.AB + V.CD result in a vector V.AE defined as follows
+
+If $\overrightarrow{CD} = \overrightarrow{BE} $ then $\overrightarrow{AB} + \overrightarrow{CD} = \overrightarrow{AB} + \overrightarrow{BE} =\overrightarrow(AE)$
+
+\begin{mybox}
+   Creation |V.AB = vector: new (z.A,z.B)|
+\end{mybox}
+
+\begin{verbatim}
+z.A = ...
+z.B = ...
+z.C = ...
+z.D = ...
+V.AB = vector : new (z.A,z.B)
+V.CD = vector : new (z.C,z.D)
+V.AE = V.AB + V.CD  -- possible V.AB : add (V.CD)
+z.E  = V.AE.h -- we recover the final point (h = head)
+\end{verbatim}
+
+\subsection{Attributes of a vector} % (fold)
+\label{sub:attributes_of_a_vector}
+
+% subsection attributes_of_a_vector (end)
+\vspace{1em}
+\bgroup
+\small
+\catcode`_=12
+\captionof{table}{Vector attributes.}\label{vector:att}  
+\begin{tabular}{lll}
+\toprule
+\textbf{Attributes}      & \textbf{Application}& \textbf{Example}\\
+\Iattr{vector}{pa}       &  |V.AB.t = z.A| t for tail   & see (\ref{ssub:methods}) \\
+\Iattr{vector}{pb}       &  |V.AB.h = z.B| h for head   & see (\ref{ssub:methods})  \\
+\Iattr{vector}{type}     &  |V.AB.type = 'vector'|  & \\  
+\Iattr{vector}{slope}    &  |V.AB.slope| & see (\ref{ssub:example_vector_attributes})\\
+\Iattr{vector}{length}   &  |V.AB.norm|& see (\ref{ssub:example_vector_attributes})\\
+\bottomrule
+\end{tabular}
+\egroup
+
+\subsubsection{Example vector attributes} % (fold)
+\label{ssub:example_vector_attributes}
+
+\begin{minipage}{.6\textwidth}
+  \begin{verbatim}
+    \begin{tkzelements} 
+      z.O         = point: new (0,0)
+      z.A         = point: new (0,1)
+      z.B         = point: new (3,4)
+      L.AB        = line : new ( z.A , z.B )
+      z.C         = point: new (1,2)
+      z.D         = point: new (2,1)
+      u           = vector : new (z.A,z.B)
+      v           = vector : new (z.C,z.D)
+      w =u+v
+      z.E = w.h
+  \end{tkzelements}
+  \begin{tikzpicture}[gridded]
+      \tkzGetNodes
+      \tkzLabelPoints(A,B,C,D,O,E)
+      \tkzDrawSegments[->,red](A,B C,D A,E)
+      \tkzLabelSegment(A,B){$\overrightarrow{u}$}
+      \tkzLabelSegment(C,D){$\overrightarrow{v}$}
+      \tkzLabelSegment(A,E){$\overrightarrow{w}$}
+    \end{tikzpicture}
+  $\overrightarrow{w}$ has slope :
+  $\tkzDN{\tkzUseLua{math.deg(w.slope)}}^\circ$
+  \end{verbatim}
+\end{minipage}
+\begin{minipage}{.4\textwidth}
+\begin{tkzelements} 
+  z.O         = point: new (0,0)
+  z.A         = point: new (0,1)
+  z.B         = point: new (3,4)
+  L.AB        = line : new ( z.A , z.B )
+  z.C         = point: new (1,2)
+  z.D         = point: new (2,1)
+  u           = vector : new (z.A,z.B)
+  v           = vector : new (z.C,z.D)
+  w           = u+v
+  z.E         = w.h
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+  \tkzGetNodes
+  \tkzLabelPoints(A,B,C,D,O,E)
+  \tkzDrawSegments[->,red](A,B C,D A,E)
+  \tkzLabelSegment(A,B){$\overrightarrow{u}$}
+  \tkzLabelSegment(C,D){$\overrightarrow{v}$}
+  \tkzLabelSegment(A,E){$\overrightarrow{w}$}
+\end{tikzpicture}
+
+$\overrightarrow{w}$ has slope :
+$\tkzDN{\tkzUseLua{math.deg(w.slope)}}^\circ$
+\end{minipage}
+% subsubsection example_vector_attributes (end)
+
+\subsection{Methods of the class vector} % (fold)
+\label{sub:methods_of_the_class_vector}
+
+\vspace{1em}
+\bgroup
+\catcode`_=12
+\small
+\captionof{table}{Methods of the class vector.}\label{vector:met}
+\begin{tabular}{lll}
+\toprule
+ \textbf{Metamethods} & \textbf{Application}& \\
+ \midrule
+\Imeth{vector}{\_\_add (u,v)}  & |V.AB + V.CD| & \\
+\Imeth{vector}{\_\_sub (u,v)}  & |V.AB - V.CD| & \\
+\Imeth{vector}{\_\_unm (u)}  & |V.CD = -V.AB| & \\
+\Imeth{vector}{\_\_mul (k,u)}  & |V.CD = k*V.AB| & \\
+ \midrule
+ \textbf{Methods} & \textbf{Application}& \\
+\Imeth{vector}{new(pt, pt)}    & |V.AB = vector: new (z.A,z.B) | &  \\
+\Imeth{vector}{normalize(V)}    & |V.AB : normalize () | &  \\
+\Imeth{vector}{orthogonal(d)}    & |V.AB : orthogonal (d) | &  \\
+\Imeth{vector}{scale(d)}    & |V.CD = V.AB : scale (2) | &  $\overrightarrow{CD} = 2\overrightarrow{AB} $ \\
+\Imeth{vector}{at (V)}    & |V.DB = V.AC : at (z.D) | & $\overrightarrow{DB} = \overrightarrow{AC} $ \\    
+\bottomrule 
+\end{tabular}
+\egroup
+
+\subsubsection{Example of methods} % (fold)
+\label{ssub:example_of_methods}
+
+\begin{minipage}{.5\textwidth}
+  \begin{verbatim}
+  \begin{tkzelements} 
+    z.O         = point: new (0,0)
+    z.A         = point: new (0,1)
+    z.B         = point: new (3,4)
+    V.AB        = vector: new (z.A,z.B)
+    V.AC        = V.AB : scale (.5)
+    z.C         = V.AC.h
+    V.AD        = V.AB : orthogonal ()
+    z.D         = V.AD.h
+    V.AN        = V.AB : normalize ()
+    z.N         = V.AN.h
+    V.AR        = V.AB : orthogonal (2*math.sqrt(2))
+    z.R         = V.AR.h
+    V.AX        = 2*V.AC - V.AR
+    z.X         = V.AX.h
+    V.OY        = V.AX : at (z.O)
+    z.Y         = V.OY.h
+  \end{tkzelements}
+  \begin{tikzpicture}[gridded]
+    \tkzGetNodes
+    \tkzDrawSegments[>=stealth,->,red](A,B A,C A,D A,N A,R A,X O,Y)
+    \tkzLabelPoints(A,B,C,D,O,N,R,X,Y)
+  \end{tikzpicture}
+  \end{verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements} 
+    z.O         = point: new (0,0)
+    z.A         = point: new (0,1)
+    z.B         = point: new (3,4)
+    V.AB        = vector: new (z.A,z.B)
+    V.AC        = V.AB : scale (.5)
+    z.C         = V.AC.h
+    V.AD        = V.AB : orthogonal ()
+    z.D         = V.AD.h
+    V.AN        = V.AB : normalize ()
+    z.N         = V.AN.h
+    V.AR        = V.AB : orthogonal (2*math.sqrt(2))
+    z.R         = V.AR.h
+    V.AX        = 2*V.AC - V.AR
+    z.X         = V.AX.h
+    V.OY        = V.AX : at (z.O)
+    z.Y         = V.OY.h
+  \end{tkzelements}
+  \begin{tikzpicture}[gridded]
+    \tkzGetNodes
+    \tkzDrawSegments[>=stealth,->,red](A,B A,C A,D A,N A,R A,X O,Y)
+    \tkzLabelPoints(A,B,C,D,O,N,R,X,Y)
+  \end{tikzpicture}
+\end{minipage}
+% subsubsection example_of_methods (end)
+% section class_vector (end)
+\endinput
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -179,22 +179,23 @@
 \subsection{Apollonius circle} % (fold)
 \label{sub:apollonius_circle}
 
-\begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
 scale=.75
-   z.A      = point: new (0 , 0)
-   z.B      = point: new (6 , 0)
-   z.M      = point: new (5 , 3)
+   z.A  = point: new (0 , 0)
+   z.B  = point: new (6 , 0)
+   z.M  = point: new (5 , 3)
    T.MAB    = triangle : new (z.M,z.A,z.B)
    L.bis    = T.MAB : bisector ()
-   z.C      = L.bis.pb
+   z.C  = L.bis.pb
    L.bisext = T.MAB : bisector_ext ()
-   z.D      = intersection (T.MAB.bc, L.bisext)
-   L.CD     = line: new (z.C,z.D)
-   z.O      = L.CD.mid
-   L.AM     = T.MAB.ab
-   z.E      = z.M : symmetry (z.A)
+   z.D  = intersection (T.MAB.bc, L.bisext)
+   L.CD = line: new (z.C,z.D)
+   z.O  = L.CD.mid
+   L.AM = T.MAB.ab
+   z.E  = z.M : symmetry (z.A)
 \end{tkzelements}
+
+\hspace*{\fill}  
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawSegment[add=0 and 1](A,M)
@@ -210,26 +211,24 @@
    \tkzMarkAngles[mark=|](A,M,C C,M,B)
    \tkzMarkAngles[mark=||](B,M,D D,M,E)
 \end{tikzpicture} 
-\end{tkzexample}
+\hspace*{\fill}
 
-
+\begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
 scale=.75
-   z.A  = point: new (0 , 0)
-   z.B  = point: new (6 , 0)
-   z.M  = point: new (5 , 3)
+   z.A      = point: new (0 , 0)
+   z.B      = point: new (6 , 0)
+   z.M      = point: new (5 , 3)
    T.MAB    = triangle : new (z.M,z.A,z.B)
    L.bis    = T.MAB : bisector ()
-   z.C  = L.bis.pb
+   z.C      = L.bis.pb
    L.bisext = T.MAB : bisector_ext ()
-   z.D  = intersection (T.MAB.bc, L.bisext)
-   L.CD = line: new (z.C,z.D)
-   z.O  = L.CD.mid
-   L.AM = T.MAB.ab
-   z.E  = z.M : symmetry (z.A)
+   z.D      = intersection (T.MAB.bc, L.bisext)
+   L.CD     = line: new (z.C,z.D)
+   z.O      = L.CD.mid
+   L.AM     = T.MAB.ab
+   z.E      = z.M : symmetry (z.A)
 \end{tkzelements}
-
-\hspace*{\fill}  
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawSegment[add=0 and 1](A,M)
@@ -245,8 +244,13 @@
    \tkzMarkAngles[mark=|](A,M,C C,M,B)
    \tkzMarkAngles[mark=||](B,M,D D,M,E)
 \end{tikzpicture} 
-\hspace*{\fill}
+\end{tkzexample}
 
+Remark : The circle can be obtained with:
+
+|C.AB = T.MAB.bc : apollonius (length(z.M,z.A)/length(z.M,z.B))|
+
+
 %subsection apollonius_circle (end)
 
 \subsection{Apollonius and circle circumscribed } % (fold)
@@ -428,8 +432,8 @@
    z.w1,z.t1   = get_points ( C.AB )
    C.AC        = T.ABC.ca : apollonius (length(z.B,z.C)/length(z.B,z.A))
    z.w2,z.t2   = get_points ( C.AC )
-   C.AC        = T.ABC.bc : apollonius (length(z.A,z.B)/length(z.A,z.C))
-   z.w3,z.t3   = get_points ( C.AC )
+   C.BC        = T.ABC.bc : apollonius (length(z.A,z.B)/length(z.A,z.C))
+   z.w3,z.t3   = get_points ( C.BC )
    \end{tkzelements}
 \end{verbatim}
 
@@ -733,19 +737,19 @@
    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}
+\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}
 % subsection orthogonal_circle_through (end)
 
-\subsection{Devine ratio} % (fold)
-\label{sub:devine_ratio}
+\subsection{Divine ratio} % (fold)
+\label{sub:divine_ratio}
 
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
@@ -809,52 +813,53 @@
 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}
-% subsection devine_ratio (end)
+\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}
+% subsection divine_ratio (end)
 
 \subsection{Director circle} % (fold)
 \label{sub:director_circle}
 % modif C: point (0.25) instead of 2
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-   \begin{verbatim}
-   \begin{tkzelements}
-   scale    = .5
-   z.O      = point: new (0 , 0)
-   z.F1     = point: new (4 , 0)
-   z.F2     = point: new (-4 , 0)
-   z.H      = point: new (4*math.sqrt(2) , 0)
-   E        = ellipse: foci (z.F2,z.F1,z.H)
-   a,b      = E.Rx, E.Ry
-   z.A      = E.covertex
-   T        = triangle: new (z.H,z.O,z.A)
-   z.P      = T: parallelogram ()
-   C        = circle: new (z.O,z.P)
-   z.L      = C: point (0.25)
-   L.J,L.K  = E: tangent_from (z.L)
-   z.J      = L.J.pb
-   z.K      = L.K.pb
-   \end{tkzelements}
-    \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)
-   \tkzMarkRightAngles(A,P,H J,L,K)
-   \end{tikzpicture}
-   \end{verbatim}
+\begin{verbatim}
+\begin{tkzelements}
+  scale    = .5
+  z.O      = point: new (0 , 0)
+  z.F1     = point: new (4 , 0)
+  z.F2     = point: new (-4 , 0)
+  z.H      = point: new (4*math.sqrt(2) , 0)
+  E        = ellipse: foci (z.F2,z.F1,z.H)
+  a,b      = E.Rx, E.Ry
+  z.A      = E.covertex
+  T        = triangle: new (z.H,z.O,z.A)
+  z.P      = T: parallelogram ()
+  C        = circle: new (z.O,z.P)
+  z.L      = C: point (0.25)
+  L.J,L.K  = E: tangent_from (z.L)
+  z.J      = L.J.pb
+  z.K      = L.K.pb
+\end{tkzelements}
+\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{verbatim}
 \end{minipage}
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{tkzelements}
@@ -885,6 +890,7 @@
 \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{minipage}
@@ -942,8 +948,8 @@
 z.O     = C.AB: antipode (z.B)
 \end{tkzelements}
 
-   \hspace*{\fill}
-   \begin{tikzpicture}
+\hspace*{\fill}
+\begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawArc[delta=5](O,B)(G)
    \tkzDrawCircles(A,B B,A)
@@ -952,13 +958,13 @@
    \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}
+\end{tikzpicture}
+  \hspace*{\fill}
 % subsection gold_division (end)
 
 \subsection{Ellipse} % (fold)
 \label{sub:ellipse}
-
+\begin{minipage}{.5\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
    z.C       = point: new (3 , 2)
@@ -971,7 +977,6 @@
    a         = E.Rx
    b         = E.Ry
    slope     = math.deg(E.slope)
-
 \end{tkzelements}
 \begin{tikzpicture}
    \tkzGetNodes
@@ -981,7 +986,8 @@
    \tkzLabelPoints(C,A,B)
 \end{tikzpicture}
 \end{tkzexample}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
 \begin{tkzelements}
 z.C  = point: new (3 , 2)
 z.A  = point: new (5 , 1)
@@ -1004,53 +1010,55 @@
 \tkzLabelPoints(C,A,B)
 \end{tikzpicture}
 \hspace*{\fill}
+\end{minipage}
  % subsection ellipse (end)
 
 \subsection{Ellipse with radii} % (fold)
 \label{sub:ellipse_with_radii}
-
+\begin{minipage}{.5\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
-z.C      = point: new (0 , 4)
-z.B      = point: new (4 , 0)
-z.D      = point: new (2 , 6)
-b        = math.sqrt(8)
-a        = math.sqrt(32)
-ang      = math.deg(math.pi/4)
-E        = ellipse: radii (z.C,a,b,math.pi/4)
-z.V      = E : point (0)
-z.CoV    = E : point (0.25)
-\end{tkzelements}
-\begin{tikzpicture}
+scale=.5
+z.C    = point: new (0 , 4)
+b      = value(math.sqrt(8))
+a      = value(math.sqrt(32))
+ang    = math.deg(math.pi/4)
+E      = ellipse: radii (z.C,a,b,math.pi/4)
+z.V    = E : point (0)
+z.CoV  = E : point (math.pi/2)
+\end{tkzelements}  
+\begin{tikzpicture}[gridded]
 \tkzGetNodes
-\tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+\tkzDrawEllipse[blue](C,\tkzUseLua{a},
+              \tkzUseLua{b},\tkzUseLua{ang})
 \tkzDrawPoints(C,V,CoV)
 \end{tikzpicture}
 \end{tkzexample}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
 \begin{tkzelements}
+scale=.5
 z.C    = point: new (0 , 4)
-z.B    = point: new (4 , 0)
-z.D    = point: new (2 , 6)
-b  = math.sqrt(8)
-a  = math.sqrt(32)
+b      = value(math.sqrt(8))
+a      = value(math.sqrt(32))
 ang    = math.deg(math.pi/4)
-E  = ellipse: radii (z.C,a,b,math.pi/4)
+E      = ellipse: radii (z.C,a,b,math.pi/4)
 z.V    = E : point (0)
-z.CoV  = E : point (0.25)
-\end{tkzelements}
+z.CoV  = E : point (math.pi/2)
+\end{tkzelements}  
 
 \hspace*{\fill}
-\begin{tikzpicture}
+\begin{tikzpicture}[gridded]
 \tkzGetNodes
 \tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
 \tkzDrawPoints(C,V,CoV)
 \end{tikzpicture}
+\end{minipage}
 % subsection ellipse_with_radii (end)
 
 \subsection{Ellipse\_with\_foci} % (fold)
 \label{sub:ellipse_with_foci}
-
+\begin{minipage}{.5\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
    local e
@@ -1079,7 +1087,8 @@
    \tkzDrawLines(K,F K,G)
 \end{tikzpicture}
 \end{tkzexample}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
 \begin{tkzelements}
 local e
 e           = .8
@@ -1109,27 +1118,28 @@
   \tkzDrawLines(K,F K,G)
 \end{tikzpicture}
  \hspace*{\fill}
+ \end{minipage}
 % subsection ellipse_with_foci (end)
 
 \subsection{Euler relation} % (fold)
 \label{sub:euler_relation}
-
+\begin{minipage}{.5\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
-   scale          =  .75
-   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,z.K        = get_points(T.ABC: ex_circle (2))
-   z.X ,z.Y,z.K   = T.ABC : projection (z.J)
-   z.I,z.H        = get_points(T.ABC : in_circle())
-   z.O            = T.ABC.circumcenter
-   C.OA           = circle : new (z.O,z.A)
-   T.IBA          = triangle: new (z.I,z.B,z.A)
-   z.w            = T.IBA.circumcenter
-   L.Ow           = line : new (z.O,z.w)
-   _,z.E          = intersection (L.Ow, C.OA)
+ scale      =  .75
+ 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,z.K    = get_points(T.ABC: ex_circle (2))
+ z.X,z.Y,z.K= T.ABC : projection (z.J)
+ z.I,z.H    = get_points(T.ABC : in_circle())
+ z.O        = T.ABC.circumcenter
+ C.OA       = circle : new (z.O,z.A)
+ T.IBA      = triangle: new (z.I,z.B,z.A)
+ z.w        = T.IBA.circumcenter
+ L.Ow       = line : new (z.O,z.w)
+ _,z.E      = intersection (L.Ow, C.OA)
 \end{tkzelements}
    \begin{tikzpicture}
    \tkzGetNodes
@@ -1143,7 +1153,8 @@
    \tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
    \end{tikzpicture}
 \end{tkzexample}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
 \begin{tkzelements}
 z.A   = point: new (0 , 0)
 z.B   = point: new (5 , 0)
@@ -1173,6 +1184,7 @@
 \tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
 \end{tikzpicture}
 \hspace*{\fill}
+\end{minipage}
 % subsection euler_relation (end)
 
 \subsection{External angle} % (fold)
@@ -1180,33 +1192,33 @@
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{verbatim}
 \begin{tkzelements}
-   scale =.8
-   z.A    = point: new (0 , 0)
-   z.B    = point: new (5 , 0)
-   z.C    = point: new (-2 , 4)
-   T.ABC  = triangle: new (z.A,z.B,z.C)
-   T.ext  = T.ABC: excentral ()
-   z.O    = T.ABC.circumcenter
-   z.D    = intersection (T.ext.ab,T.ABC.ab)
-   z.E    = z.C: symmetry (z.B)
+  scale  = .75
+  z.A    = point: new (0 , 0)
+  z.B    = point: new (5 , 0)
+  z.C    = point: new (-2 , 4)
+  T.ABC  = triangle: new (z.A,z.B,z.C)
+  T.ext  = T.ABC: excentral ()
+  z.O    = T.ABC.circumcenter
+  z.D    = intersection (T.ext.ab,T.ABC.ab)
+  z.E    = z.C: symmetry (z.B)
 \end{tkzelements}
 \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)
+  \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{verbatim}
 \end{minipage}
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{tkzelements}
-scale    = .8
+scale    = .75
 z.A      = point: new (0 , 0)
 z.B      = point: new (5 , 0)
 z.C      = point: new (-2 , 4)
@@ -1230,6 +1242,7 @@
 \tkzLabelPoints[above](C)
 \tkzLabelPoints(A,B,D)
 \end{tikzpicture}
+\hspace*{\fill}
 \end{minipage}
 % subsection external_angle (end)
 
@@ -1488,7 +1501,7 @@
 
 \subsection{Harmonic division v1} % (fold)
 \label{sub:harmonic_division_v1}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{minipage}[t]{.4\textwidth}\vspace{0pt}%
 \begin{verbatim}
 \begin{tkzelements}
    scale=.75
@@ -1523,7 +1536,7 @@
 \end{tikzpicture}
 \end{verbatim}
 \end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{minipage}[t]{.6\textwidth}\vspace{0pt}%
 \begin{tkzelements}
 scale=.75
 z.A  = point: new (0 , 0)
@@ -1556,6 +1569,7 @@
 \tkzLabelPoints(A,B,G,E,F,C,D)
 \tkzMarkSegments(F,B B,E)
 \end{tikzpicture}
+\hspace*{\fill}
 \end{minipage}
 % subsection harmonic_division_v1 (end)
 
@@ -1621,7 +1635,7 @@
 
 \subsection{Menelaus} % (fold)
 \label{sub:menelaus}
-\begin{minipage}{.5\textwidth}
+\begin{minipage}{.4\textwidth}
 \begin{verbatim}
 \begin{tkzelements}
    z.A  = point: new (0 , 0)
@@ -1645,7 +1659,7 @@
 \end{tikzpicture}
 \end{verbatim}
 \end{minipage}
-\begin{minipage}{.5\textwidth}
+\begin{minipage}{.6\textwidth}
 \begin{tkzelements}
 z.A   = point: new (0 , 0)
 z.B   = point: new (6 , 0)
@@ -1668,6 +1682,7 @@
 \tkzDrawPoints(P,Q,R,A,B,C)
 \tkzLabelPoints(A,B,C,P,Q,R)
 \end{tikzpicture}
+\hspace*{\fill}
 \end{minipage}
 % subsection menelaus (end)
 
@@ -2041,7 +2056,7 @@
 \end{minipage}
 % subsection radical_circle (end)
  
-\subsection{Hexagram} % (fold)
+\subsection{Euler ellipse} % (fold)
 \label{sub:hexagram}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
@@ -2080,6 +2095,9 @@
   _,z.V              = intersection (L.YO,E)
   _,z.W              = intersection (L.ZO,E)
  \end{tkzelements}
+ \end{tkzexample}
+
+\begin{tkzexample}[latex=0cm,small,code only] 
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawPolygon(A,B,C)
@@ -2419,7 +2437,7 @@
 \end{tkzexample}
 
 \begin{tkzelements}
-scale =.3
+scale =.5
 z.A    = point: new (0,0)
 z.B    = point: new (6,0)
 z.C    = point: new (0.8,4)
@@ -2665,6 +2683,84 @@
 \subsection{Midcircles} % (fold)
 \label{sub:midcircles}
 
+\begin{tkzelements}
+z.A  = point: new (0 , 0)
+z.B  = point: new (10 , 0)
+L.AB = line : new (z.A,z.B)
+z.C  = L.AB: gold_ratio ()
+L.AC = line : new (z.A,z.C)
+L.CB = line : new (z.C,z.B)
+z.O_0    = L.AB.mid
+z.O_1    = L.AC.mid
+z.O_2    = L.CB.mid
+C.O0B    = circle : new (z.O_0,z.B)
+C.O1C    = circle : new (z.O_1,z.C)
+C.O2C    = circle : new (z.O_2,z.B)
+z.Q  = C.O1C : midarc (z.C,z.A)
+z.P  = C.O2C : midarc (z.B,z.C)
+L.O1O2   = line : new (z.O_1,z.O_2)
+L.O0O1   = line : new (z.O_0,z.O_1)
+L.O0O2   = line : new (z.O_0,z.O_2)
+z.M_0    = L.O1O2 : harmonic_ext (z.C)
+z.M_1    = L.O0O1 : harmonic_int (z.A)
+z.M_2    = L.O0O2 : harmonic_int (z.B)
+L.BQ = line : new (z.B,z.Q)
+L.AP = line : new (z.A,z.P)
+z.S  = intersection (L.BQ,L.AP)
+L.CS = line : new (z.C,z.S)
+C.M1A    = circle : new (z.M_1,z.A)
+C.M2B    = circle : new (z.M_2,z.B)
+z.P_0    = intersection (L.CS,C.O0B)
+z.P_1    = intersection (C.M2B,C.O1C)
+z.P_2    = intersection (C.M1A,C.O2C)
+T.P012   = triangle : new (z.P_0,z.P_1,z.P_2)
+z.O_4    = T.P012.circumcenter
+T.CP12   = triangle : new (z.C,z.P_1,z.P_2)
+z.O_5    = T.CP12.circumcenter
+z.BN = z.B : north ()
+L.BBN    = line : new (z.B,z.BN)
+L.M1P2   = line : new (z.M_1,z.P_2)
+z.J  = intersection (L.BBN,L.M1P2)
+L.AP0    = line : new (z.A,z.P_0)
+L.BP0    = line : new (z.B,z.P_0)
+C.O4P0   = circle : new (z.O_4,z.P_0)
+_,z.G  = intersection (L.AP0,C.O4P0)
+z.H    = intersection (L.BP0,C.O4P0)
+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{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
    z.A      = point: new (0 , 0)
@@ -2712,7 +2808,9 @@
    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}
+\end{tkzexample}
 
+\begin{tkzexample}[latex=0cm,small,code only]
 \begin{tikzpicture}
 \tkzGetNodes
 \tkzDrawCircle[thin,fill=green!10](O_4,P_0)
@@ -2743,83 +2841,7 @@
 \end{tikzpicture}
 \end{tkzexample}
 
-\begin{tkzelements}
-z.A  = point: new (0 , 0)
-z.B  = point: new (10 , 0)
-L.AB = line : new (z.A,z.B)
-z.C  = L.AB: gold_ratio ()
-L.AC = line : new (z.A,z.C)
-L.CB = line : new (z.C,z.B)
-z.O_0    = L.AB.mid
-z.O_1    = L.AC.mid
-z.O_2    = L.CB.mid
-C.O0B    = circle : new (z.O_0,z.B)
-C.O1C    = circle : new (z.O_1,z.C)
-C.O2C    = circle : new (z.O_2,z.B)
-z.Q  = C.O1C : midarc (z.C,z.A)
-z.P  = C.O2C : midarc (z.B,z.C)
-L.O1O2   = line : new (z.O_1,z.O_2)
-L.O0O1   = line : new (z.O_0,z.O_1)
-L.O0O2   = line : new (z.O_0,z.O_2)
-z.M_0    = L.O1O2 : harmonic_ext (z.C)
-z.M_1    = L.O0O1 : harmonic_int (z.A)
-z.M_2    = L.O0O2 : harmonic_int (z.B)
-L.BQ = line : new (z.B,z.Q)
-L.AP = line : new (z.A,z.P)
-z.S  = intersection (L.BQ,L.AP)
-L.CS = line : new (z.C,z.S)
-C.M1A    = circle : new (z.M_1,z.A)
-C.M2B    = circle : new (z.M_2,z.B)
-z.P_0    = intersection (L.CS,C.O0B)
-z.P_1    = intersection (C.M2B,C.O1C)
-z.P_2    = intersection (C.M1A,C.O2C)
-T.P012   = triangle : new (z.P_0,z.P_1,z.P_2)
-z.O_4    = T.P012.circumcenter
-T.CP12   = triangle : new (z.C,z.P_1,z.P_2)
-z.O_5    = T.CP12.circumcenter
-z.BN = z.B : north ()
-L.BBN    = line : new (z.B,z.BN)
-L.M1P2   = line : new (z.M_1,z.P_2)
-z.J  = intersection (L.BBN,L.M1P2)
-L.AP0    = line : new (z.A,z.P_0)
-L.BP0    = line : new (z.B,z.P_0)
-C.O4P0   = circle : new (z.O_4,z.P_0)
-_,z.G  = intersection (L.AP0,C.O4P0)
-z.H    = intersection (L.BP0,C.O4P0)
-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}
 % subsection midcircles (end)
 
 \subsection{Pencil v1} % (fold)
@@ -4452,11 +4474,11 @@
 L.O0L    = line:new(z.O_0,z.L)
 z.D      = intersection (L.O0L,C.O0B)
 L.DB     = line:new(z.D,z.B)
-z.Z      = intersection (L.DB,C.O2B)
+_,z.Z      = intersection (L.DB,C.O2B)
 L.DA     = line:new(z.D,z.A)
 z.I      = intersection (L.DA,C.O1C)
 L.O2Z    = line:new(z.O_2,z.Z)
-z.H      = intersection (L.O2Z,C.O0B)
+_,z.H      = intersection (L.O2Z,C.O0B)
 C.BD     = circle:new (z.B,z.D)
 C.DB     = circle:new (z.D,z.B)
 _,z.G    = intersection (C.BD,C.O0B)

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -172,16 +172,16 @@
   \toprule
   \textbf{Metamethods} & \textbf{Application} \\
   \midrule
-__add(z1,z2)   & |z.a + z.b| & affix \\
-__sub(z1,z2)   & |z.a - z.b| & affix\\
-__unm(z)       & |- z.a| & affix\\
-__mul(z1,z2)   & |z.a * z.b|  &  affix\\
-__concat(z1,z2)& |z.a .. z.b| & dot product  = real number \footnote{If $O$ is the origin of the complex plan, then we get the dot product of the vectors $\overrightarrow{Oa}$ and $\overrightarrow{Ob}$} \\
-__pow(z1,z2)   & |z.a ^ z.b| & determinant = real number\\
-__div(z1,z2)   & |z.a / z.b|   &   affix     \\
-__tostring(z)  & tex.print(tostring(z)) & displays the affix   \\
-__tonumber(z)  & tonumber(z) & affix or nil\\
-__eq(z1,z2)    &  eq (z.a,z.b) & boolean\\
+\_\_add(z1,z2)   & |z.a + z.b| & affix \\
+\_\_sub(z1,z2)   & |z.a - z.b| & affix\\
+\_\_unm(z)       & |- z.a| & affix\\
+\_\_mul(z1,z2)   & |z.a * z.b|  &  affix\\
+\_\_concat(z1,z2)& |z.a .. z.b| & dot product  = real number \footnote{If $O$ is the origin of the complex plan, then we get the dot product of the vectors $\overrightarrow{Oa}$ and $\overrightarrow{Ob}$} \\
+\_\_pow(z1,z2)   & |z.a ^ z.b| & determinant = real number\\
+\_\_div(z1,z2)   & |z.a / z.b|   &   affix     \\
+\_\_tostring(z)  & tex.print(tostring(z)) & displays the affix   \\
+\_\_tonumber(z)  & tonumber(z) & affix or nil\\
+\_\_eq(z1,z2)    &  eq (z.a,z.b) & boolean\\
 \bottomrule
 \end{tabular}
 \end{minipage}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 % !TEX TS-program = lualatex
 % encoding : utf8 
-% Documentation of tkz-elements v1.82c
+% Documentation of tkz-elements v2.00c
 % Copyright 2023  Alain Matthes
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -21,10 +21,10 @@
                headings    = small
                ]{tkz-doc}
 \gdef\tkznameofpack{tkz-elements}
-\gdef\tkzversionofpack{1.82c}
+\gdef\tkzversionofpack{2.00c}
 \gdef\tkzdateofpack{\today}
 \gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{1.82c}
+\gdef\tkzversionofdoc{2.00c}
 \gdef\tkzdateofdoc{\today}
 \gdef\tkzauthorofpack{Alain Matthes}
 \gdef\tkzadressofauthor{}
@@ -225,6 +225,7 @@
 \input{TKZdoc-elements-classes-rectangle.tex}
 \input{TKZdoc-elements-classes-parallelogram.tex}
 \input{TKZdoc-elements-classes-regular.tex}
+\input{TKZdoc-elements-classes-vectors.tex}
 \input{TKZdoc-elements-classes-misc.tex}
 \input{TKZdoc-elements-intersection.tex}
 \input{TKZdoc-elements-indepthstudy.tex}
@@ -238,12 +239,12 @@
 \label{sec:cheat_sheet}
 
 % section cheat_sheet (end)
-|r| denotes a real number, |d| a positive real number, |n|an integer, |an| an angle, |b| a boolean, |s| a character string, |pt| a point, |v| variable, |L| a straight line, |C| a circle, |T| a triangle, |E| an ellipse, |Q| a quadrilateral, |P| a parallelogram, |R| a rectangle, |S| a square, |RP| a regular polygon, |O| an object (pt, L,C,T), . . a list of points or an object, < > optional argument. 
+|r| denotes a real number, |d| a positive real number, |n|an integer, |an| an angle, |b| a boolean, |s| a character string, |pt| a point, |v| variable, |L| a straight line, |C| a circle, |T| a triangle, |E| an ellipse, |V| a vector,|Q| a quadrilateral, |P| a parallelogram, |R| a rectangle, |S| a square, |RP| a regular polygon, |O| an object (pt, L,C,T), . . a list of points or an object, < > optional argument. 
 
 \begin{multicols}{3}
-  
-\fbox{\textbf{Point}}\\
-\textbf{Attributes} table(\ref{point:att})      \\                       
+
+\fbox{\textbf{point}}\\
+\textbf{Attributes} table(\ref{point:att})   \\
 |re                        -> r|   \\
 |im                        -> r|   \\
 |type                      -> s|   \\
@@ -254,10 +255,10 @@
 |..                        -> r|   \\
 |^                         -> r|   \\
 |conj                      -> pt|  \\
-|abs                       -> |    \\
-|mod                       -> |    \\
-|norm                      -> |    \\
-|arg                       -> r|   \\
+|abs                       -> r|  \\
+|mod                       -> d|    \\
+|norm                      -> d|    \\
+|arg                       -> d|   \\
 |get                       -> r,r| \\
 |sqrt                      -> pt|  \\
 |new                       -> pt|  \\
@@ -271,6 +272,8 @@
 |symmetry (...)            -> O|   \\
 |rotation (an , ...)       -> O|   \\
 |homothety (r , ...)       -> O|   \\
+|orthogonal(d)             -> pt|  \\
+|at()                      -> pt|  \\
                                    \\
 \fbox{\textbf{line}}               \\
 \textbf{Attributes} table(\ref{line:att})      \\
@@ -285,6 +288,7 @@
 |west                      -> pt|  \\
 |slope                     -> r|   \\
 |length                    -> d|   \\
+|vec                       -> V|  \\
 \textbf{Methods} table(\ref{line:met})     \\
 |new (pt,pt)               -> d|   \\
 |distance (pt)             -> d|   \\
@@ -327,7 +331,7 @@
 |gold (<swap>)             -> T|   \\
 |euclide (<swap>)          -> T|   \\
 |golden (<swap>)           -> T|   \\
-|devine ()                 -> T|   \\
+|divine ()                 -> T|   \\
 |cheops ()                 -> T|   \\
 |pythagoras ()             -> T|   \\
 |sublime  ()               -> T|   \\
@@ -406,6 +410,7 @@
                       |-> r,r,r|   \\
 |in_out (pt)               -> pt|  \\
 |check_equilateral ()      -> b|   \\
+                                    \\
 \fbox{\textbf{circle}}             \\
 \textbf{Attributes} table(\ref{circle:att}) \\
 |center                    -> pt|  \\
@@ -546,11 +551,27 @@
 |incircle ()               -> C|   \\
 |name (s)                  -> ?|   \\
                                    \\
+\fbox{\textbf{vector}}             \\
+\textbf{Attributes} table(\ref{vector:att})   \\
+|pa,pb                     -> pt|   \\
+|type                      -> s|   \\
+|norm                      -> d|   \\
+|slope                     -> r|   \\
+\textbf{Methods} table(\ref{vector:met})\\
+|new (pt,pt)               -> V|   \\
+|+ - *                     -> pt|  \\
+|normalize (V)             -> V|   \\
+|orthogonal (d)            -> V|   \\
+|scale (r)                 -> V|   \\
+|at (pt)                   -> V|   \\
+                                   \\                                  
 \fbox{\textbf{Misc.}}              \\
- \textbf{Attributes} table(\ref{misc}) \\                        
+ \textbf{Attributes} table(\ref{misc}) \\
+|scale (default =1)        -> r|   \\ 
 |tkzphi                    -> r|   \\
 |tkzinvphi                 -> r |  \\
 |tkzsqrtphi                -> r |  \\
+|tkz_epsilon (default=1e-8)-> r |  \\
 |length                    -> d |  \\
 |islinear(pt,pt,pt)        -> b |  \\
 |isortho(pt,pt,pt)         -> b |  \\
@@ -564,5 +585,10 @@
 |altitude (pt,pt,pt)       -> L|   \\
 |midpoint (pt,pt)          -> pt|  \\
 |equilateral (pt,pt)       -> T|   \\
+|format_number(r,n)        -> r|   \\
+
+\fbox{\textbf{Macros}}              \\
+|\tkzDN[n]{r}              -> r|  \\
+|\tkzDrawLuaEllipse((pt,pt,pt))|  \\
 \end{multicols}
 \end{document}
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -3,9 +3,8 @@
 
 Here's a sample organization. 
 
-The line |% !TEX TS-program = lualatex| ensures that you don't forget to compile with Lua\LATEX{}. The "standalone" class is useful, as all you need to do here is create a figure.
+The line |% !TEX TS-program = lualatex| ensures that you don't forget to compile with Lua\LATEX{}. The “standalone” class is useful, as all you need to do here is create a figure.
 
-The "mini" option in \pkg{tkz-euclide} allows you to load and use only plot-related macros.
 
 The package \pkg{ifthen} is useful if you need to use some Boolean.
 
@@ -13,7 +12,7 @@
 
 It is of course possible to leave the Lua code in the \tkzNameEnv{tkzelements} environment, but externalizing this code has its advantages. 
 
-The first advantage, if you use a good editor, is to have a good presentation of the code. Styles are different between "Lua" and \LATEX{}. This makes the code clearer. This is how I proceeded, then reintegrated the code into the main code.
+The first advantage, if you use a good editor, is to have a good presentation of the code. Styles are different between “Lua” and \LATEX{}. This makes the code clearer. This is how I proceeded, then reintegrated the code into the main code.
 
 Another advantage is that you don't have to comment the code incorrectly. For Lua code, you comment lines with |--| (double minus sign), whereas for \LATEX{}, you comment with |%|.
 
@@ -26,7 +25,7 @@
 % Created by Alain Matthes on 2024-01-09.
 
 \documentclass[margin = 12pt]{standalone} 
-\usepackage[mini]{tkz-euclide}
+\usepackage{tkz-euclide}
 \usepackage{tkz-elements,ifthen}
 
 \begin{document} 
@@ -46,7 +45,7 @@
 \end{document}
 \end{verbatim}
 
-And here is the code for the "Lua" part: the file |ex_sangaku.lua|
+And here is the code for the “Lua” part: the file |ex_sangaku.lua|
 
 \begin{verbatim}
 z.A         = point : new ( 0,0 ) 
@@ -79,7 +78,7 @@
 \subsection{Scale problem} % (fold)
 \label{sub:scale_problem}
 
-If necessary, it's better to do the scaling in the "Lua" section. The reason is that it will be more accurate. There is, however, a problem to be aware of. I've made it a point of honor to avoid using numerical values in my codes whenever possible. In principle, these values only appear in the definition of fixed points. If the "scale" option is used, scaling is applied when points are created. Let's imagine you want to organize your code as follows:
+If necessary, it's better to do the scaling in the “Lua” section. The reason is that it will be more accurate. There is, however, a problem to be aware of. I've made it a point of honor to avoid using numerical values in my codes whenever possible. In principle, these values only appear in the definition of fixed points. If the “scale” option is used, scaling is applied when points are created. Let's imagine you want to organize your code as follows:
 
 |scale = 1.5|\\
 |xB = 8|\\

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-presentation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-presentation.tex	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-presentation.tex	2024-02-05 21:11:54 UTC (rev 69715)
@@ -132,23 +132,23 @@
 z.A     = point: new (0 , 0)
 z.B     = point: new (10 , 0)        --  creation of two fixed points $A$ and $B$
 L.AB    = line:  new ( z.A, z.B)
-z.C     = L.AB:  gold_ratio ()       --  use of a method linked to "line"
-z.O_0   = line:  new ( z.A, z.B).mid  -- midpoint of segment with an attribute of "line"
+z.C     = L.AB:  gold_ratio ()       --  use of a method linked to “line”
+z.O_0   = line:  new ( z.A, z.B).mid  -- midpoint of segment with an attribute of “line”
 z.O_1   = line:  new ( z.A, z.C).mid --  objects are not stored and cannot be reused.
 z.O_2   = line:  new ( z.C, z.B).mid   
-C.AB    = circle: new ( z.O_0, z.B)  --  new object "circle" stored and reused
+C.AB    = circle: new ( z.O_0, z.B)  --  new object “circle” stored and reused
 C.AC    = circle: new ( z.O_1, z.C) 
 C.CB    = circle: new ( z.O_2, z.B)
-z.P     = C.CB.north                 --  "north" atrributes of a circle
+z.P     = C.CB.north                 --  no“rth atrributes of a circle
 z.Q     = C.AC.north
 z.O     = C.AB.south
-z.c     = z.C : north (2)           --   "north" method of a point (needs a parameter)
+z.c     = z.C : north (2)           --   “north” method of a point (needs a parameter)
 C.PC    = circle: new ( z.P, z.C) 
 C.QA    = circle: new ( z.Q, z.A)  
 z.P_0   = intersection (C.PC,C.AB)   --  search for intersections of two circles.
 z.P_1   = intersection (C.PC,C.AC)  --   idem
 _,z.P_2 = intersection (C.QA,C.CB)   --  idem
-z.O_3   = triangle: new ( z.P_0, z.P_1, z.P_2).circumcenter -- circumcenter attribute of "triangle"
+z.O_3   = triangle: new ( z.P_0, z.P_1, z.P_2).circumcenter -- circumcenter attribute of “triangle”
 \end{tkzelements}
 
 \begin{tikzpicture}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/tkz-elements.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,5 +1,5 @@
 % encoding : utf8 
-% tkz-elements.sty v1.82c
+% tkz-elements.sty v2.00c
 % 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,12 +11,13 @@
 % This work has the LPPL maintenance status “maintained”.
 % The Current Maintainer of this work is Alain Matthes.
 
-\ProvidesPackage{tkz-elements}[2024/01/16 v1.82c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[2024/02/04 v2.00c Graphic Object Library]
 \RequirePackage{luacode}
 \directlua{require "tkz_elements_main"}
 
 \newenvironment{tkzelements}
   {   \directlua{scale=1}
+      \directlua{tkz_epsilon=1e-8}
       \directlua{indirect = true}
       \directlua{for k,v in pairs(z) do z[k] = nil end}
       \directlua{for k,v in pairs(C) do C[k] = nil end}
@@ -45,4 +46,20 @@
 }
 
 \def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}} 
+\makeatletter
+\def\tkzDrawLuaEllipse{\pgfutil at ifnextchar[{\tkz at DrawLuaEllipse}{\tkz at DrawLuaEllipse[]}}
+\def\tkz at DrawLuaEllipse[#1](#2,#3,#4){% 
+\begingroup 
+\draw[#1](#2) ellipse [x radius=\tkzUseLua{length(z.#3,z.#2)}, y radius = \tkzUseLua{length(z.#4,z.#2)},rotate=\tkzUseLua{math.deg(slope_ (z.#3,z.#2))}]; 
+\endgroup
+}
+\def\tkzDN{\pgfutil at ifnextchar[{\tkz at DN}{\tkz at DN[2]}}
+\def\tkz at DN[#1]#2{%
+\begingroup
+\pgfkeys{/pgf/number format/.cd,std,precision=#1}
+\pgfmathprintnumber{#2}
+\endgroup
+ }
+
+\makeatother
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements-circles.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -52,10 +52,9 @@
 -- boolean --
 -----------------------
 function circle: in_out (pt)
-    local d,epsilon
-     epsilon = 10^(-12)
+    local d
     d = point.abs (pt - self.center)
-    if math.abs(d-self.radius) < epsilon
+    if math.abs(d-self.radius) < tkz_epsilon
      then
        return true
     else
@@ -129,20 +128,6 @@
   return  external_similitude_ (self.center,self.radius,C.center,C.radius)
 end
 
-function circle : common_tangent(C)
-   local o,s1,s2,t1,t2
-  o = external_similitude_ (self.center,self.radius,C.center,C.radius)
-
- if  self.radius < C.radius then 
-    t1,t2 = tangent_from_ (C.center,C.through,o) 
-    s1,s2 = tangent_from_ (self.center,self.through,o) 
-     return s1,t1,t2,s2
-  else
-     s1,s2 = tangent_from_ (C.center,C.through,o) 
-     t1,t2 = tangent_from_ (self.center,self.through,o) 
-      return s1,t1,t2,s2     
-  end
-end
 -----------------------
 -- lines --
 -----------------------
@@ -190,7 +175,6 @@
     end
 end
  
- -- version 1.60 new
  function circle : external_tangent(C)
    local i,t1,t2,k,T1,T2
       i     = barycenter_ ({C.center,self.radius},{self.center,-C.radius})
@@ -200,7 +184,7 @@
       T2    = homothety_(i,k,t2)
    return line : new (t1,T1),line : new (t2,T2)
  end
-  -- version 1.60 new
+
  function circle : internal_tangent(C)
    local i,t1,t2,k,T1,T2
       i = barycenter_ ({C.center,self.radius},{self.center,C.radius})
@@ -210,6 +194,21 @@
       T2 = homothety_(i,k,t2)
    return line : new (t1,T1),line : new (t2,T2)
  end
+ 
+ function circle : common_tangent(C)
+    local o,s1,s2,t1,t2
+   o = external_similitude_ (self.center,self.radius,C.center,C.radius)
+
+  if  self.radius < C.radius then 
+     t1,t2 = tangent_from_ (C.center,C.through,o) 
+     s1,s2 = tangent_from_ (self.center,self.through,o) 
+      return s1,t1,t2,s2
+   else
+      s1,s2 = tangent_from_ (C.center,C.through,o) 
+      t1,t2 = tangent_from_ (self.center,self.through,o) 
+       return s1,t1,t2,s2     
+   end
+ end
  -----------------------
  -- circles --
  -----------------------

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_class.lua 
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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 

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements-ellipses.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -105,13 +105,12 @@
 end
 
 function ellipse: in_out (pt)
-     local d,D,an,m,epsilon
-     epsilon = 10^(-12)
+     local d,D,an,m
      d = point.abs (pt - self.center)
      an = point.arg (pt - self.center)
      m = point(self.Rx*math.cos(an),self.Ry*math.sin(an))
      D = point.abs (m - self.center)
-     if D-d > epsilon
+     if D-d > tkz_epsilon
       then
         return true
      else

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_circles.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -53,14 +53,13 @@
 end
 
 function circles_position_ (c1,r1,c2,r2)
-   local d,max,min,epsilon
-   epsilon  = 10^(-12)
+   local d,max,min
    d        = point.mod(c1-c2)
    max      = r1+r2
    min      = math.abs ( r1 - r2)
    if d > max then return "outside"
-      elseif math.abs(d - max) < epsilon then return "outside tangent" -- epsilon
-      elseif math.abs(d - min) < epsilon then return "inside tangent" -- epsilon
+      elseif math.abs(d - max) < tkz_epsilon then return "outside tangent" -- epsilon
+      elseif math.abs(d - min) < tkz_epsilon then return "inside tangent" -- epsilon
       elseif d < min then return "inside"
       else return "intersect"
    end

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_intersections.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -33,10 +33,9 @@
 
 --  line ellipse
 function intersection_le (L,E)
-   local a,b,c,d,t1,t2,z1,z2,A,B,Bx,By,Ax,Ay,Rx,Ry,epsilon,sd
+   local a,b,c,d,t1,t2,z1,z2,A,B,Bx,By,Ax,Ay,Rx,Ry,sd
    A = (L.pa - E.center)*(point(math.cos(E.slope),-math.sin(E.slope)))
    B = (L.pb - E.center)*(point(math.cos(E.slope),-math.sin(E.slope)))
-   epsilon = 10^(-6)
    Rx  = E.Rx
    Ry  = E.Ry
    Ax  = A.re
@@ -62,7 +61,7 @@
              return z2*(point(math.cos(E.slope),math.sin(E.slope))) + E.center,
                     z1*(point(math.cos(E.slope),math.sin(E.slope))) + E.center
             end -- if 
-       elseif  math.abs(d) < epsilon 
+       elseif  math.abs(d) < tkz_epsilon 
        then
            t1 = (-(b))/(2*a)
            z1 = point ( Ax + (Bx-Ax)*t1 ,  Ay + (By-Ay)*t1 )           
@@ -74,8 +73,7 @@
 end
  
 function intersection_ll_ (a,b,c,d)
-    local x1,x2,x3,x4,y1,y2,y3,y4,DN,NX,NY,epsilon
-     epsilon = 10^(-12)
+    local x1,x2,x3,x4,y1,y2,y3,y4,DN,NX,NY
     x1 = a.re
     y1 = a.im
     x2 = b.re
@@ -85,7 +83,7 @@
     x4 = d.re
     y4 = d.im
     DN = (x1-x2)*(y3-y4) - (y1-y2)*(x3-x4)
-    if math.abs ( DN ) < epsilon then
+    if math.abs ( DN ) < tkz_epsilon then
      return false 
      else
     NX = (x1*y2-y1*x2)*(x3-x4) - (x1-x2)*(x3*y4-y3*x4)
@@ -95,18 +93,17 @@
 end
 
 function intersection_lc_ (pa,pb,c,p)
-  local zh, dh, arg_ab, test, phi,epsilon,c1,c2,r
+  local zh, dh, arg_ab, test, phi,c1,c2,r
     r = point.mod (c-p)
-    epsilon = 10^(-12)
     zh = projection_ (pa,pb,c)
     dh = point.abs  (c - zh)
     arg_ab = point.arg (pa - pb)
-   if dh < epsilon
+   if dh < tkz_epsilon
        then
        return
             c + polar_ (r , math.pi + arg_ab),  -- through center
             c + polar_ (r ,  arg_ab)
-  elseif math.abs (r - dh) < epsilon
+  elseif math.abs (r - dh) < tkz_epsilon
     then 
         return zh , zh -- tangent
   elseif dh > r

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_lines.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -28,9 +28,7 @@
 end
 
 function slope_ (a,b)
-  local z = b - a
-  angle = point.arg(z)
-  return angle
+  return angle_normalize_ (point.arg(b-a))
 end
 
 function gold_segment_ (a,b)
@@ -132,10 +130,9 @@
 end
 
 function in_segment_ (a,b,pt)
-    local sc,epsilon
-    epsilon = 10^(-12)
+    local sc
     sc = point.mod (pt-a) + point.mod (pt-b) - point.mod(b-a)
-    if sc <= epsilon
+    if sc <= tkz_epsilon
      then
        return true
     else

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_maths.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -39,10 +39,9 @@
 end
 
 function aligned ( m,a,b )
-    local z,epsilon
-    epsilon = 10^(-8)
+    local z
     z = (b-a)/(m-b)
-      if math.abs(z.im) < epsilon
+      if math.abs(z.im) < tkz_epsilon
         then
             return true
         else
@@ -51,11 +50,9 @@
 end 
 
 function islinear (z1,z2,z3)
-     local epsilon
      local dp
-     epsilon = 10^(-8)
     dp = (z2-z1) ^ (z3-z1)
-    if math.abs(dp) < epsilon 
+    if math.abs(dp) < tkz_epsilon 
     then 
         return true
     else 
@@ -64,11 +61,9 @@
 end
 
 function isortho (z1,z2,z3)
-   local epsilon
    local dp
-   epsilon = 10^(-8)
    dp = (z2-z1) .. (z3-z1)
-   if math.abs(dp) < epsilon 
+   if math.abs(dp) < tkz_epsilon 
     then 
         return true
     else 
@@ -112,16 +107,13 @@
 end
 
 function angle_normalize_ (a)
-local dblpi 
- dblpi = 2 * math.pi
- if a > dblpi 
- then 
-     a = a - dblpi
-  end
-  if a < 0 then
-  a = a + dblpi
-  end
-  return a
+    while a < 0 do
+        a = a + 2*math.pi
+    end
+    while a >= 2*math.pi do
+        a = a - 2*math.pi
+    end
+    return a
 end
 
 function barycenter (...)
@@ -133,4 +125,9 @@
    a=b
    b=t
    return a,b
-end
\ No newline at end of file
+end
+
+function format_number(number, decimal_places)
+    local format_string = string.format("%%.%df", decimal_places)
+    return string.format(format_string, number)
+end

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_points.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_regular.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_triangles.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -268,12 +268,11 @@
 end
 
 function check_equilateral_ (a,b,c)
-    local A,B,C,epsilon
-    epsilon = 10 ^(-8)
+    local A,B,C
     A = b - c
     B = a - c
     C = a - b
-    if (point.abs(A)-point.abs(B) < epsilon) and (point.abs(B)-point.abs(C) < epsilon) 
+    if (point.abs(A)-point.abs(B) < tkz_epsilon) and (point.abs(B)-point.abs(C) < tkz_epsilon) 
     then
        return true else return false
     end

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_lines.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -25,8 +25,9 @@
     local south_pb         = rotation_ (zb,math.pi/2,za)
     local west             = rotation_ (za,math.pi/2,north_pa)
     local east             = rotation_ (zb,math.pi/2,south_pb)
-    local slope            = point.arg(zb-za)
+    local slope            = angle_normalize_(point.arg(zb-za))
     local length           = point.mod(zb-za)
+    local vec              = vector : new (za,zb)
     local o = {pa          = za, 
                pb          = zb,
                north_pa    = north_pa, 
@@ -38,6 +39,7 @@
                slope       = slope,
                mid         = mid, 
                type        = type, 
+               vec         = vec,
                length      = length}
     setmetatable(o, self)
     self.__index = self
@@ -62,10 +64,9 @@
 -- Result -> boolean
 -------------------
 function line: in_out (pt)
-    local sc,epsilon
-    epsilon = 10^(-12)
+    local sc
     sc = math.abs ((pt-self.pa)^(pt-self.pb))
-    if sc <= epsilon
+    if sc <= tkz_epsilon
      then
        return true
     else
@@ -74,10 +75,9 @@
 end
 
 function line: in_out_segment (pt)
-    local sc,epsilon
-    epsilon = 10^(-12)
+    local sc
     sc = point.mod (pt-self.pa) + point.mod (pt-self.pb) - point.mod(self.pb-self.pa)
-    if sc <= epsilon
+    if sc <= tkz_epsilon
      then
        return true
     else
@@ -430,15 +430,12 @@
 line.euclid = line.sublime
 
 function line: euclide (swap)
-     if swap == nil then
-     swap = false
- end
-if swap  then  
+ if swap == nil then
+   return triangle : new (self.pa,self.pb, rotation_ (self.pa,math.pi/5,self.pb))
+  else  
      return triangle : new (self.pa,self.pb, rotation_ (self.pa,-math.pi/5,self.pb))
-else
-     return triangle : new (self.pa,self.pb, rotation_ (self.pa,math.pi/5,self.pb))
+   end
   end
-  end
 
 function line: divine ()
    local pta,ptb,pt,h
@@ -464,15 +461,9 @@
 end
 line.pythagoras = line.egyptian
 line.isis = line.egyptian
+line.golden = line.sublime
+line.golden_gnomon = line.divine
 
-function line: golden ()
-   local n,pt
-    n = rotation_ (self.pb,- math.pi/2,self.pa)
-    pt = self.pb + (n-self.pb)/tkzphi
-   return triangle : new (self.pa,self.pb,pt)
-end
-
-
 ------------------------------
 -- Result -> couple of points
 ------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements-main.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_maths.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_parallelogram.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -17,11 +17,10 @@
 
 parallelogram = {}
 function parallelogram: new (za, zb, zc, zd)
-   local d,epsilon
-    epsilon = 10^(-8)
+   local d
    local zi = midpoint_ (za,zc)
    local zj = midpoint_ (zb,zd)
-   if point.abs (zj-zi) < epsilon  then  else error ("it's not a parallelogram")    
+   if point.abs (zj-zi) < tkz_epsilon  then  else error ("it's not a parallelogram")    
    end
    local type              = 'parallelogram'
    local center                 = midpoint_ (za,zc)

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_point.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -311,4 +311,18 @@
 function point: normalize()
     local d = point.abs(self)
    return point(self.re/d,self.im/d)
+end
+
+function point: orthogonal(d)
+   local m
+   if d==nil then
+   return point(-self.im,self.re)
+else
+   m = point.mod(self)
+   return point(-self.im*d/m,self.re*d/m)
+end
+end
+
+function point : at (z)
+   return point(self.re+z.re,self.im+z.im)
 end
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_quadrilateral.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -50,11 +50,10 @@
 end
 -----------------------
 function quadrilateral : iscyclic ()
-   local d,epsilon
-    epsilon = 10^(-8)
+   local d
    local alpha = point.arg ((self.pd-self.pa) / (self.pb-self.pa))
    local beta  = point.arg ((self.pb-self.pc) / (self.pd-self.pc))
-   if math.abs (alpha+beta-math.pi) < epsilon then return true
+   if math.abs (alpha+beta-math.pi) < tkz_epsilon then return true
    else return false
    end
 end 

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements-rectangle.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -17,13 +17,12 @@
 
 rectangle = {}
 function rectangle: new (za, zb,zc,zd)
-   local d,epsilon
-    epsilon = 10^(-8)
+   local d
    local zi = midpoint_ (za,zc)
    local zj = midpoint_ (zb,zd)
-   if point.abs (zj-zi) < epsilon  then  else error ("it's not a rectangle")    
+   if point.abs (zj-zi) < tkz_epsilon  then  else error ("it's not a rectangle")    
    end
-   if math.abs(point.abs (zc-za)-point.abs (zd-zb)) < epsilon  then  else error ("it's not a rectangle")    
+   if math.abs(point.abs (zc-za)-point.abs (zd-zb)) < tkz_epsilon  then  else error ("it's not a rectangle")    
    end
    local type               = 'rectangle'
    local center             = midpoint_ (za,zc)

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_regular.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements-square.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -17,15 +17,14 @@
 
 square = {}
 function square: new (za, zb,zc,zd)
-   local d,epsilon
-    epsilon = 10^(-8)
+   local d
    local zi = midpoint_ (za,zc)
    local zj = midpoint_ (zb,zd)
-   if point.abs (zj-zi) < epsilon  then  else error ("it's not a square (center)")
+   if point.abs (zj-zi) < tkz_epsilon  then  else error ("it's not a square (center)")
    end
-   if math.abs(point.abs (zc-za) - point.abs (zd-zb)) < epsilon  then  else error ("it's not a square (diagonal)")
+   if math.abs(point.abs (zc-za) - point.abs (zd-zb)) < tkz_epsilon  then  else error ("it's not a square (diagonal)")
    end
-   if math.abs(point.abs (zb-za) - point.abs (zd-za)) < epsilon  then  else error ("it's not a square (side)")
+   if math.abs(point.abs (zb-za) - point.abs (zd-za)) < tkz_epsilon  then  else error ("it's not a square (side)")
    end
 
    local type              = 'square'

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_triangles.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -24,9 +24,9 @@
    local c                       = point.abs(zb-za)
    local a                       = point.abs(zc-zb)
    local b                       = point.abs(za-zc)
-   local alpha                   = point.arg ((zc-za) / (zb-za))
-   local beta                    = point.arg ((za-zb) / (zc-zb))
-   local gamma                   = point.arg ((zb-zc) / (za-zc))
+   local alpha                   = angle_normalize_(point.arg ((zc-za) / (zb-za)))
+   local beta                    = angle_normalize_(point.arg ((za-zb) / (zc-zb)))
+   local gamma                   = angle_normalize_(point.arg ((zb-zc) / (za-zc)))
    local ab                      = line : new (za,zb)
    local ca                      = line : new (zc,za)
    local bc                      = line : new (zb,zc)
@@ -139,7 +139,6 @@
 end
 
 function triangle :  soddy_center ()
-   local s,i,j,k
    return soddy_center_ (self.pa,self.pb,self.pc)
 end
 -------------------

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua	2024-02-05 21:11:37 UTC (rev 69714)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua	2024-02-05 21:11:54 UTC (rev 69715)
@@ -1,6 +1,6 @@
 -- tkz_elements_vectors.lua
--- date 2024/01/16
--- version 1.82c
+-- date 2024/02/04
+-- version 2.00c
 -- 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
@@ -14,33 +14,67 @@
 
 -- ----------------------------------------------------------------------------
 vector = {}
-function vector: new(z1, z2)
-    local type       = 'vector'
-    local norm       = point.abs (z2-z1)
-    local arg        = point.arg (z2-z1)
-    local o =  {st   = z1, 
-                ed   = z2,
-                norm = norm,
-                arg  = arg,
-                type = type }
+function vector: new(za, zb)
+    local type          = 'vector'
+    local slope         = angle_normalize_(point.arg(zb-za))
+    local norm        = point.mod(zb-za)
+    local o =  {t      = za, 
+                h      = zb,
+                norm  = norm,
+                slope   = slope,
+                type    = type }
     setmetatable(o, self)
     self.__index = self
     return o
 end
 
+function vector.__add(v1,v2)
+  return v1 : add (v2)
+end
+
+function vector.__sub(v1,v2)
+   local v = v2 : scale(-1)
+  return v1 : add (v)
+end
+
+function vector.__unm(v)
+ return v : scale(-1)
+end
+
+function vector.__mul(r,v)
+  return v : scale(r)
+end
+
 function vector: normalize  ()
-   local z  = self.ed-self.st
+   local z  = self.h-self.t
    local d  = point.abs(z)
    local nz = point(z.re/d,z.im/d)
-   return nz + self.st
+   return vector : new (self.t,nz + self.t)  
 end
 
- function vector: add (v)
-   return vector :new (self.st+v.st, self.ed,v.ed)
- end
+  function vector: add (ve)
+    return vector :new (self.t,self.h+ve.h-ve.t)
+  end
  
- function vector: ortho ()
-   return vector : new (self.st, rotation_(self.st,math.pi/2,self.ed))
- end
+function vector: orthogonal (d)
+local z
+if d == nil then
+   return vector : new (self.t, rotation_(self.t,math.pi/2,self.h))
+else
+   z = self.t+ point (d*math.cos(self.slope),d*math.sin(self.slope))
+ return vector : new (self.t, rotation_(self.t,math.pi/2,z))
+end
+end
+
+function vector: scale (d)
+   local l,z
+   l = self.norm
+   z = self.t+ point (d*l*math.cos(self.slope),d*l*math.sin(self.slope))
+   return vector : new (self.t,z )
+end
  
+function vector: at (zc)
+  return vector :new (zc,zc+self.h-self.t)
+end
+
 return vector



More information about the tex-live-commits mailing list.