2017-10-29 11 views
1

구조가 용접 구조로되어 있습니다.상자 2d 용접 질량체의 중심 질량?

구조를 움직일 충동/힘을 적용하지만 구조가 완벽하게 똑바로 움직이지 않는 것을 알았습니다. 벡터의 방향으로 움직이기 시작한 다음 서서히 돌아 서서 결국 원을 그리며 이동합니다.

문제는이 문제가 힘이 질량 중심에 적용 할 필요가 있다는 것입니다 나타납니다 Here

를 해결한다. 그러나, 나는 함께 용접되는 구조물로부터 질량 중심을 얻는 방법을 확신 할 수 없다.

구조의 각 물체 중심이 있지만 중심에 있습니다. 복잡한 용접 구조물의 질량 중심을 계산할 수있는 방법이 있습니까?

답변

0

각 개체의 무게 중심에 대한 세계 좌표의 가중 합계를 취하는 것만 큼 간단합니다.

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); 사용

b2Vec2 centreOfMass = GetWorldCentreOfMass(bodies); 
for (b2Body &body : bodies) { 
    body.ApplyLinearImpulse(impulse, centreOfMass); 
}