2011-09-02 6 views
2

저는 Open Dynamics Engine을 사용하여 C++로 게임을 작성하고 있습니다. 내가 그것을 실행하면, 나는 이러한 오류를 얻을 :관성은 반드시 명확해야합니다

ODE Message 2: inertia must be positive definite in dMassCheck() File ../../../../../ode/src/mass.cpp Line 53 

ODE Message 2: inertia must be positive definite in dMassCheck() File ../../../../../ode/src/mass.cpp Line 53 

ODE INTERNAL ERROR 1: assertion "dMassCheck(mass)" failed in dBodySetMass() [../../../../../ode/src/ode.cpp]

나는이 코드를 가지고 : 나는 physics->addObject(&orb.body, &orb.mass, 1.0);하여 전화 드렸습니다

void Physics::addObject(dBodyID *body, dMass *massPtr, dReal mass) { 
    *body = dBodyCreate(world); 
    dMassSetSphereTotal(massPtr, 2.0f, 1.0f); 
    dBodySetMass(*body, massPtr); 
    dBodySetPosition(*body, 0.0, 0.0, 0.0); 
} 

.

답변

0

massPtr 구조는 관성 텐서가 포함되어 있습니다. 이 텐서 (이 맥락에서 단지 행렬)는 양의 확정적이어야합니다. 우리가 말할 때까지 우리가 할 수있는 말은 모두 massPtr의 주소입니다.

+0

첫 번째 게시물을 업데이트했습니다. – m4tx

+0

예,하지만 ... 예,하지만 ... 그게 뭐죠? – TonyK

+0

Ahhh ... Lol, 아무것도, 그냥 Orb 클래스의 변수를 만들었습니다 :'class Orb {public : [...] dMass mass; }'그리고 Orb 및 Physics 객체를 생성 한 후에 addObject()를 호출합니다. – m4tx

관련 문제