인사말 모든 이미지에서 보듯OpenGL, 세계 대 객체 좌표 매핑? (역행렬)
,
I 객체라는 O (linestripes 세트) .Its 물체 좌표계 (X '인을 가지고 y ', z'). 내가 번역 는 코드 다음 사용하여 내 OpenGL을 현장에서이 객체를 회전 :
glPushMatrix();
glTranslatef(Oz, Oy,Oz);
glRotatef(rotationX , 1.0, 0.0, 0.0);
glRotatef(rotationY, 0.0, 1.0, 0.0);
glRotatef(rotationZ, 0.0, 0.0, 1.0);
contour->render();
glPopMatrix()
;
내가
내가 올바른 생각하면
glPushMatrix();
glTranslatef(hx,hy,hz);
glPopMatrix();
(오즈, 오이, 오즈) 및 (HX, HY을 사용하여 좌표 (HX, HY, Hz에서) 세계에 번역 H라는 점을 가지고, hz)는 세계 좌표입니다.
자, 제가하고 싶은 것은 O의 객체 좌표계에 비례하여 H (hx, hy, hz)의 위치를 계산하는 것입니다. (x ', y', z '); 알다시피, 나는 객체 O의 역변환을 계산하고 이것을 점 H에 적용함으로써 이것을 할 수 있습니다.
어떤 팁이 있습니까? OpenGL은 역행렬 계산을위한 함수를 제공합니까? 만약 내가 어떻게 든 inverse-matrices를 발견한다면 그들을 곱하는 순서는 무엇인가?
참고 : 점 H에서 반지름 R을 가진 구를 그리는 공구와 같은 "해머"를 구현하고 싶습니다. 사용자가이 구를 사용하여 망치처럼 객체 O를자를 수 있습니다 .2 차원에서 이렇게 구현했습니다. 해머 위치를 계산할 수 있다면 같은 알고리즘을 사용할 수 있습니다 (x ', y', z ')에 상대
미리 감사드립니다.
내가 당신의 질문을 이해한다면'{Ox-hx, Oy-hy, Oz-hz} '(즉'glTranslatef (Ox-hx, Oy-hy, Oz-hz))? 전역 벡터'O'와'h'를 이미 가지고 있다면 그것은 벡터 빼기의 간단한 문제입니다. 행렬 조작을 방정식에서 완전히 벗어나게 만듭니다. 그런데 원래 솔루션이 올바르게 들립니다. – MrGomez
안녕하세요, 나는 오리지널 오브젝트 좌표를 변경해야만합니다. 즉, 세계 좌표가 아닌 오브젝트 좌표를 비교해야합니다. –
걱정할 필요가 없습니다. OpenGL이 범용 행렬 라이브러리를 제공하지 않는다는 것을 재빨리 생각해 보았습니다. 별도의 라이브러리를 사용하거나 계산 (http://mathworld.wolfram.com/MatrixInverse.html)을 직접 수행해야합니다. – MrGomez