2012-01-05 95 views
2

嚴格的事實遍歷時更少恆速:貝塞爾曲線(路徑) - 到T

  • 可惜我不是一個數學大師
  • 我用我的手指畫它產生貝塞爾路徑屏幕
  • 我有遵循此路徑
  • 當引擎調用我遍歷該路徑上的物體在物體上(浮動fDelta)以這種方式:

如果(m_fBezierTime < 1.0) {

m_fBezierTime + = 0.1F * fDelta;

m_vPosition = m_Bezier.CalculatePosition(m_fBezierTime);

}

  • 這種方法給出了比那些接近彼此距離高點之間的「巨大」的加速度。

  • 我聽說這是貝塞爾

正常行爲現在的問題是:

  • 我怎樣才能使這個速度至少是「接近」或「〜」以不變?

感謝您對此的任何評論。

回答

2

簡單而快速的解決方案:像您現在正在做的那樣,在Bezier曲線上獲得一組規則分佈的點(例如每個曲線10個點)並測量這些點之間的歐幾里得距離(意思是:sqrt((x_1 - x_2 )²+(y_1 - y_2)2 ...))。這應該是完整曲線長度的一個很好的衡量標準,您可以使用該曲線而不是以幾乎恆定的速度進行移動。

還有更多漂亮的東西在這裏:http://steve.hollasch.net/cgindex/curves/cbezarclen.html 但這可能是矯枉過正。

+0

完美,就像一個魅力。 – PeeS 2012-01-05 16:07:39