惯性必须是肯定的

时间:2011-09-02 13:02:04

标签: c++ ode-library

我正在使用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]

我有这段代码:

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

我在physics->addObject(&orb.body, &orb.mass, 1.0);打电话给我。

1 个答案:

答案 0 :(得分:0)

massPtr结构包含惯性张量。这个张量(在这种情况下只是一个矩阵)必须是正定的。这就是我们所能说的,直到你告诉我们你从哪里获得massPtr