#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