OpenGL преобразование координат объекта в другую систему координат

#opengl #transformation

#opengl #преобразование

Вопрос:

У меня есть две сферы в разных системах координат:

 glMatrixMode( GL_MODELVIEW );

glLoadMatrixf( M1 );
glutWireSphere(70, 15, 15);


glLoadMatrixf( M2 );
glutWireSphere(70, 15, 15);
  

Я хочу найти положение сферы 2 в системе координат первой сферы. Не могли бы вы, пожалуйста, помочь мне это сделать?

Ответ №1:

У вас есть M1 преобразование сферы 1 в пространство для глаз и M2 для сферы 2, поэтому вы можете использовать пространство для глаз как общее пространство, которое позволяет вам связать положение между ними. Итак, чтобы преобразовать вершины в объектном пространстве сферы в в объектное пространство сферы 1, вы просто переходите к общему пространству глаз, используя M2 , а затем обратно в объектное пространство сферы 1, используя обратное M1 . В классической нотации GL это даст вам составное преобразование в виде матрицы

 T=inverse(M1)*M2
  

и любая точка x в объектном пространстве сферы 2 будет преобразована x' в объектное пространство сферы 1 как

 x'=T*x