gpt4 book ai didi

objective-c - b2PolygonShape::TestPoint(p1, p2) 中的变换参数是什么?

转载 作者:行者123 更新时间:2023-11-30 15:55:57 25 4
gpt4 key购买 nike

我对 box2d 很陌生,我只想做一个简单的检查,看看一个点是否在 cocos2d 中的多边形内部。

b2PolygonShape polygon;
b2Vec2 vertices[] =
{
b2Vec2(300, 400),
b2Vec2(350, 400),
b2Vec2(300, 500),
b2Vec2(350, 500)
};

polygon.Set(vertices, 4);
if(polygon.TestPoint(b2Transform(), b2Vec2(301, 405)))
{
CCLOG(@"Point is inside");
}

我不明白期望 b2transform 的第一个参数是什么。为什么需要这个以及我应该将其设置为什么?有什么我忘记了吗?我试图做到这一点,而不做任何复杂的事情,比如拥有一个世界对象等等。最简单的方法是什么?

最佳答案

bool TestPoint(const b2Transform& transform, const b2Vec2& p) const;

变换允许您在局部坐标中指定多边形,然后将其变换(平移和旋转)到所需的位置/方向。如果您希望多边形顶点成为世界空间坐标,请使用恒等式(如乘以 1)变换:

btTransform identity; identity.SetIdentity();
polygon.TestPoint(identity, ...

您需要明确地将其设置为identity,因为 b2Transform 及其两个成员 b2Vec 和 b2Rot 中的默认构造函数不执行任何操作,因此将在发布版本中包含随机垃圾(调试通常设置所有未指定的内容)值到 0)。

有关详细信息,请参阅 b2Math.h 和 b2PolygonShape.cpp。

关于objective-c - b2PolygonShape::TestPoint(p1, p2) 中的变换参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com