[ascoders] distanz punkt bezierKurve
- From: "Andre Michelle" <am@xxxxxxxxxxxxxxxxxx>
- To: <ascoders@xxxxxxxxxxxxx>
- Date: Mon, 30 Dec 2002 17:55:48 +0100
hallo,
mal was Deftiges :o)
Ich brauche jemanden, der sich noch an Mathematik ( Analysis ) errinnern
kann.
Theoretisch durchkaemmt habe ich das Ganze.
Die Loesung liegt auf der Hand, aber die Mathematik
laesst mich im Stich.
Zum Einsteigen das hier:
http://andre-michelle.com/bin/normale.swf
http://andre-michelle.com/bin/normale.fla
Die Idee ist, dass der kuerzeste Abstand zur Bezierkurve
sich ueber die Normale zum Punkt finden laesst.
Bezierkurve:
var p0 = { x: -250, y: 100 };
var p1 = { x: 0, y: -300 }; // controlpoint
var p2 = { x: 250, y: 120 };
Ueber den Parameter 't' von 0 bis 1 erhalte ich x,y Coordinaten auf der
Kurve ueber:
x = ( 1 - t ) * ( 1 - t ) * p0.x + 2 * t * ( 1 - t ) * p1.x + t * t * p2.x;
y = ( 1 - t ) * ( 1 - t ) * p0.y + 2 * t * ( 1 - t ) * p1.y + t * t * p2.y;
Ueber die erste Herleitung des Casteljau Algorithmus erhalte ich die
Tangente im berechneten Punkt:
Hilfspunkt:
c = { x: ( 1 - t ) * p1.x + t * p2.x , y: ( 1 - t ) * p1.y + t * p2.y };
Vektor Tangente:
dx = c.x - x;
dy = c.y - y;
Laenge des Vektors:
d = Math.sqrt ( dx * dx + dy * dy );
Einheitsvektor:
vx = dx / d;
vy = dy / d;
Normalen Vektor:
nx = vy;
ny = -vx;
Schoen. Was ich brauche ist eine Formel,
die nach 't' aufgeloest, mir den 't' Wert liefert,
der eine Normale durch den Punkt, dessen Abstand
ich bestimmen will, zurueckgibt.
also:
t = Formel ( Pdist , P0 , P1 , P2 );
Das muss moeglich sein, aber mein MatheAbi ist 10 Jahre her :o)
Wer kann helfen ?
P.S. Das Ergebnis ist sicher interessant. Es liesse sich mit ungeheuerer
Performance
exakte Kollisionsabfragen mit Bezierkurven herleiten.
Meine ersten Versuche in die Richtung findet ihr auf meiner Webseite,
allerdings habe ich dort die Kurve in 'n' Liniensegmente unterteilt.
--
andre michelle
extrajetzt
http://www.extrajetzt.com
flashblog:
http://www.andre-michelle.com
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- Follow-Ups:
- [ascoders] Re: distanz punkt bezierKurve
- From: Ralf Siegel
- [ascoders] Re: distanz punkt bezierKurve
- From: bokel
- References:
- [ascoders] Re: FSScrollBar Komponente
- From: Ralf Siegel
- [ascoders] mp3 live stream
- From: Manuel Dahm
- [ascoders] Re: mp3 live stream
- From: Norbert Busche
- [ascoders] Re: mp3 live stream
- From: Manuel Dahm
- [ascoders] Re: mp3 live stream
- From: Norbert Busche
Other related posts:
- » [ascoders] distanz punkt bezierKurve
- » [ascoders] Re: distanz punkt bezierKurve
- » [ascoders] Re: distanz punkt bezierKurve
- » [ascoders] Re: distanz punkt bezierKurve
- [ascoders] Re: distanz punkt bezierKurve
- From: Ralf Siegel
- [ascoders] Re: distanz punkt bezierKurve
- From: bokel
- [ascoders] Re: FSScrollBar Komponente
- From: Ralf Siegel
- [ascoders] mp3 live stream
- From: Manuel Dahm
- [ascoders] Re: mp3 live stream
- From: Norbert Busche
- [ascoders] Re: mp3 live stream
- From: Manuel Dahm
- [ascoders] Re: mp3 live stream
- From: Norbert Busche