gpt4 book ai didi

vector - 通过在 Chipmunk 中对其施加正交力来围绕其中心旋转主体

转载 作者:行者123 更新时间:2023-12-02 05:33:38 24 4
gpt4 key购买 nike

我试图通过施加正交(与 body 方向)力并产生所需的扭矩来围绕其自身中心旋转 body 。然而,这也会(自然地)移动 body ,我只需要它来旋转。这是我的代码。请注意,我不想手动设置角度/方向,而是试图通过使用此旋转力来实现。

cpFloat dot = cpvdot(turningN, cpvnormalize_safe(cpBodyGetRot(body)));
cpFloat cross = cpvcross(turningN, cpvnormalize_safe(cpBodyGetRot(body)));


cpVect rotN;
if (cross<=0) {
rotN = cpvperp(cpvnormalize_safe(cpBodyGetRot(body)));
}else{
rotN = cpvrperp(cpvnormalize_safe(cpBodyGetRot(body)));
}

cpVect rotF = cpvmult(rotN, 300*(1-dot));
cpBodyApplyForce(body, rotF, cpv(75,14));

turningN 是指示 body 应具有的方向的向量。我制作点积,以便随着 body 的方向朝向所需的方向,我应用越来越少的旋转。

编辑

因此,正如@DGH 指出的那样,我们需要添加一个方向和大小相同但与我们的旋转力相反并朝向对象中心的力。所以,我只需要添加这行代码就可以让它工作:

cpBodyApplyForce(body, cpvneg(rotF), cpvzero);

最佳答案

我不了解花栗鼠,但我知道一点物理知识 - 沿相反方向向物体中心施加第二个力,并适当缩放其大小以抵消不需要的运动。

这就像有一个固定在固定轴上的轮子 - 当您向轮子的边缘施加力时,它会旋转而不向前移动,因为轴会在相反方向施加反作用力。

关于vector - 通过在 Chipmunk 中对其施加正交力来围绕其中心旋转主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012615/

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