Bézier-kromme van de tweede orde berekenen
In het item Over Bézier-krommen wordt in algemene termen uit de doeken gedaan hoe zo'n kromme wordt berekend. Op deze pagina wordt dit uitgewerkt: we gaan een Bézier-kromme van de tweede orde berekenen.
- De punten en de lijnen
- We gaan uit van drie punten, P0 = (0,0), P1 = (4,9) en P2 = (9,1).
- De punten P0 en P1 zijn het begin- en eindpunt van het lijnstuk L1. De punten P1 en P2 zijn het begin- en eindpunt van het lijnstuk L2. Zie de illustratie hiernaast.
- De vectorvoorstellingen van de lijnen zijn:
L1: (0,0) + t·(4,9)
L2: (4,9) + t·(5,-8)
Merk op dat de parameter bij de richtingsvector,t
bij beide vectorvoorstellingen gelijk is.
- De parameter t
-
De parameter
t
gaat nu lopen van 0 naar 1: Op het lijnstuk L1 vanaf P0 naar P1, op het lijnstuk L2 vanaf P1 naar P2. Dit gebeurt in gelijke stappen. De stapgrootte wordt kleiner naarmate de gewenste nauwkeurigheid groter is. In het voorbeeld is de stapgrootte 0.1, om een en ander een beetje overzichtelijk te houden. In de praktijk reken je tenminste met 0.01, maar vaak kleiner. - Bij elke stap wordt op beide lijnen een punt bepaald, op afstand
t·L'
, waarbijL'
de lengte van het betreffende lijnstuk is. - Tussen de zo gevonden punten wordt een lijnstuk L(t) getrokken. Op die lijn wordt een punt Q(t) bepaald
dat ligt op afstand
t·L"
, waarbijL"
de lengte van L(t) is. - De achtereenvolgende punten Q(t) vormen de Bézier-kromme.
Een slimme manier om dat inzichtelijk te maken is met een tabel, zie hieronder.
t | P0(t),x | P0(t),y | P1(t),x
| P1(t),y | rL(t),x | rL(t),y | Q(t),x | Q(t),y |
||||
0.0 | 0.0 | 0.0 |
4.0 | 9.0 | 4.0 |
9.0 | 0.00 | 0.00 |
||||
0.1 | 0.4 | 0.9 |
4.5 | 8.2 | 4.1 |
7.3 | 0.81 | 1.63 |
||||
0.2 | 0.8 | 1.8 |
5.0 | 7.4 | 4.2 |
5.6 | 1.64 | 2.92 |
||||
0.3 | 1.2 | 2.7 |
5.5 | 6.6 | 4.3 |
3.9 | 2.49 | 3.87 |
||||
0.4 | 1.6 | 3.6 |
6.0 | 5.8 | 4.4 |
2.2 | 3.36 | 4.48 |
||||
0.5 | 2.0 | 4.5 |
6.5 | 5.0 | 4.5 |
0.5 | 4.25 | 4.75 |
||||
0.6 | 2.4 | 5.4 |
7.0 | 4.2 | 4.6 |
-1.2 | 5.16 | 4.68 |
||||
0.7 | 2.8 | 6.3 |
7.5 | 3.4 | 4.7 |
-2.9 | 6.09 | 4.27 |
||||
0.8 | 3.2 | 7.2 |
8.0 | 2.6 | 4.8 |
-4.6 | 7.04 | 3.52 |
||||
0.9 | 3.6 | 8.1 |
8.5 | 1.8 | 4.9 |
-6.3 | 8.01 | 2.43 |
||||
1.0 | 4.0 | 9.0 |
9.0 | 1.0 | 5.0 |
-8.0 | 9.00 | 1.00 |
- De betekenis van de kolommen in de tabel is als volgt:
t
is de 'tijd'-stap. Deze loopt van 0 tot 1. In de tabel zijn de stappen 0.1. In de praktijk zal de stapgrootte kleiner zijn.P0(t),x
enP0(t),y
. Dit zijn de coördinaten van de puntenP0
op de lijn L1.P1(t),x
enP1(t),y
. Dit zijn de coördinaten van de puntenP1
op de lijn L2.rL(t),x
enrL(t),y
. Dit zijn de componenten in X- en Y-richting van de richtingscoëciënt van de lijnen L(t). De plaatsvectoren zijn de punten P0(t) op de lijn L1.Q(t),x
enQ(t),y
. Dit zijn de coördinaten van de punten Q(t) (op de lijnen L(t)), die de Bézierkromme beschrijven.
- De figuur hieronder toont de punten Q als functie van t. De kromme is nogal hoekig, door de relatief grote stapgrootte.