2009-06-30 13 views
1

Ich versuche ein paar Tutorials von http://nehe.gamedev.net, um OpenGL-Programmierung zu lernen, möchte ich Kugeln entlang einer Bezier-Kurve positionieren, so dass sie als eine Perlenkette erscheinen. Wie kann ich solche Kugeln entlang der Kurve positionieren? Ich zeichne die Kurve mit de Casteljaus Algorithmus und kann daher die XYZ-Punkte auf der Kurve erhalten.Position Kugeln entlang einer Bezier-Kurve

Antwort

1

Wenn Ihre Kugeln relativ zur Gesamtlänge der Bezier-Kurve klein genug sind, können Sie Ihre Kugeln in gleichmäßigen Abständen positionieren, um ein Aussehen zu erhalten, das einer Perlenkette ähnelt. (Wenn die Kugeln relativ groß sind, müssen Sie sich mehr Gedanken über Kugelüberlappung machen - kein einfaches Problem und wahrscheinlich nicht sehr lehrreich für das Erlernen von OpenGL.)

Der Parameterwert t einer Bezier-Kurve variiert von 0 bis 1. Um zu bewerten, Ihre Bezier-Kurve an 10 Standorten (den Enden und acht inneren Punkte) können Sie etwas tun:

for(int i = 0; i <= 9; ++i) 
{ 
    double t = i/9.0; 
    double x, y; 
    EvalBezier(t, x, y); 
    DrawSphere(x, y, radius); 
} 

Wo EvalBezier(t, x, y) für eine gegebene t in (x,y) füllt. Wählen Sie einfach radius, um ein angenehmes Ergebnis zu erzielen. Wenn Sie versuchen möchten, radius automatisch auszuwählen, verwenden Sie als grobe Schätzung nur den halben Mindestabstand vom Punkt i zu den Punkten i-1 und i+1. Wenn Sie dies tun, denken Sie daran, die Endpunkte speziell zu behandeln, indem Sie nur die nächsten oder vorherigen Punkte verwenden (je nachdem, was Sie haben).

Verwandte Themen