Box2d 从旋转的主体中获取形状点

Box2d get Shape Points from rotated body

本文关键字:获取 主体 旋转 Box2d      更新时间:2023-09-26

我现在有点困惑。如果我从 Box2d 中的夹具中获取形状,它会返回与主体位置和角度相关的点(带有 ->getVertices)。但是不应该在某个地方存储形状实际点的数据吗?

为了澄清问题:我有一个旋转的多边形形状。现在我想得到多边形的所有点,它们的实际位置。有没有我可以使用的方法?还是我必须计算转换,这对我来说没有多大意义。

我正在使用box2dweb进行JavaScript。

是的,您需要使用主体变换来计算当前位置。这些点存储在局部(主体)坐标中,因此移动主体(一个点)不需要更新灯具的所有多个点。考虑一个物体在空旷区域移动,没有计算碰撞......物理引擎根本不需要夹具点。如果将这些点存储在世界坐标中,它们也会很快失去精度。

如果你想画夹具,你可以得到点的当前世界位置,如下所示(C++):

b2Vec2 worldPos = body->GetWorldPoint( localPos );

您可以获得主体的变换并将其应用于每个顶点。这会将局部顶点位置转换为世界位置。