У меня есть класс (Автомобиль), который расширяет osg::PositionAttitudeTransform
. Теперь я хочу создать камеру, которая имеет ту же позицию. Итак, я получаю матрицу автомобиля в Камерах методом getMatrix ():
matrix = car->asMatrixTransform()->getMatrix();
return matrix;
и я хочу установить манипулятор трекбола:
while( !viewer.done() )
{
(*car).update();
(*camera).update();
trackball_manipulator->setByInverseMatrix((*camera).getMatrix());
viewer.frame();
}
После этого мое приложение завершает работу с кодом ошибки (RUN FAILED (значение выхода 1, общее время: 119 мс)). Что не так с моим кодом и как я могу его отладить?
// редактировать
отладчик говорит, что это ошибка сегментации в этом месте (Matrixd.cpp):
inline void set(double const * const ptr)
{
value_type* local_ptr = (value_type*)_mat;
for(int i=0;i<16;++i) local_ptr[i]=(value_type)ptr[i];
}
Но я до сих пор не знаю, как это исправить.