% !TEX TS-program = lualatex
% encoding : utf8 
% Documentation of tkz-elements v2.30c
% Copyright 2024  Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
\PassOptionsToPackage{unicode}{hyperref}

\documentclass[DIV         = 14,
               fontsize    = 10,
               index       = totoc,
               twoside,
               cadre,
               headings    = small
               ]{tkz-doc}
\gdef\tkznameofpack{tkz-elements}
\gdef\tkzversionofpack{2.30c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{tkz-elements.pdf}
\gdef\tkzversionofdoc{2.30c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
\gdef\tkznamecollection{AlterMundus}
\gdef\tkzurlauthor{http://altermundus.fr}
\gdef\tkzengine{lualatex}
\gdef\tkzurlauthorcom{http://altermundus.fr}
\nameoffile{\tkznameofpack}

% -- Packages ---------------------------------------------------  
\usepackage[dvipsnames,svgnames]{xcolor}
\usepackage{calc}
\usepackage{tkz-base}
\usepackage[mini]{tkz-euclide}
\usepackage{tkz-elements}
\usepackage{pgfornament}
\usetikzlibrary{backgrounds}
\usetikzlibrary{mindmap}
\usetikzlibrary{shapes.multipart}
\usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref}
\hypersetup{
      linkcolor=Gray,
      citecolor=Green,
      filecolor=Mulberry,
      urlcolor=orange,
      menucolor=Gray,
      runcolor=Mulberry,
      linkbordercolor=Gray,
      citebordercolor=Green,
      filebordercolor=Mulberry,
      urlbordercolor=NavyBlue,
      menubordercolor=Gray,
      runbordercolor=Mulberry,
      pdfsubject={Euclidean Geometry},
      pdfauthor={\tkzauthorofpack},
      pdftitle={\tkznameofpack},
      pdfcreator={\tkzengine}
}

\usepackage{fontspec}
\setmainfont{texgyrepagella}[
  Extension = .otf,
  UprightFont = *-regular ,
  ItalicFont  = *-italic  ,
  BoldFont    = *-bold    ,
  BoldItalicFont = *-bolditalic
]
\setsansfont{texgyreheros}[
  Extension = .otf,
  UprightFont = *-regular ,
  ItalicFont  = *-italic  ,
  BoldFont    = *-bold    ,
  BoldItalicFont = *-bolditalic ,
]

\setmonofont{lmmono10-regular.otf}[
  Numbers={Lining,SlashedZero},
  ItalicFont=lmmonoslant10-regular.otf,
  BoldFont=lmmonolt10-bold.otf,
  BoldItalicFont=lmmonolt10-boldoblique.otf,
]
\newfontfamily\ttcondensed{lmmonoltcond10-regular.otf}
%% (La)TeX font-related declarations:
\linespread{1.05}  % Pagella needs more space between lines
%\usepackage[math-style=literal,bold-style=literal]{unicode-math}
\usepackage{unicode-math} 
\usepackage{fourier-otf}
\setmathfont{Concrete-Math.otf}
\let\rmfamily\ttfamily
\usepackage{multicol,lscape,wrapfig}
\usepackage[english]{babel}
\usepackage[normalem]{ulem}
\usepackage{multirow,multido,booktabs,cellspace}
\usepackage{shortvrb,fancyvrb,bookmark,enumitem} 
\usepackage{makeidx}
\usepackage[most]{tcolorbox}
\def\code{\texttt}
\newtcolorbox{mybox}{
enhanced,
boxrule=0pt,frame hidden,
borderline west={4pt}{0pt}{darkgray!50!white},
colback=lightgray!10!white,
sharp corners
}
%\usepackage{float}
\makeindex 

\makeatletter
\renewenvironment{theindex}
   {\section*{\indexname}\begin{multicols}{2}%
    \@mkboth{\MakeUppercase\indexname}%
  {\MakeUppercase\indexname}%
    \thispagestyle{plain}\parindent\z@
    \parskip\z@ \@plus .3\p@\relax
    \columnseprule \z@
    \columnsep 35\p@
    \let\item\@idxitem}
   {\end{multicols}}
\makeatother
\newcommand*{\tkzfname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
 #1}}}}
 \newcommand*{\tkzmname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
#1}}}}
 \newcommand*{\tkzaname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
#1}}}}  
\def\langle{} \def\rangle{}
\renewcommand*{\IargName}[2]{\texttt{#2}\index{#1_2@\texttt{#1: argument(s)}!\texttt{#2}}}
\newcommand*{\Amacro}[1]{\index{#1_1@\texttt{#1}}}
\renewcommand*{\IoptName}[2]{\texttt{#2}\index{#1_3@\texttt{#1: attribute(s)}!\texttt{#2}}}
\newcommand*{\Iattr}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  attribute}!\texttt{#2}}}
\newcommand*{\Imeth}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  method}!\texttt{#2}}}
\newcommand*{\Immeth}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  metamethod}!\_\_\texttt{#2}}}
\newcommand*{\Igfct}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  function}!\texttt{#2}}}
\newcommand*{\Iclass}[1]{\texttt{#1}\index{Class !#1@\texttt{#1}}}
\newcommand*{\tkzNameObj}[1]{\tkzname{#1}\Iobj{#1}}
\newcommand*{\Iobj}[1]{\index{Object_1@\texttt{Object}!\texttt{#1}}}
\newcommand*{\tkzRBomb}{\textcolor{red}{\bomb}}
\newcommand*{\IEmacro}[1]{\index{#1_1@\texttt{\textbackslash#1}}\texttt{#1}}
\newcommand*{\tkzimpbf}[1]{\texttt{\textbf{#1}}}
\newcommand*{\tkzEHand}{\textcolor{red}{\lefthand}}
\newcommand*{\ItkzPopt}[2]{\texttt{#2}\index{#1_3@\texttt{#1: options}!\texttt{#2}}}
%<---------------------------------------------------------------------------> 
% settings styles

\tkzSetUpColors[background=white,text=darkgray]  
\tkzSetUpPoint[size=2,color=teal,fill=teal!10]
\tkzSetUpLine[ultra thin,color=teal]
\tkzSetUpCompass[color=orange,ultra thin,/tkzcompass/delta=10] 
\tikzset{label style/.append style={below right,color=teal,font=\scriptsize}}
\tikzset{new/.style={color=orange,ultra thin}} 
\tikzset{step 1/.style={color=cyan,ultra thin}} 
\tikzset{step 2/.style={color=purple,ultra thin}} 
\def\tkzar{\hspace{1em}-->\hspace{1em}}

\makeatletter\let\percentchar\@percentchar\makeatother
\def\luaveclen#1#2{%
\directlua{tex.print(string.format(
'\percentchar.5f',math.sqrt((#1)*(#1)+(#2)*(#2))))
}}
% printnumber

\let\pmpn\pgfmathprintnumber

\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb

\begin{document} 
%\LuaCodeDebugOn 
  
\parindent=0pt
\tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
\clearpage

\defoffile{\lefthand\
 This document compiles some notes about  \tkzname{\tkznameofpack}, the initial version of a \code{Lua}  library designed to perform all the necessary calculations for defining objects in Euclidean geometry figures. Your document  must be compiled using Lua\LaTeX.\\ 
 With \pkg{tkz-elements}, definitions and calculations are exclusively conducted using \pkg{Lua}. \\ 
 The primary programming approach offered is oriented towards \code{object programming}, utilizing object classes such as point, line, triangle, circle, and ellipse.  Currently, after the calculations are completed, \pkg{tkz-euclide} or   \pkg{TikZ} is used for drawing purposes.\\
 I discovered Lua and object-oriented programming  while developing this package, so it's highly likely that I've made a few mistakes.   If you'd like to contribute to the development of this package or provide advice on how to proceed, please contact me via email.
}

\presentation

\vspace*{1cm}

\lefthand\ Acknowledgements : I received much valuable advices, remarks, corrections  from \\ \tkzimp{Nicolas Kisselhoff}, \tkzimp{David Carlisle}, \tkzimp{Roberto Giacomelli} and \tkzimp{Qrrbrbirlbel}.\\
Special thanks to \tkzimp{Wolfgang Büchel} for his invaluable contribution in correcting the examples.

\vspace*{12pt}
\lefthand\ I would also like to extend my gratitude to \tkzimp{Eric Weisstein}, creator of 
\href{http://mathworld.wolfram.com/about/author.html}{MathWorld}.

\vspace*{12pt}
\lefthand\ You can find some examples on my site and a french documentation:
\href{http://altermundus.fr}{altermundus.fr}.

\vfill
Please report typos or any other comments to this documentation to: \href{mailto:al.ma@mac.com}{\textcolor{blue}{Alain Matthes}}.

This file can be redistributed and/or modified under the terms of the \LaTeX{} 
Project Public License Distributed from \href{http://www.ctan.org/}{CTAN}\  archives.

\clearpage


\tableofcontents

\clearpage
\newpage
\input{TKZdoc-elements-structure.tex}
\input{TKZdoc-elements-why.tex}
\input{TKZdoc-elements-presentation.tex}
\input{TKZdoc-elements-convention.tex}
\input{TKZdoc-elements-organization.tex}
\input{TKZdoc-elements-transfers.tex}
\input{TKZdoc-elements-classes.tex}
\input{TKZdoc-elements-classes-point.tex}
\input{TKZdoc-elements-classes-line.tex}
\input{TKZdoc-elements-classes-circle.tex}
\input{TKZdoc-elements-classes-triangle.tex}
\input{TKZdoc-elements-classes-ellipse.tex}
\input{TKZdoc-elements-classes-quadrilateral.tex}
\input{TKZdoc-elements-classes-square.tex}
\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-matrices.tex}
\input{TKZdoc-elements-classes-misc.tex}
\input{TKZdoc-elements-intersection.tex}
\input{TKZdoc-elements-indepthstudy.tex}
\input{TKZdoc-elements-examples.tex}

\clearpage\newpage
\small\printindex

\newpage
\section{Cheat\_sheet} % (fold)
\label{sec:cheat_sheet}

% section cheat_sheet (end)
|r| denotes a real number, |cx| complex number, |d| a positive real number, |n| an integer, |an| an angle, |b| a boolean, |s| a character string, |pt| a point, |t| a table, |m| a matrix, |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, |M| a matrix, |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})   \\
|re                        -> r|   \\
|im                        -> r|   \\
|type                      -> s|   \\
|argument                  -> r|   \\
|modulus                   -> d|   \\
\textbf{Functions} table(\ref{point:att})   \\
|new                       -> pt|  \\
|polar                     -> pt|  \\
|polar_deg                 -> pt|  \\
\textbf{Methods} table(\ref{complex:meta})  \\
|+ - * /     (pt,pt)       -> pt|  \\
|..          (pt,pt)       -> r|   \\
|^           (pt,pt)       -> r|   \\
|=                         -> b|   \\
|tostring                  -> s|   \\
\textbf{Methods} table(\ref{point:met})  table(\ref{complex:met})    \\
|conj                      -> pt|  \\
|abs                       -> r|   \\
|mod                       -> d|   \\
|norm                      -> d|   \\
|arg                       -> d|   \\
|get                       -> r,r| \\
|sqrt                      -> pt|  \\
|north(d)                  -> pt|  \\
|south(d)                  -> pt|  \\
|east(d)                   -> pt|  \\
|west(d)                   -> pt|  \\
|normalize(pt)             -> pt|  \\
|symmetry (...)            -> O|   \\
|rotation (an , ...)       -> O|   \\
|homothety (r , ...)       -> O|   \\
|orthogonal(d)             -> pt|  \\
|at()                      -> pt|  \\
|print()                   -> s|   \\
                                   \\
\fbox{\textbf{line}}               \\
\textbf{Attributes} table(\ref{line:att})  \\
|pa,pb                     -> pt|  \\
|type                      -> s|   \\
|mid                       -> pt|  \\
|north_pa                  -> pt|  \\
|north_pb                  -> pt|  \\
|south_pa                  -> pt|  \\
|south_pb                  -> pt|  \\
|east                      -> pt|  \\
|west                      -> pt|  \\
|slope                     -> r|   \\
|length                    -> d|   \\
|vec                       -> V|   \\
\textbf{Methods} table(\ref{line:met})     \\
|new (pt,pt)               -> d|   \\
|distance (pt)             -> d|   \\
|slope ()                  -> r|   \\
|in_out (pt)               -> b|   \\
|in_out_segment (pt)       -> b|   \\
|barycenter (r,r)          -> pt|  \\
|point (t)                 -> pt|  \\
|midpoint ()               -> pt|  \\
|harmonic_int (pt)         -> pt|  \\
|harmonic_ext (pt)         -> pt|  \\
|harmonic_both (d)         -> pt|  \\
|gold_ratio()              -> pt|  \\
|normalize ()              -> pt|  \\
|normalize_inv ()          -> pt|  \\
|_north_pa (d)             -> pt|  \\
|_north_pb (d)             -> pt|  \\               
|_south_pa (d)             -> pt|  \\
|_south_pb (d)             -> pt|  \\                  
|_east (d)                 -> pt|  \\
|_west (d)                 -> pt|  \\
|report (r,pt)             -> pt|  \\
|colinear_at (pt,k)        -> pt|  \\                 
|translation (...)         -> O|   \\
|projection (...)          -> O|   \\
|reflection (...)          -> O|   \\
|ll_from ( pt )            -> L|   \\
|ortho_from ( pt )         -> L|   \\
|mediator ()               -> L|   \\
|circle ()                 -> C|   \\
|circle_swap ()            -> C|   \\
|diameter ()               -> C|   \\
|apollonius (r)            -> C|   \\                     
|equilateral (<swap>)      -> T|   \\
|isosceles (an,<swap>)     -> T|   \\
|school ()                 -> T|   \\
|two_angles (an,an)        -> T|   \\
|half ()                   -> T|   \\
|sss (r,r,r)               -> T|   \\
|sas (r,an)                -> T|   \\
|ssa (r,an)                -> T|   \\
|gold (<swap>)             -> T|   \\
|euclide (<swap>)          -> T|   \\
|golden (<swap>)           -> T|   \\
|divine ()                 -> T|   \\
|cheops ()                 -> T|   \\
|pythagoras ()             -> T|   \\
|sublime  ()               -> T|   \\
|egyptian ()               -> T|   \\
|square (<swap>)           -> T|   \\
                                   \\
\fbox{\textbf{triangle}}           \\
\textbf{Attributes} table(\ref{triangle:att})      \\
|pa,pb,pc                  -> pt|  \\
|circumcenter              -> pt|  \\
|centroid                  -> pt|  \\
|incenter                  -> pt|  \\
|eulercenter               -> pt|  \\
|orthocenter               -> pt|  \\
|spiekercenter             -> pt|  \\
|type                      -> s|   \\
|a                         -> d|   \\
|b                         -> d|   \\
|c                         -> d|   \\
|ab                        -> L|   \\
|bc                        -> L|   \\
|ca                        -> L|   \\
|alpha                     -> r|   \\
|beta                      -> r|   \\
|gamma                     -> r|   \\
\textbf{Methods} table(\ref{triangle:met}) \\
|new (pt,pt,pt)            -> pt|  \\
|trilinear (r,r,r)         -> pt|  \\
|barycentric (r,r,r)       -> pt|  \\
|bevan_point ()            -> pt|  \\
|mittenpunkt_point ()      -> pt|  \\
|gergonne_point ()         -> pt|  \\
|nagel_point ()            -> pt|  \\
|feuerbach_point ()        -> pt|  \\
|lemoine_point()           -> pt|  \\
|symmedian_point()         -> pt|  \\
|spieker_center()          -> pt|  \\
|barycenter (r,r,r)        -> pt|  \\
|base (u,v)                -> pt|  \\
|euler_points ()           -> pt|  \\
|nine_points ()            -> pt|  \\
|point (t)                 -> pt|  \\
|soddy_center ()           -> pt|  \\
|conway_points ()          -> pts|  \\
|euler_line ()             -> L|   \\
|symmedian_line (n)        -> L|   \\
|altitude (n)              -> L|   \\
|bisector (n)              -> L|   \\
|bisector_ext(n)           -> L|   \\
|antiparallel(pt,n)        -> L|   \\
|euler_circle ()           -> C|   \\
|circum_circle()           -> C|   \\
|in_circle ()              -> C|   \\
|ex_circle (n)             -> C|   \\
|first_lemoine_circle()    -> C|   \\
|second_lemoine_circle()   -> C|   \\
|spieker_circle()          -> C|   \\
|soddy_circle ()           -> C|   \\
|conway_circle ()          -> C|   \\
|pedal_circle ()           -> C|   \\
|cevian_circle ()          -> C|   \\
|orthic()                  -> T|   \\
|medial()                  -> T|   \\
|incentral()               -> T|   \\
|excentral()               -> T|   \\
|intouch()                 -> T|   \\
|contact()                 -> T|   \\
|extouch()                 -> T|   \\
|feuerbach()               -> T|   \\
|anti ()                   -> T|   \\
|tangential ()             -> T|   \\
|cevian (pt)               -> T|   \\
|symmedian ()              -> T|   \\
|euler ()                  -> T|   \\
|pedal (pt)                -> T|   \\
|projection (pt)     -> pt,pt,pt|  \\
|parallelogram ()          -> pt|  \\
|area ()                   -> d|   \\
|barycentric_coordinates(pt)|      \\
                      |-> r,r,r|   \\
|in_out (pt)               -> pt|  \\
|check_equilateral ()      -> b|   \\
                                   \\
\fbox{\textbf{circle}}             \\
\textbf{Attributes} table(\ref{circle:att}) \\
|center                    -> pt|  \\
|through                   -> pt|  \\
|north                     -> pt|  \\
|south                     -> pt|  \\
|east                      -> pt|  \\
|west                      -> pt|  \\
|opp                       -> pt|  \\
|type                      -> s|   \\
|radius                    -> d|   \\
|ct                        -> L|   \\ 
\textbf{Methods} table(\ref{circle:met})  \\
|new (pt,pt)               -> C|   \\
|radius (pt, r)            -> C|   \\
|diameter (pt,pt)          -> C|   \\       
|in_out (pt)               -> b|   \\     
|in_out_disk (pt)          -> b|   \\     
|circles_position (C)      -> s|   \\     
|power (pt)                -> r|   \\     
|antipode (pt)             -> pt|  \\     
|midarc (pt,pt)            -> pt|  \\     
|point (r)                 -> pt|  \\     
|random_pt (lower, upper)  -> pt|  \\     
|internal_similitude (C)   -> pt|  \\     
|external_similitude (C)   -> pt|  \\       
|radical_center(C,<C>)     -> pt|  \\
|tangent_at (pt)           -> L|   \\     
|radical_axis (C)          -> L|   \\     
|radical_circle(C,<C>)     -> C|   \\     
|orthogonal_from (pt)      -> C|   \\     
|orthogonal_through(pt,pt) -> C|   \\
|midcircle(C)              -> C|   \\
|external_tangent(C)       -> L,L| \\
|internal_tangent(C)       -> L,L| \\
|common_tangent(C)         -> L,L| \\
|tangent_from (pt)         -> L,L| \\
|inversion (...)           -> O |  \\
                                   \\
\fbox{\textbf{ellipse}}            \\
\textbf{Attributes} table(\ref{ellipse:met})      \\
|center                    -> pt|  \\
|vertex                    -> pt|  \\
|covertex                  -> pt|  \\
|Fa                        -> pt|  \\
|Fb                        -> pt|  \\
|north                     -> pt|  \\
|south                     -> pt|  \\
|east                      -> pt|  \\
|west                      -> pt|  \\
|Rx                        -> d|   \\
|Ry                        -> d|   \\
|slope                     -> r|   \\
|type                      -> s|   \\
\textbf{Methods} table(\ref{ellipse:met}) \\
|new (pt,pt,pt)            -> E|   \\
|foci (pt,pt,pt)           -> E|   \\
|radii (pt,r,r,an)         -> E|   \\
|in_out (pt)               -> b|   \\
|tangent_at (pt)           -> L|   \\
|tangent_from (pt)         -> L|   \\
|point (r)                 -> pt|  \\
                                   \\
\fbox{\textbf{square}}             \\                      
 \textbf{Attributes} table(\ref{square:att})      \\
|pa,pb,pc,pd               -> pt|  \\
|type                      -> s|   \\
|side                      -> d|   \\
|center                    -> pt|  \\
|exradius                  -> d|   \\
|inradius                  -> d|   \\
|diagonal                  -> d|   \\
|proj                      -> pt|  \\
|ab bc cd da               -> L|   \\
|ac bd                     -> L|   \\
 \textbf{Methods} table(\ref{square:met})      \\
|new (pt,pt,pt,pt)         -> S|   \\ 
|rotation (pt,pt)          -> S|   \\
|side (pt,pt,<swap>)       -> S|   \\
                                   \\
\fbox{\textbf{rectangle}}          \\
\textbf{Attributes} table(\ref{rectangle:att}) \\
|pa,pb,pc,pd               -> pt|  \\
|type                      -> s|   \\
|center                    -> pt|  \\
|exradius                  -> d|   \\
|length                    -> r|   \\
|width                     -> r|   \\
|diagonal                  -> d|   \\
|ab bc cd da               -> L|   \\
|ac bd                     -> L|   \\
 \textbf{Methods} table(\ref{rectangle:met}) \\
|new (pt,pt,pt,pt)         -> R|   \\ 
|angle (pt,pt,an)          -> R|   \\
|gold  (pt,pt,<swap>)      -> R|   \\
|diagonal  (pt,pt,<swap>)  -> R|   \\
|side  (pt,pt,r,<swap>)    -> R|   \\
|get_lengths ()            ->r,r|  \\
                                   \\
\fbox{\textbf{quadrilateral} }     \\
 \textbf{Attributes} table(\ref{quadrilateral:att}) \\
|pa,pb,pc,pd               -> pt|  \\
|ab bc cd da               -> L |  \\
|ac bd                     -> L |  \\
|type                      -> s |  \\
|i                         -> pt|  \\
|g                         -> pt|  \\
|a b c d                   -> r|   \\
 \textbf{Methods} table(\ref{quadrilateral:met}) \\
|new (pt,pt,pt,pt)         -> Q|   \\ 
|iscyclic ()               -> b|   \\         
                                   \\
\fbox{\textbf{parallelogram}}      \\
 \textbf{Attributes} table(\ref{parallelogram:att}) \\
|pa,pb,pc,pd               -> pt|  \\
|ab bc cd da               -> L |  \\
|ac bd                     -> L |  \\
|type                      -> s |  \\
|center                    -> pt|  \\
 \textbf{Methods} table(\ref{parallelogram:met}) \\
|new (pt,pt,pt,pt)         ->|     \\ 
|fourth (pt,pt,pt)         ->|     \\
                                   \\
\fbox{\textbf{Regular\_polygon}}   \\
 \textbf{Attributes} table(\ref{regular:att}) \\
|center                    -> pt|  \\
|through                   -> pt | \\
|circle                    -> C |  \\
|type                      -> s |  \\
|side                      -> d|   \\
|exradius                  -> d|   \\
|inradius                  -> d|   \\
|proj                      -> pt|  \\
|nb                        -> i|   \\
|angle                     -> an|  \\
 \textbf{Methods} table(\ref{regular:met})  \\
|new (pt,pt,n)             -> PR|  \\
|incircle ()               -> C|   \\
|name (s)                  -> ?|   \\
                                   \\
\fbox{\textbf{vector}}             \\
\textbf{Attributes} table(\ref{vector:att}) \\
|type                      -> s|   \\
|norm                      -> d|   \\
|slope                     -> r|   \\
|mtx                       -> M|   \\
\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{matrix}}             \\
\textbf{Attributes} table(\ref{matrix:att})   \\
|set                       ->  t|  \\
|rows                      ->  n|  \\
|cols                      ->  n|  \\
|type                      ->  s|  \\
|det                       ->  r|  \\
\textbf{Functions} table(\ref{matrix:met}) \\
|new                       ->  m|  \\
|square                    ->  m|  \\
|htm                       ->  m|  \\
|vector                    ->  m|  \\
\textbf{Metamethods} table(\ref{matrix:meta}) \\
|+ - *  (m,m)              -> m|   \\
|^ (m,n)                   -> m|   \\
|=                         -> b|   \\
|tostring                  -> s|   \\
\textbf{Method} table(\ref{matrix:met})   \\
|print                     -> s|   \\                              
|get                       -> r/cx|\\
|inverse                   -> m|   \\    
|adjugate                  -> m|   \\ 
|transpose                 -> m|   \\   
|is_diagonal               -> b|   \\   
|is_orthogonal             -> b|   \\  
|homogenization            -> m|   \\  
|htm_apply                 -> m|   \\  
                                   \\                                  
\fbox{\textbf{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|   \\
|value{r}                  -> r|   \\
|real                      -> r|   \\
|angle_normalize (an)      -> an|  \\
|barycenter (...)          -> pt|  \\
|bisector (pt,pt,pt)       -> L|   \\
|bisector_ext (pt,pt,pt)   -> L|   \\
|altitude (pt,pt,pt)       -> L|   \\
|midpoint (pt,pt)          -> pt|  \\
|equilateral (pt,pt)       -> T|   \\
|format_number(r,n)        -> r|   \\
|solve_quadratic(cx,cx,cx) -> cx,cx|   \\
|\tkzUseLua{v}             -> s|   \\
                                   \\
\fbox{\textbf{Macros}}             \\
|\tkzDN[n]{r}              -> r|   \\
|\tkzDrawLuaEllipse((pt,pt,pt))|   \\
\end{multicols}
\end{document}