Domanda

sto cercando un paio di tutorial da http://nehe.gamedev.net , al fine di imparare programmazione openGL, desidero posizionare sfere lungo una curva di Bezier tale da apparire come una stringa di perle. come posso posizionare tali sfere lungo la curva. Sto disegnando la curva utilizzando l'algoritmo di de Casteljau e quindi può ottenere i punti XYZ sulla curva.

È stato utile?

Soluzione

Se le sfere sono abbastanza piccolo rispetto alla lunghezza complessiva della curva di Bézier, si può semplicemente posizionare lo sfere a intervalli regolari per ottenere un aspetto simile a un filo di perle. (Se le sfere sono relativamente grandi, allora si dovrà cominciare a preoccuparsi di sfera sovrapposizione di più -. Non un problema facile, e probabilmente non molto istruttivo per imparare OpenGL)

Il valore del parametro t di una curva di Bezier varia da 0 a 1. Per valutare la curva di Bezier a 10 posizioni (le estremità e otto punti interni) si può fare qualcosa di simile:

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

Dove EvalBezier( t, x, y ) riempie (x,y) per un dato radius. Basta scegliere i per darvi un risultato positivo. Se volete provare a raccogliere i-1 automaticamente, basta usare la metà della distanza minima dal punto i+1 ai punti <=> e <=> come una stima approssimativa. Se si esegue questa operazione, ricordarsi di gestire i punti finali appositamente, utilizzando sia solo i punti precedenti o successive (a seconda di quale avete).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top