2012-08-10 42 views
0

我現在有點困惑。如果我從Box2d的夾具中獲得Shape,它會返回與身體和角度位置相關的點(帶 - > getVertices)。但不應該在那裏存儲數據的形狀的實際點?Box2d從旋轉身體獲得形狀點

要清除事情:我有一個多邊形形狀將旋轉。現在我想要得到它們實際上所有的點數。有沒有一種方法可以使用?或者我必須計算轉換,這對我來說不會有什麼意義。

即時通訊使用box2dweb爲JavaScript。

回答

5

是的,你需要使用body轉換來計算當前位置。點以本地(主體)座標存儲,因此移動主體(一點)不需要更新所有燈具的所有點。考慮一個物體在空的區域移動,沒有計算碰撞......物理引擎根本不需要固定點。如果將它們存儲在世界座標中,這些點也會很快失去精度。

如果你想畫的燈具,你可以得到這樣的(C++)的點的當前世界上的地位:

b2Vec2 worldPos = body->GetWorldPoint(localPos); 
+0

但GetWorldPoint也「只」計算位置。不應該將它存儲在某個位置,或者box2d是否每次都會計算真實位置?是否有GetWorldPoint的反轉功能,或者我必須像GetBodyPoint一樣實現它(worldPos) – fehrlich 2012-08-11 15:45:38

+1

因爲我上面解釋的原因,世界點不存儲在任何地方。 Box2D僅在需要時才計算真實位置,並非每次都需要打勾。如果您檢查Box2D手冊,您會看到有一個GetLocalPoint作爲GetWorldPoint的逆向工作。 http://www.box2d.org/manual.html – iforce2d 2012-08-11 20:03:20

1

你得到身體的改造,並將其應用到每個頂點。這將本地頂點位置轉換爲世界位置。