Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Box2d焊接体的中心质量?_C++_Box2d_Game Physics_Jbox2d - Fatal编程技术网

C++ Box2d焊接体的中心质量?

C++ Box2d焊接体的中心质量?,c++,box2d,game-physics,jbox2d,C++,Box2d,Game Physics,Jbox2d,我有一个由焊接体组成的结构 我应用脉冲/力来移动结构,但我注意到结构并没有完全直线移动。它开始沿着向量的方向移动,然后慢慢地转动,最后绕一圈 这个问题得到了解决 看来问题在于,力需要施加在质心上。然而,我不确定如何从焊接在一起的结构中获得质心 我有结构中每个物体的重心,但它们都在中心。有没有一种方法可以计算复杂焊接结构的质心?这很简单,只需将每个物体质心的世界坐标加权求和即可 b2Vec2 GetWorldCentreOfMass(std::vector<b2Body> *bodie

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

我应用脉冲/力来移动结构,但我注意到结构并没有完全直线移动。它开始沿着向量的方向移动,然后慢慢地转动,最后绕一圈

这个问题得到了解决

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


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

这很简单,只需将每个物体质心的世界坐标加权求和即可

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;
}

这很简单,只要取每个物体质心的世界坐标的加权和

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;
}