summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lapdf/quartic.tex
blob: b51af6c3e212d56f357736f45cfa51f6a4de84c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
\input preamble.tex

% ---------------------------------------------------------------------------
\begin{document}
\begin{center}
{\Huge \bf{Full Rational Quartic Bezier Curve}}
\bigskip

\begin{lapdf}(18,17.5)(-9,-8)
 \Setwidth(0.01)
 \Dash(1)
 \Polygon(-9,-6)(-8,+3)(+0,+8)(+8,+2)(+9,-6) \Stroke
 \Setwidth(0.02)
 \Dash(0)
 \Red
 \Rcurve(96)(-9,-6,+4)(-8,+3,+3)(+0,+8,+5)(8,+2,+3)(+9,-6,+4) \Stroke
 \Blue
 \Rcurve(96)(-9,-6,+4)(-8,+3,-3)(+0,+8,+5)(8,+2,-3)(+9,-6,+4) \Stroke
 \Black
 \Point(0)(-9,-6)
 \Point(1)(-8,+3)
 \Point(1)(+0,+8)
 \Point(1)(+8,+2)
 \Point(0)(+9,-6)
 \Text(-9.2,-5.8,tr){$P_0$}
 \Text(-8.2,+3.2,tr){$P_1$}
 \Text(+0.0,+8.2,bc){$P_2$}
 \Text(+8.2,+2.2,tl){$P_3$}
 \Text(+9.2,-5.8,tl){$P_4$}
\end{lapdf}
\end{center}
\parskip0.2cm
$P_1$ and $P_3$ of the blue curve have negative weights, but both curves
share the same Bezier points and absolute weight values. Now we can see
the complete Bezier curve. The proof for this needs some insight in
projective geometry and it's rather involved, so I only give here the
general rule for drawing complete rational Bezier curves: Make every odd
weight negative and you'll get the complementary Bezier curve.

You should notice that in this case the Bezier curve no longer lies in
the convex hull of it's control polygon, because his is only holds if all
weights are positive. It should also be mentioned that negative weights for
other points can cause numerical problems, because the denominator can
become zero.
\end{document}