\section{Transformations}
In the following:
\begin{itemize}
    \item the argument \argu{L} is either a complex number, a list of complex numbers, or a list of lists of complex numbers,
    \item the line \argu{d} is a list of two complex numbers: a point on the line and a direction vector.
\end{itemize}

\subsection{affin}
The function \cmd{ld.affin(L, d, v, k)} returns the image of \argu{L} by the affinity of base line \argu{d}, parallel to the vector \argu{v} and of ratio \argu{k}.

\subsection{ftransform}
The function \cmd{ld.ftransform(L, f)} returns the image of \argu{L} by the function \argu{f}, which must be a function of the complex variable. If one of the elements of \argu{L} is the complex number \val{cpx.Jump}, then it is returned as is in the result.

\subsection{hom}
The function \cmd{ld.hom(L, factor \fac{, center})} returns the image of \argu{L} by the homothety with center \argu{center} and ratio \argu{factor}. By default, the argument \argu{center} is $0$.

\subsection{inv}
The function \cmd{ld.inv(L, radius \fac{, center})} returns the image of \argu{L} by the inversion with respect to the circle with center \argu{center} and radius \argu{radius}. By default, the argument \argu{center} is $0$.

\subsection{proj}
The function \cmd{ld.proj(L, d)} returns the image of \argu{L} by the orthogonal projection onto the line \argu{d}.

\subsection{projO}
The function \cmd{ld.projO(L, d, v)} returns the image of \argu{L} by projection onto the line \argu{d} parallel to the vector \argu{v}.

\subsection{rotate}
The function \cmd{ld.rotate(L, angle \fac{, center})} returns the image of \argu{L} by rotation with center \emph{center} and angle \argu{angle} (in degrees). By default, the argument \argu{center} is $0$.

\subsection{shift}
The function \cmd{ld.shift(L, u)} returns the image of \argu{L} by translation of vector \argu{u}.

\subsection{simil}
The function \cmd{ld.simil(L, factor, angle \fac{, center})} returns the image of \argu{L} by the similarity of center \argu{center}, ratio \argu{factor}, and angle \argu{angle} (in degrees). By default, the argument \emph{center} is $0$.

\subsection{sym}
The function \cmd{ld.sym(L, d)} returns the image of \argu{L} by the orthogonal symmetry of axis \argu{d}.

\subsection{symG}
The function \cmd{ld.symG(L, d, v)} returns the image of \argu{L} by the symmetry about the line \argu{d} followed by the translation of vector \argu{v} (sliding symmetry).

\subsection{symO}
The function \cmd{ld.symO(L, d, v)} returns the image of \argu{L} by symmetry with respect to the line \argu{d} and parallel to the vector \argu{v} (oblique symmetry).

\begin{demo}{Using Transformations}
\begin{luadraw}{name=Sierpinski}
local ld = luadraw
local g = ld.graph:new{window={-5,5,-5,5},size={10,10}}
local i, hom = ld.cpx.I, ld.hom
local rand = math.random
local A, B, C = 5*i, -5-5*i, 5-5*i -- triangle initial
local T, niv = {{A,B,C}}, 5
for k = 1, niv do
    T = ld.concat( hom(T,0.5,A), hom(T,0.5,B), hom(T,0.5,C) )
end
for _,cp in ipairs(T) do
    g:Filloptions("full", ld.rgb(rand(),rand(),rand()))
    g:Dpolyline(cp,true)
end
g:Show()
\end{luadraw}
\end{demo}
