首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >焊接体的Box2d中心质量?

焊接体的Box2d中心质量?
EN

Stack Overflow用户
提问于 2017-10-29 19:29:09
回答 1查看 194关注 0票数 1

我有一个由焊接体组成的结构。

我施加脉冲/力来移动结构,但我注意到结构不是完全笔直地移动。它开始沿着向量的方向移动,然后慢慢转动,最终绕着圆圈移动。

这个问题在Here中得到了解决

问题似乎是,力需要施加在质心上。然而,我不确定如何从焊接在一起的结构中获得质心。

我有结构中每个物体的质心,但它们都在中心。有没有办法计算复杂焊接结构的质心?

EN

回答 1

Stack Overflow用户

发布于 2017-10-29 21:16:27

它就像取每个物体质心的世界坐标的加权和一样简单。

代码语言:javascript
运行
复制
b2Vec2 GetWorldCentreOfMass(std::vector<b2Body> *bodies) {

    // Compute total mass
    float32 totalMass = 0.f;
    for (b2Body &body : bodies) {
        totalMass += body.GetMass();
    }

    // Compute centre of mass
    b2Vec2 centreOfMass(0.f,0.f);
    for (b2Body &body : bodies) {
        b2Vec2 r = body.GetWorldCenter();
        float32 m = body.GetMass();
        centreOfMass += m*r / totalMass;
    }

    return centreOfMass;
}

请参阅:https://en.wikipedia.org/wiki/Center_of_mass#A_system_of_particles

然后使用空ApplyLinearImpulse(const b2Vec2& impulse, const b2Vec2& point);

代码语言:javascript
运行
复制
b2Vec2 centreOfMass = GetWorldCentreOfMass(bodies);
for (b2Body &body : bodies) {
    body.ApplyLinearImpulse(impulse, centreOfMass);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46999628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档