summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex457
1 files changed, 419 insertions, 38 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex b/Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex
index 3be402bebd2..95fa8782722 100644
--- a/Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex
+++ b/Master/texmf-dist/doc/generic/pst-bezier/pst-bezier-doc.tex
@@ -1,20 +1,34 @@
-%% $Id: pst-bezier-doc.tex 86 2009-01-29 10:34:00Z herbert $
-\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
- headexclude,footexclude,oneside]{pst-doc}
+%% $Id: pst-bezier-doc.tex 134 2009-09-27 12:28:50Z herbert $
+\documentclass[11pt,english,bibliography=totoc,parskip=false,smallheadings,
+ oneside]{pst-doc}
\usepackage[utf8]{inputenc}
-\usepackage{pst-bezier}
\usepackage{esvect}
\let\vec\vv
+\usepackage{animate}
+\usepackage{pst-bezier}
+\usepackage{bbold}
+\addbibresource{pst-bezier-doc.bib}
\let\pstBezierFV\fileversion
\lstset{pos=l,wide=false,language=PSTricks,
morekeywords={multidipole,parallel},basicstyle=\footnotesize\ttfamily}
+\definecolor{navy}{rgb}{0 0 0.5}
%
+\def\bgImage{\pspicture[showgrid](0,1)(5,6)
+\psset{showpoints}
+\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
+ (2,2)(3,1)(4,2)(4,4)(3,5)%
+ (2,4)(1,5)
+\psbcurve(1,1)(2,2)(3,1)(4,2)%
+ T{0.5}(4,4)(3,5)(2,4)(1,5)
+\endpspicture}
+\newtheorem{definition}{Definition}
+\def\dy{\displaystyle}
\begin{document}
\title{\texttt{pst-bezier}}
\subtitle{A PSTricks package for drawing Bezier curves; v.\pstBezierFV}
-\author{Tobias Nähring \\Herbert Vo\ss}
+\author{Jean-Paul Bécar\\Lionel Garnier\\Tobias Nähring \\Manuel Luque\\Herbert Voß}
\docauthor{}
\date{\today}
\maketitle
@@ -37,7 +51,7 @@ control points without simultaneously changing the interpolated
points. Note that some control is possible via the
\Lkeyword{curvature} option.
-The \Lcs{psbezier} macro gives full control over the
+The \Lcs{psbcurve} macro gives full control over the
interpolation points and the control points of one Bezier polynominal
of degree three (two interpolated points and two control
points).
@@ -47,7 +61,7 @@ Thanks to: \\
Jean-C\^ome Charpentier.
\end{abstract}
-%% Author: Tobias N"ahring
+\clearpage
\section{Introduction}
@@ -95,7 +109,7 @@ correctly installed the package:
\usepackage{pstricks}
\usepackage{pst-bezier}
\begin{document}
- \begin{pspicture}(6,4)
+ \begin{pspicture}(0,-0.4)(6,2)
\psbcurve(1,2)(5,2) % Draw just one straight line.
\end{pspicture}
\end{document}
@@ -107,8 +121,8 @@ In the most simple form you can specify any number of interpolation
points as the argument of \Lcs{psbcurve}.
\begin{LTXexample}
-\begin{pspicture}[showgrid=true](5,3)
- \psbcurve(1,1)(2,2)(3,1)(4,2)
+\begin{pspicture}[showgrid](0,-0.4)(5,3)
+ \psbcurve[showpoints](1,1)(2,2)(3,1)(4,2)
\end{pspicture}
\end{LTXexample}
@@ -116,8 +130,8 @@ As usual, options can be specified within brackets.
\begin{LTXexample}
-\begin{pspicture}[showgrid=true](5,3)
- \psbcurve[showpoints=true](1,1)(2,2)(3,1)(4,2)
+\begin{pspicture}[showgrid](0,-0.4)(5,3)
+ \psbcurve[showpoints](1,1)(2,2)(3,1)(4,2)
\end{pspicture}
\end{LTXexample}
@@ -129,8 +143,8 @@ time labels are added to the points (this is just for the following
description, it is not a feature of \Lcs{psbcurve}).
\begin{LTXexample}
-\begin{pspicture}[showgrid=true](5,3)
- \psbcurve[showpoints=true](1,1)(2,2)(3,1)(4,2)
+\begin{pspicture}[showgrid](0,-0.4)(5,3)
+ \psbcurve[showpoints](1,1)(2,2)(3,1)(4,2)
\uput[-90](1,1){$\vec{p}_{0}=\vec{l}_{1}$}
\uput[90](1.5,2){$\vec{r}_{1}$}
\uput[90](2,2){$\vec{p}_{1}$}
@@ -181,8 +195,8 @@ background in {\color{blue}blue} color.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)l(2,1)(2,2)(3,1)r(4,1)(4,2)
@@ -192,8 +206,8 @@ background in {\color{blue}blue} color.
\end{LTXexample}
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)(2,2)l(2,1)(3,1)(4,2)
@@ -208,7 +222,7 @@ interpolation point.
\begin{LTXexample}
-\pspicture(5,3)
+\pspicture(0,-0.4)(5,3)
\psbcurve(1,1)(2,2)l(2,1)(3,1)(4,2)
\endpspicture
\end{LTXexample}
@@ -220,10 +234,10 @@ interpolation point $\vec{p}_{k-1}$. In that way you get a smooth joint as
demonstrated in the next example.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
+\pspicture[showgrid](0,-0.4)(5,3)
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
-\psset{showpoints=true}
+\psset{showpoints}
\psbcurve(1,1)(2,2)L(2,1)(3,1)(4,2)
\uput[-90](2,1){$\vec{l}_{2}$}
\uput[0](2,2){$\vec{p}_{1}$}
@@ -236,8 +250,8 @@ automatically computed control points of the current Bezier spline.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)(2,2)t{0.5}(3,1)(4,2)
@@ -252,8 +266,8 @@ point you can use the \Lnotation{tl}\Largb{t} or \Lnotation{tr}\Largb{t} modifie
respectively, as demonstrated in the following two examples.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)%
@@ -263,8 +277,8 @@ respectively, as demonstrated in the following two examples.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)(2,2)tr{0.5}(3,1)(4,2)
@@ -278,8 +292,8 @@ of the modifier. In the next example a negative tension value leads to
a rather surprising effect.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve(1,1)(2,2)ts{-0.5}(3,1)(4,2)
@@ -291,8 +305,8 @@ The default value of the tension can be set with the option
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
-\psset{showpoints=true}
+\pspicture[showgrid](0,-0.4)(5,3)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)
\psbcurve[bcurveTension=0.5](1,1)%
@@ -307,8 +321,8 @@ middle of a \Lcs{psbcurve}. Just use the modifier \Lnotation{T}\Largb{t} for
that purpose as shown in the following example.
\begin{LTXexample}
-\pspicture[showgrid=true](5,6)
-\psset{showpoints=true}
+\pspicture[showgrid](0,0.6)(5,6)
+\psset{showpoints}
\psbcurve[linecolor=blue,linewidth=0.01](1,1)%
(2,2)(3,1)(4,2)(4,4)(3,5)%
(2,4)(1,5)
@@ -324,7 +338,7 @@ The \texttt{linestyle} and \texttt{fillstyle} options (and several
more) are respected by \Lcs{psbcurve} as the following example shows.
\begin{LTXexample}
-\pspicture[showgrid=true](5,3)
+\pspicture[showgrid](0,-0.4)(5,3)
\psbcurve[linestyle=dashed,
linewidth=3pt,
dash=0.5 0.2,
@@ -333,7 +347,7 @@ more) are respected by \Lcs{psbcurve} as the following example shows.
\endpspicture
\end{LTXexample}
-\section{Things that do not work (`known bugs')}
+\subsection{Things that do not work (`known bugs')}
As already mentioned this project is something like an experiment. So,
there are many things that do not work.
@@ -342,10 +356,375 @@ there are many things that do not work.
\item The control points are computed in a rather crude way (see
above). The \Lkeyword{curvature} option is not recognised.
\item If \Lkeyword{fillstyle} is set to \Lkeyword{solid} and
- \Lkeyset{showpoints=true} then the fill color covers the interpolation and control points.
+ \Lkeyword{showpoints} then the fill color covers the interpolation and control points.
\item arrow heads do not work.
\end{itemize}
+\clearpage
+
+\section{Bezier curve with weighted points}
+
+\subsection{Mathemathical background}
+
+A mass point is a weighted point $\left(P;\omega\right)$ with $\omega \neq 0$ or a vector $\left(\overrightarrow{P};0\right)$ with a weight equal to $0$. A generic mass point is noted $\left(P;\omega\right)$.
+
+Using the quadratic Bernstein polynomials, a rational quadratic B\'ezier curve having three control
+mass points $\left(P_{0};\omega_{0}\right)$, $\left(P_{1};\omega_{1}\right)$
+and $\left(P_{2};\omega_{2}\right)$, is defined as follow:
+
+\begin{definition}\label{fdef::DefRQBC_Fiorot}: Rational quadratic B\'ezier curve (BR curve)
+
+Let $\omega_{0}$, $\omega_{1}$ and $\omega_{2}$ be three real numbers.
+Let $\left(P_{0};\omega_{0}\right)$, $\left(P_{1};\omega_{1}\right)$
+and $\left(P_{2};\omega_{2}\right)$ be three mass points, these points are not collinear.
+
+Define two sets $I = \left \{ i | \omega_i \neq 0 \right \}$ and
+$J = \left \{ i | \omega_i = 0 \right \}$
+
+
+Define the function $\omega_{f}$ from $\left[0;1\right] $ to $\mathbb{R} $ as follows
+
+\begin{equation}
+%\begin{array}{cccc}
+%\omega_{f}: & \left[0;1\right] & \longrightarrow & \mathbb{R} \\
+%& t & \longmapsto &\omega_{f}\left(t\right)=\dy\sum_{i\in I}\omega_{i}\times B_{i}\left(t\right)
+%\end{array}
+\omega_{f}\left(t\right)=\dy\sum_{i\in I}\omega_{i}\times B_{i}\left(t\right)
+\label{eq:DenominateurCbreBezier}
+\end{equation}
+
+A mass point $\left(M;\omega\right)$ or $\left(\overrightarrow{u};0\right)$
+belongs to the quadratic B\'ezier curve defined by the three control
+mass points $\left(P_{0};\omega_{0}\right)$, $\left(P_{1};\omega_{1}\right)$
+and $\left(P_{2};\omega_{2}\right)$,
+if there is a real $t_{0}$ in $\left[0;1\right]$ such that:
+
+\begin{itemize}
+\item [$\bullet$] if $\omega_{f}\left(t_{0}\right)\neq0$ then we have
+
+\hspace*{-0.75cm}\begin{minipage}{1.0\textwidth}
+\begin{equation}
+\overrightarrow{OM} = \dy \frac{1}{\omega_{f}\left(t_{0}\right)}\left(\dy \sum_{i\in I} \dy \omega_{i} B_{i}\left(t_{0}\right)
+ \overrightarrow{OP_{i}} \right)
++\vspace{0.2cm}\dy \frac{1}{\omega_{f}\left(t_{0}\right)}\left( \sum_{i\in J} B_{i}\left(t_{0}\right) \overrightarrow{P_{i}}\right)
+\label{eq:DefRQBC_FiorotPoint}
+\end{equation}
+\end{minipage}
+
+\item [$\bullet$] if $\omega_{f}\left(t_{0}\right)=0$ then we have
+\begin{equation}
+\overrightarrow{u}=\sum_{i\in I}\omega_{i}B_{i}\left(t_{0}\right)\overrightarrow{OP_{i}}+\sum_{i\in J}B_{i}\left(t_{0}\right)\overrightarrow{P_{i}}\label{eq:DefRQBC_FiorotVecteur}
+\end{equation}
+
+\end{itemize}
+\hrulefill{}\end{definition}
+
+The reduced discriminant of the denominator $\omega_{f}\left(t_{0}\right)$ is
+\begin{equation}
+\Delta'=\omega_{1}^{2}-\omega_{2} \omega_{0}\label{eq:DiscrimantReduitCBRQnonStandard}
+\end{equation}
+and we can state the following fundamental result:
+\begin{itemize}
+\item[$\star$]
+if $\omega_{1}^{2}-\omega_{2} \omega_{0}=0$ then the
+ denominator has one and only one root, the curve is a parabolic arc;
+\item[$\star$]
+ if $\omega_{1}^{2}-\omega_{2} \omega_{0}>0$ then the
+ denominator has two distinct roots, the curve is a hyperbolic arc;
+\item[$\star$]
+ if $\omega_{1}^{2}-\omega_{2} \omega_{0}<0$ then the
+ denominator does not vanish, the curve is an elliptical arc.
+\end{itemize}
+
+We can note w.l.o.g.\footnote{We can permute the role of $P_0$ and $P_2$} that one of the weights can be equal to~$1$. If $\omega_0$ is not equal to $0$, we choose $\omega_0=1$, else, we choose $\omega_1=1$, and we can characterise the type of the conic from the mass points of the BR curve, see Table~\ref{tab::TypeConicEtcbeBr}.
+
+\begin{table}[!h]
+\begin{center}
+\begin{tabular}{|c||c|c|c|}\hline
+Conic & Three weighted points & Points and vectors \\ \hline \hline
+Parabola & $\left(P_{0};1\right)$, $\left(P_{1};\omega\right)$
+ $\left(P_{2};\omega^{2}\right)$ & $\left(P_{0};1\right)$, $\left(\overrightarrow{P_{1}};0\right)^{\mathstrut^{\mathstrut}}_{\mathstrut_{\mathstrut}}$ $\left(\overrightarrow{P_{2}};0\right)$\\ \hline \hline
+ Ellipse & $\left(P_{0};1\right)$, $\left(P_{1};\omega_{1}\right)$, $\left(P_{2};\omega_{2}\right)$, $ \omega_{2}>\omega_{1}^{2} $ & $\left(P_{0};1\right)$, $\left(\overrightarrow{P_{1}};0\right)^{\mathstrut^{\mathstrut}}_{\mathstrut_{\mathstrut}}$ $\left(P_{2};1\right)$ \\ \hline \hline
+ Hyperbola & $\left(P_{0};1\right)$, $\left(P_{1};\omega_{1}\right)$ $\left(P_{2};\omega_{2}\right)$, $\omega_{2}<\omega_{1}^{2}$ & $\left(P_{0};1\right)$, $\left(\overrightarrow{P_{1}};0\right)^{\mathstrut^{\mathstrut}}_{\mathstrut_{\mathstrut}}$ $\left(P_{2};-1\right)$ \\ \cline{3-3}
+& & $\left(\overrightarrow{P_{0}};0\right)$, $\left(P_{1};1\right)$ and $\left(\overrightarrow{P_{2}};0\right)^{\mathstrut^{\mathstrut}}_{\mathstrut_{\mathstrut}}$ \\ \hline \hline
+\end{tabular}
+\end{center}
+\caption{Types of conics defined by B\'ezier curves with control mass points.
+\hrulefill{}
+\label{tab::TypeConicEtcbeBr}}
+\end{table}
+
+From the access rights used by Unix and Linux, we define a bijection $f$ between $\mathbb{F_2}^3-\left\lbrace\left(0,0,0\right)\right\rbrace$ and the set $\left\lbrace 1 ,2 , 3, 4, 5, 6, 7\right\rbrace$. From $\left(\omega_2,\omega_1,\omega_0\right)$, we define a triplet $\left(b_2,b_1,b_0\right)$ as follow: if $w_i\neq0$ then $b_i=1$ else $b_i=0$. Then
+$$f\left(\omega_2,\omega_1,\omega_0\right)= b_2 \times 4+ b_1 \times 2+b_0$$
+
+If $f\left(\omega_2,\omega_1,\omega_0\right)=7$, the control points are weighted points: the curve is an elliptical arc, a parabolic arc or a hyperbolic arc. If $\left(\omega_2,\omega_1,\omega_0\right)=\left(1,-1,1\right)$, the parabolic arc is not bounded and for $t=\frac{1}{2}$, the mass point is a direction vector of the parabola axis. If $\left(\omega_2,\omega_1,\omega_0\right)=\left(1,-2,1\right)$, the hyperbolic arc is not bounded and there exists $t$ in $\left]0,1\right[$ such as the mass point is a direction vector of one of the asymptotes of the hyperbola. \\
+If $f\left(\omega_2,\omega_1,\omega_0\right)=1$, the first control point is a weighted point, the others are vectors: the curve is a parabolic arc. The B\'ezier curve is defined by
+ \begin{equation}
+\begin{cases}
+ \dy \frac{1}{\omega_0\, B_0\left(t_{0}\right)}\left( \omega_{0}\, B_{0}\left(t_{0}\right)
+ \overrightarrow{OP_{0}} + B_{1}\left(t_{0}\right) \overrightarrow{P_{1}}+ B_{2}\left(t_{0}\right)
+ \overrightarrow{P_{2}}\right) & \text{ if }t_0\in\left[0,1\right[ \\[1ex]
+\overrightarrow{P_2} & \text{ if }t_0=1\\
+ \end{cases}
+\label{eq:parabola}
+\end{equation}
+If $f\left(\omega_2,\omega_1,\omega_0\right)=4$, the B\'ezier curve can be defined in the same way.\\
+If $f\left(\omega_2,\omega_1,\omega_0\right)=2$, the intermediate control point is a weighted point, the others are vectors: the curve is a branch of a hyperbola. The B\'ezier curve is defined by
+ \begin{equation}
+\begin{cases}
+ \dy \frac{1}{\omega_1\, B_1\left(t_{0}\right)}\left( \omega_{1}\, B_{1}\left(t_{0}\right) \overrightarrow{OP_{1}}+ B_{0}\left(t_{0}\right) \overrightarrow{P_{0}}+ B_{2}\left(t_{0}\right) \overrightarrow{P_{2}}\right) & \text{ if }t_0\in\left]0,1\right[
+\\[1ex]
+\overrightarrow{P_0} & \text{ if }t_0=0\\[1ex]
+\overrightarrow{P_2} & \text{ if }t_0=1
+ \end{cases}
+\label{eq:branchHyperbola}
+\end{equation}
+and the centre of the hyperbola is $P_1$. The vector $\overrightarrow{P_0}$ is a direction vector of an asymptote of the hyperbola whereas the vector $\overrightarrow{P_2}$ is a direction vector of the other asymptote.\\
+If $f\left(\omega_2,\omega_1,\omega_0\right)=5$, the intermediate control point is a vector, the others are weighted points: the curve is an elliptical arc. The B\'ezier curve is defined by
+ \begin{equation}
+ \dy \frac{1}{\omega_0\, B_0\left(t_{0}\right)+\omega_2\, B_2\left(t_{0}\right)}\left( \omega_{0}\, B_{0}\left(t_{0}\right) \overrightarrow{OP_{0}} + B_{1}\left(t_{0}\right) \overrightarrow{P_{1}}+ \omega_2\, B_{2}\left(t_{0}\right) \overrightarrow{OP_{2}}\right),\;\; t_0\in\left[0,1\right]
+\label{eq:ellipse}
+\end{equation}
+and the tangent vector to the curve at $P_0$ or $P_2$ is parallel to $\overrightarrow{P_1}$.
+
+\subsection{Syntax}
+
+\begin{BDef}
+\Lcs{psRQBCmasse}\OptArgs\Largr{$x_0,y_0$}\Largr{$x_1,y_1$}\Largr{$x_2,y_2$}\Largb{$w_0,w_1,w_2$}
+\end{BDef}
+
+For the coordinates of the points all possible kinds of coordinates are possible, like polar, PostScript, nodes, \ldots
+
+\subsection{Three weighted orthogonal points}
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](-6,-6.4)(3,3)
+\psclip{\psframe(-6,-6)(3,3)}
+ \psRQBCmasse[linecolor=blue](2,0)(2,2)(0,2){1,-1,1}
+ \psRQBCmasse[linecolor=navy,autoTrace](2,0)(2,2)(0,2){1,1,1}
+ \rput(P0){$P_0$}\uput[r](P1){$P_1$}\uput[r](P2){$P_2$}
+\endpsclip%
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\subsection{Half-ellipse}
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](-3,-2.4)(3,2)
+\psframe(-3,-2)(3,2)
+\psRQBCmasse[linecolor=red,autoTrace](2,0)(0,1)(-2,0){1,0,1}
+\uput[r](P0P1){$\overrightarrow{P_1}$} \uput[r](P2){$P_2$}
+\rput(P1P2){$\overrightarrow{P_{1}}$} \uput[r](P0){$P_0$}
+\psRQBCmasse[linecolor=orange,autoTrace=false](2,0)(0,-1)(-2,0){1,0,1}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+\subsection{Half-parabola}
+\subsubsection{Point $P_2$ and two vectors}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](-3,-3.4)(3,3)
+\psclip{\psframe(-3,-3)(3,3)}
+ \psRQBCmasse[linecolor=red,autoTrace](2,0)(0,1)(-1,0){0,0,1}
+ \uput[r](P1P2){$\overrightarrow{P_1}$} \uput[r](P2){$P_2$}
+ \uput[r](P0P2){$\overrightarrow{P_0}$}
+ \psRQBCmasse[linecolor=orange,autoTrace=false](2,0)(0,-1)(-1,0){0,0,1}
+ \uput[r](P1P2){$\overrightarrow{P_1}$} \uput[r](P2){$P_2$}
+ \uput[r](P0P2){$\overrightarrow{P_0}$}
+\endpsclip
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{Point $P_0$ and two vectors}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](-3,-3.4)(3,3)
+\psclip{\psframe(-3,-3)(3,3)}
+ \psRQBCmasse[linecolor=red,autoTrace](2,0)(0,1)(-1,0){1,0,0}
+ \uput[r](P0P1){$\overrightarrow{P_1}$} \uput[r](P0){$P_0$}
+ \uput[r](P0P2){$\overrightarrow{P_2}$}
+ \psRQBCmasse[linecolor=orange,autoTrace=false](2,0)(0,-1)(-1,0){1,0,0}
+\endpsclip%
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+\subsection{Branch of a hyperbola}
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](-3,-3.4)(3,3)
+\psclip{\psframe(-3,-3)(3,3)}
+ \psRQBCmasse[linecolor=red,autoTrace](1,1)(0,0)(-1,1){0,1,0}
+ \uput[r](P0){$\overrightarrow{P_0}$} \uput[r](0,-0.5){$P_1$}
+ \uput[r](P2){$\overrightarrow{P_2}$}
+ \psRQBCmasse[linecolor=orange,autoTrace=false](1,1)(0,0)(-1,1){0,-1,0}
+\endpsclip%
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Parabola}
+\begin{LTXexample}[pos=t]
+\psset{unit=0.5}
+\begin{pspicture}(-14,-3.4)(15,10)
+\psclip{\psframe(-14,-3)(15,10)}
+ \psRQBCmasse[linecolor=red,autoTrace](0,6)(-13,0)(-1,-1){1,1,1}
+ \psRQBCmasse[linecolor=orange](0,6)(-13,0)(-1,-1){1,-1,1}
+ \uput[u](P0){$P_0$}\uput[l](P1){$P_1$}\uput[d](P2){$P_2$}
+\endpsclip
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+\subsection{Ellipse}
+\begin{LTXexample}[pos=t]
+\psset{unit=0.5}
+\begin{pspicture}(-14,-3.4)(15,10)
+\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+%\psplotImp[linewidth=0.5pt,linecolor=blue,algebraic](-6,-3)(15,10)%
+ %{ -0.044*x^2-0.161*y^2 + 0.075*x*y + 0.074*x + 0.797*y + 1}
+\psRQBCmasse[nPoints=20,autoTrace,showpoints](0,6)(-13,0)(-1,-1){1,0.5,1}
+\psRQBCmasse[nPoints=40,linecolor=red,showpoints](0,6)(-13,0)(-1,-1){1,-0.5,1}
+\psaxes[labelFontSize=\scriptscriptstyle]{->}(0,0)(-14,-3)(15,10)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Complete circle}
+\begin{LTXexample}[pos=t]
+\psset{unit=1}
+\begin{pspicture}(-4,-4.4)(4,4)
+\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+\psRQBCmasse[autoTrace](0,3)(3,3)(3,0){1,1,2}
+\psRQBCmasse[linecolor=red](0,3)(3,3)(3,0){1,-1,2}
+\psaxes[labelFontSize=\scriptscriptstyle]{->}(0,0)(-4,-4)(4,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\psset{unit=1.5}
+\begin{pspicture}(-4,-4.4)(4,4)
+\psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+\psRQBCmasse[autoTrace](0,3)(3,0)(0,-3){1,0,1}
+\uput[u](-0.25,3){$P_0$}
+\uput[u](-0.25,-3.5){$P_2$}
+\uput[u](3,3){$\overrightarrow{P_1}$}
+\uput[u](3,-3.5){$\overrightarrow{P_1}$}
+\uput[u](2.5,0){$\overrightarrow{P_1}$}
+\psRQBCmasse[linecolor=red](0,3)(-3,0)(0,-3){1,0,1}
+\psaxes[labelFontSize=\scriptscriptstyle,linewidth=0.01]{->}(0,0)(-4,-4)(4,4)
+\end{pspicture}
+\end{LTXexample}
+We get a circle because we have
+
+\begin{equation}
+\left\lbrace
+\begin{array}{rcl}
+\omega_0\times\omega_2\times P_0 P_2^2 &= &4\times\overrightarrow{P_1}^2 \\[0.2cm]
+\overrightarrow{P_0 P_2} &\perp & \overrightarrow{P_1}
+\end{array}
+\right.
+\end{equation}
+
+\clearpage
+
+
+\subsection{Animations}
+
+\subsubsection{$w_0=1$, $w_2=1$ and a variable $w_1$}
+
+With the beginning of $w_1=0$
+the curves are swapped. In the case of Bezier curves $w_1 = 0$ gives only
+the $[P_0 P_2]$ segment. Using the mass points, the point $P_1$ no longer exists but we get the vector $\overrightarrow{P_1}$.
+
+
+\bigskip
+\begin{center}
+\begin{animateinline}[controls,loop,palindrome,
+ begin={\begin{pspicture}(-4,-4)(10,4)},
+ end={\end{pspicture}}]{3}% 3 images/s
+\multiframe{40}{rA=2.0+-0.1,rB=-2.0+0.1}{%
+ \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+ \psclip{\psframe(-4,-4)(10,4)}
+ \psRQBCmasse[autoTrace,linewidth=1.5pt](0,-1)(1,0)(0,1){1,\rA,1}
+ \uput[u](P2){$P_2$}\uput[l](P1){$P_1$}\uput[d](P0){$P_0$}
+ \psRQBCmasse[linecolor=red,linewidth=1.5pt](0,-1)(1,0)(0,1){1,\rB,1}
+ \psaxes[labelFontSize=\scriptscriptstyle,linewidth=0.01]{->}(0,0)(-4,-4)(10,4)
+ \rput(8,3){$w_1=\rA$}%
+ \endpsclip
+}
+\end{animateinline}
+\end{center}
+
+\begin{lstlisting}
+\begin{animateinline}[controls,loop,palindrome,
+ begin={\begin{pspicture}(-4,-4)(10,4)},
+ end={\end{pspicture}}]{3}% 3 images/s
+\multiframe{40}{rA=2.0+-0.1,rB=-2.0+0.1}{%
+ \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+ \psclip{\psframe(-4,-4)(10,4)}
+ \psRQBCmasse[autoTrace,linewidth=1.5pt](0,-1)(1,0)(0,1){1,\rA,1}
+ \uput[u](P2){$P_2$}\uput[l](P1){$P_1$}\uput[d](P0){$P_0$}
+ \psRQBCmasse[linecolor=red,linewidth=1.5pt](0,-1)(1,0)(0,1){1,\rB,1}
+ \psaxes[labelFontSize=\scriptscriptstyle,linewidth=0.01]{->}(0,0)(-4,-4)(10,4)
+ \rput(8,3){$w_1=\rA$}%
+ \endpsclip
+}
+\end{animateinline}
+\end{lstlisting}
+
+
+
+\clearpage
+
+\subsubsection{$w_0=1$, $\left |w_1\right|=1$ and a variable $w_2$}
+
+%L'utilisation de $\left |w_1\right|$ permet d'obtenir les deux arcs et donc toute la conique.
+The use of $\left |w_1\right|$ provides both arcs and the whole cone.
+
+\bigskip
+\begin{center}
+\begin{animateinline}[controls,loop,palindrome,
+ begin={\begin{pspicture}(-8,-4)(4,4)},
+ end={\end{pspicture}}]{3}% 3 images/s
+\multiframe{80}{rA=4.0+-0.1}{%
+ \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+ \psclip{\psframe(-8,-4)(4,4)}
+ \psRQBCmasse[autoTrace,linewidth=1.5pt](0,-1)(1,0)(0,1){1,1,\rA}
+ \uput[u](P2){$P_2$}\uput[l](P1){$P_1$}\uput[d](P0){$P_0$}
+ \psRQBCmasse[linecolor=red,linewidth=1.5pt](0,-1)(1,0)(0,1){1,-1,\rA}
+ \psaxes[labelFontSize=\scriptscriptstyle,linewidth=0.01]{->}(0,0)(-8,-4)(4,4)
+ \rput[rb](3.5,3){$w_2=\rA$}%
+ \endpsclip
+}
+\end{animateinline}
+\end{center}
+
+\begin{lstlisting}
+\begin{animateinline}[controls,loop,palindrome,
+ begin={\begin{pspicture}(-8,-4)(4,4)},
+ end={\end{pspicture}}]{3}% 3 images/s
+\multiframe{80}{rA=4.0+-0.1}{%
+ \psgrid[subgriddiv=0,gridcolor=lightgray,griddots=5,gridlabels=0pt]
+ \psclip{\psframe(-8,-4)(4,4)}
+ \psRQBCmasse[autoTrace,linewidth=1.5pt](0,-1)(1,0)(0,1){1,1,\rA}
+ \uput[u](P2){$P_2$}\uput[l](P1){$P_1$}\uput[d](P0){$P_0$}
+ \psRQBCmasse[linecolor=red,linewidth=1.5pt](0,-1)(1,0)(0,1){1,-1,\rA}
+ \psaxes[labelFontSize=\scriptscriptstyle,linewidth=0.01]{->}(0,0)(-8,-4)(4,4)
+ \rput[rb](3.5,3){$w_2=\rA$}%
+ \endpsclip
+}
+\end{animateinline}
+\end{lstlisting}
+
+
+\clearpage
+
\section{List of all optional arguments for \texttt{pst-bezier}}
@@ -355,11 +734,13 @@ there are many things that do not work.
\bgroup
\raggedright
\nocite{*}
-\bibliographystyle{plain}
-\bibliography{pst-bezier-doc}
+\printbibliography
\egroup
\printindex
\end{document}
+
+
+Moreover, we can choose a non Euclidean metric. The use of mass points, Bézier curves, conics and the space of spheres in the Minkowski-Lorentz space permits to realise G1-continous blend between Dupin cyclides : to blend surfaces in R3, we blend Bézier curves in R5. For example, we can build a seahorse (see 09_LorentzHippocampeComplet.png), the article (in French) is here: