• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

좌표계 변환 행렬 관련 문의드립니다.

24.02.25 00:43 작성 조회수 208

0

안녕하세요, 이번 강의와 이전 강의(좌표계 변환 행렬)을 듣고, 좌표계 변환 행렬에서 '(B좌표계 기준) u,v,w의 성분'을 채우는 부분에 대해 제가 이해한 게 맞는지 확인차 문의드립니다.

  1. 로컬 좌표계에서 월드 좌표계로 변환할 경우. 월드 좌표의 단위벡터 U,V,W 는 각각 U(1,0,0) , V(0,10), W(0,0,1) 이고, 이를 이용해 로컬 좌표계의 단위 벡터(u,v,w)의 성분을 보면


    u = ux*U + uy*V + uz*W

     

    v = vx*U + vy*V + vz*W
    w = wx*U + wy*V + wz*W

     

    U,V,W가 위의 단위 벡터이므로, 좌표계 변환 행렬을 채울 때 '(B좌표계 기준) u,v,w의 성분'에 로컬 좌표계의 단위벡터를 그대로 채우면 된다.

    또한 u,v,w는 로컬 좌표계의 Right, Up, Look 벡터이므로 이를 그대로 채우는 거라고도 할 수 있다.

  2. 이번 강의의 약 21분 50초 즈음 내용. 로컬 좌표계가 월드 좌표계에서 Y축으로 45도 회전한 상태라면, 로컬 좌표계의 단위벡터도 월드 좌표계의 단위벡터 U,V,W에서 Y축으로 45도 회전했다고 볼 수 있으므로 y축 회전행렬을 적용한다.

  3. 월드 좌표계로 변환하는 게 아닌 A->B 변환이라면, B좌표계 기준에서 A좌표계의 단위 벡터 u는


    u = ux*U + uy*V + uz*W(여기서 U,V,W는 월드 좌표계의 단위벡터가 아님)인데 ,
    항상 u = (ux, uy, yz)라고 할 수 없으므로 '(B좌표계 기준) u,v,w의 성분' 을 채울 때 A좌표계의 단위벡터(혹은 Right, Up, Look 벡터)를 그대로 채울 수 없다. 예로 u = (2,2,2) / U = (1,-1,0) / V = (0,1,0) / W = (0,0,1) 이라면 u = 2U + 4V + 2W이고, uy == 4 라면 u = (2,2,2)가 성립되지 않는다.

특히 3번은 틀린 듯 한데 제가 이해를 제대로 못 해서 맞다/틀리다를 판단하기가 어렵네요 ㅜ 질문에 대한 답변 외에도 표현상의 문제를 체크해주시는 것도 감사하겠습니다.

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.02.27

안녕하세요, 인프런 AI 인턴입니다.

sjfriend4714님, 좌표계 변환 행렬에 관한 질문에 답변드리겠습니다.

  1. 로컬 좌표계에서 월드 좌표계로 변환하는 경우, 로컬 좌표계의 단위벡터(u, v, w)가 월드 좌표계의 단위벡터(U, V, W)를 기준으로 표현되며, 로컬 벡터를 월드 좌표계로 변환하는 행렬에 적용됩니다. 말씀하신 것처럼 월드 좌표계의 기준벡터로 로컬 좌표계의 단위벡터를 표현할 때는 상대적인 관계가 중요하기 때문에, 로컬 좌표계의 Right, Up, Look 벡터를 그대로 변환행렬에 적용하는 것이 맞습니다.

  2. 좌표계가 회전한 경우에는 해당 회전을 나타내는 회전행렬을 적용해야 합니다. 예를 들어, 로컬 좌표계가 월드 좌표계에서 y축을 기준으로 45도 회전했으면, 해당 회전행렬을 로컬 좌표계 벡터에 적용하여 월드 좌표계로 변환합니다.

  3. A좌표계에서 B좌표계로의 변환일 때 B좌표계가 월드 좌표가 아니라면, 상대적인 관계를 봐야 하기 때문에 U, V, W 벡터가 A좌표계의 u 를 표현하는 방식에 따라 달라집니다. 즉, B좌표계 기준의 u, v, w 성분은 A좌표계의 단위 벡터를 B좌표계로 변환한 것으로, 예를 들어 u가 (2, 2, 2)라면 이는 B좌표계 안에서 해당 벡터가 어떻게 표현되는지를 의미합니다. 따라서, A좌표계의 단위벡터가 B좌표계의 (U, V, W)를 바탕으로 다르게 표현될 수 있으며, 이는 위의 예시와 같이 A좌표계의 u가 B좌표계에서 (2U + 4V + 2W)로 표현되는 것을 의미합니다.

3번에서 말씀하신 예시는 잘 이해하고 계시며, A좌표계에서 B좌표계로의 변환 시 B좌표계 내에서의 벡터 성분을 계산할 때 A좌표계의 벡터를 그대로 사용할 수 없음을 올바르게 파악하셨습니다. A에서 B로의 변환은 B좌표계의 관점에서 A좌표계의 벡터를 표현하는 과정이므로, B좌표계에서의 U, V, W 벡터 성분을 이용하여 A좌표계의 벡터를 새롭게 표현해야 합니다.