Interaktiv Canvas
Enkel ball
Interaksjon i canvas er realisert ved hjelp av KINETICSJS [1] .
Flytt ballen med musa.
Javascriptet:
Bezier
Flytt kontrollpunktene med musa
Uttrykt ved kontrollpunktene og en parameter, t, som løper mellom 0 og 1, kan vi beskrive et punkt på en kubisk Bezierkurve slik:
P(t)=(1-t)3P0+ 3t(1-t)2P1 + 3t2(1-t)P2 + t3P3
Canvas elementet har en ferdig rutiner for å tegne Bezierfunksjoner.
Javascript som administrerer controlpunkter. Et Point-objekt og en renderingrutine som tegner et punkt som en region og tilordner eventhandlere.
Javascript som startes når canvas er lastet og som setter opp det hele
De Casteljau algoritmen
Flytt kontrollpunktene eller dra slideren for å endre t
Casteljau algoritmen tar utgangspunkt i en lineær Bezier funksjon og anvender denne til å dele opp linjene mellom kontrollpunktene.
P(t)=(1-t)P0+tP1 |
|
A(t)=(1-t)P0+tP1 B(t)=(1-t)P1+tP2 P(t)=(1-t)A(t)+tB(t) P(t)=(1-t)2P0+2t(1-t)P1+t2P2 |
|
A(t)=(1-t)P0+tP1 B(t)=(1-t)P1+tP2 C(t)=(1-t)P2+tP3 D(t)=(1-t)A(t)+tB(t) E(t)=(1-t)B(t)+tC(t) P(t)=(1-t)D(t)+tE(t) P(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3 |
Javascriptet som setter opp canvas er nå slik:
Slideren er handtert slik: