Инерция должна быть положительно определенной - PullRequest
2 голосов
/ 02 сентября 2011

Я пишу игру на C ++ с использованием Open Dynamics Engine.Когда я запускаю его, я получаю следующие ошибки:

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 голосов
/ 02 сентября 2011

Структура massPtr содержит тензор инерции. Этот тензор (просто матрица в этом контексте) должен быть положительно определенным. Это все, что мы можем сказать, пока вы не скажете нам, откуда вы взяли свой massPtr.

...