Box2d从旋转身体获得形状点

问题描述:

我现在有点困惑。如果我从Box2d的夹具中获得Shape,它会返回与身体和角度位置相关的点(带 - > getVertices)。但不应该在那里存储数据的形状的实际点?Box2d从旋转身体获得形状点

要清除事情:我有一个多边形形状将旋转。现在我想要得到它们实际上所有的点数。有没有一种方法可以使用?或者我必须计算转换,这对我来说不会有什么意义。

即时通讯使用box2dweb为JavaScript。

是的,你需要使用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

你得到身体的改造,并将其应用到每个顶点。这将本地顶点位置转换为世界位置。