변환 행렬의 효과를 어떻게 되돌릴 수 있습니까?


14

저는 최근 GLFW를 통해 OpenGL 및 C ++를 사용하여 게임을 진행하고 있습니다.

게임에는 터릿이 장착 된 비행선이 있습니다. 비행선은 월드 공간 좌표에서 움직이며 포탑이이를 따릅니다.

포탑에는 모양 / 목표 방향을위한 자체 좌표 공간이 있습니다. 기본적으로 포탑이 (0,0,1)방향을 향하면 비행선의 이동 방향과 평행을 향합니다.

터릿에 월드 스페이스 대상을주기 위해 월드 스페이스 좌표를 가져와 터릿 스페이스 좌표로 변환하는 매트릭스가 있습니다.

터릿이 발사 될 때 월드 공간에 발사체를 스폰하고 싶습니다. 터렛 공간 좌표를 다시 월드 공간으로 변환하기 위해 변환 매트릭스를 사용하는 우아한 방법이 있습니까?

질문을하는 더 일반적인 방법은 다음과 같습니다 . M공간 A에서 좌표로 좌표를 취하는 행렬이있는 경우 B. M좌표를에서 B로 가져 오는 데 사용하는 쉬운 방법 이 A있습니까?

답변:


19

그래서 긴 행렬로 M반전 한 후 계산, (당신은 매우 특별한 일을하지 않는 한 그것은 일반적으로 될 것이다) 행렬 역 의를 M당신이 원하는 것을 당신에게 매트릭스를 제공 할 것입니다.

즉, M일부 변환을 inverse(M)수행하는 경우 "반대"변환을 수행합니다.

대부분의 행렬 / 벡터 라이브러리는 역을 계산하는 수단을 제공합니다.


1
보너스 질문 (답을 아는 사람처럼) : 비가 역적 변환 행렬이 시각적으로 흥미로운 결과를 생성합니까?
user1306322

6
아마. 더 낮은 차원 (예 : 모든 X 값을 0으로)으로 투영하면 값을 버릴 수 있기 때문에 되돌릴 수없는 변환이됩니다. 유용하다는 점에서 흥미롭지 만 펑키 한 결과를 얻을 수는 없습니다. "무기 성"과 "시각적으로 흥미로운"은 직교입니다.
congusbongus

@congusbongus 아니에요! 3D에서 2D 로의 투영은 평면 수신기에서 그림자를 얻는 표준 핵입니다.
imallett

@ user1306322 당신은에 관심이있을 것이다 Moore–Penrose pseudoinverse
Tobias Kienzler

5

변환 행렬이 회전 행렬 인 경우 회전 행렬의 역수가 해당 행렬의 전치라는 사실을 이용하여 문제를 단순화 할 수 있습니다.

변형 행렬이 회전과 평행 이동을 나타내는 경우 구성 요소를 별도로 처리하십시오. 역은 변환을 빼고 회전 행렬의 조옮김을 적용하는 것과 같습니다.


2

매트릭스 라이브러리에는 아마도 inverse라는 함수가 있습니다. 아마 당신이 찾고있는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.