2009-06-30 43 views
1

我在嘗試幾個來自http://nehe.gamedev.net的教程,爲了學習openGL編程,我想沿着貝塞爾曲線定位球體,使它們看起來像一串珍珠。我怎樣才能將這樣的球體定位在曲線上。我使用de Casteljau算法繪製曲線,因此可以得到曲線上的XYZ點。沿貝塞爾曲線的位置球體

回答

1

如果您的球體相對於貝塞爾曲線的整體長度足夠小,您可以將球體以均勻的間隔定位以獲得類似於一串珍珠的外觀。 (如果球體比較大,那麼你就不得不開始擔心球體重疊 - 這不是一個簡單的問題,並且可能對於學習OpenGL並不是很有指導意義。)

貝塞爾曲線的參數值t01。爲了評估在10個地點(兩端和八個內部點)的貝塞爾曲線,你可以做這樣的事情:

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

EvalBezier(t, x, y)填補(x,y)對於給定t。只需選擇radius即可獲得令人滿意的結果。如果您想嘗試自動選擇radius,則只需使用距離點i至點i-1i+1的最小距離的一半作爲粗略估計值。如果你這樣做,請記住專門處理終點,只使用下一個或前一個點(無論你有哪些點)。