[Graphics] 3/29

  • Euler angles (a, b, r)
  • Axis-Angles
  • Rotation Vector
  • Rotation Matrix
  • Unit quaternion

문제가 되는 거?

  1. ??
  2. 오일러 anlge로 준 경우, 어떤 축으로 준 건지 알아내야 함.

practical하게는 골치아픈 부분이 있을 수 있습니다.

v’ = Mv
v’ = qvq^(-1)
오일러 앵글은 어떻죠?
이 자체로는 어떻게 할 수 없고, conversion을 해줘야 하죠.

matrix conversion은 쉽죠.
계속 곱해주면 돼요.
quarternion도 마찬가지에요.
q2q1vq1(-1)q2(-1).

tangent vector.
이것도 4차원상의 벡터니까, 쿼터니온과 비슷하죠.

4차원을 직교하게 자르면 3차원이 되죠.


identity에 접한 탄젠트는 (1, 0, 0, 0).
각속도를 배웠죠?
축이 있고, 거기서 얼마나 빨리 회전하는가.
이게 각속도에요.
각속도는 어떻게 정의하나요?
한번 미분한 후 역함수를 곱해주죠.
위치를 미분할 때와는 다르죠.
linear하지 않은 space로 가면서 달라집니다.

Exp Log

쿼터니온에서 정의합니다.
마치 2차원에서는 theta를 주면 그 호의 길이를 지칭하는 것과 같이 log를.
직선으로 주어진 것을 호로 바꾸는 것 같은 게 exp.

회전을 하는 방법.

  • Lie Group: 곱하기로 하는 그룹
  • Lie Algebra: 더하기로 하는 그룹

… ??

여러분 그런데 조심해야 할 것이 있어요.
e^u*e^v ≠ e^(u+v)
회전은 교환법칙이 성립하지도 않잖아요.

하나 구분해야 하는 것은, finite과 infinite하게 얻어지는 것은 달라요.
infinite 한 것은 각속도예요.
차이는,
finite 한 동네에서는 교환법칙이 성립하지 않아요.
infinite 한 동네에서는 더할 수 있어요.
팔을 올릴 때의 각속도가 있고, 접을 때의 각속도가 있죠.
접으면서 올리면 어떻게 될까요?
더하면 됩니다.
동역학 하면 수식으로 풀 수 있어요.
제대로 배울려면 수식과 해석을 다 봐야 하는데,
수식까지 하려면 시간이 모자라요 ㅠㅠ
각속도는 축과 회전률을 사용하는게 차이네요..?

Spherical linear Interpolation

이제는 쓸모있는 것을 할 수 있겠네요.
회전에서의 최단경로란 무엇일까요.
하나의 축을 기준으로만 회전했을 때가 최단경로겠죠.
축은 잊어버리고, 각만 따진 것이 angle distance입니다.

두 점을 잇는 가장 빠른 경로를 sphere 상에서 어떻게 나타나나요?
두 개의 point, 그리고 구의 중점을 포함하는 평면상의 arc.

둘 간의 차이를 나타낼 때는 tangent plane에서 나타냅니다.

log(exp(rotation)) = rotation
log(orientation) = UNDEFINED

rotation의 orientation에서 다시 rotation을 구하는 것은 괜찮아요.
아래는 reference orientation에 defendent합니다.

E에 대해서 하나 더 주의할 게 있습니다.
log(exp(v)) = v?
타입은 맞습니다.
value는?
만약 v가 x축을 90도만큼 돌리는 거였어요.
거기에 exp 하면 x축으로 90도 돌린 것에 해당하는 쿼터니온이 나와요.
log를 취하면 다시 원상복귀됩니다.

그런데 만약 3파이만큼 돌아가는거면?
한바퀴 돌아서 더 간 거예요.
여기에 로그를 취하면 파이만큼만 나오겠죠.
길이가 2파이보다 큰 것을 log하면 trucation 되어서 나와요.

power는 scala multilication으로 생각할 수 있습니다.
하지만 orientation에서는 잘 정의되지 않습니다만, special case가 있죠.
1이거나 0일 때.
벡터와 비슷합니다.

rotation에 대한 linear combination은 정의는 됩니다.
하지만 기하학적인 의미는 뭘까요?
곱하는 경우, 순서에 dependent한 compositon입니다.
더하는 경우, 순서에 independent합니다.
취미 삼아 들어두세요.
e^ue^v, e^ve^u, e^(u+v)
이 셋은 각각 다릅니다.
곱하는 경우, 순서에 따라 달라지기 때문이죠.
이것을 이렇게 하면 어떨까요:
e^(u/2)e^(v/2)e^(u/2)*e^(v/2)
이것을 1/3으로 나눠서 진행하고, 1/4… 리미트를 취하면 어때요?
이럴 경우, 완전히 동시에 돌리는 셈이 되죠.
이게 기하학적인 의미에요.
계산은 무지 쉽습니다.
의미는 좀 만만치 않기 떄문에, 쓸 때 조금 조심해야 합니다.

결정적으로 우리가 필요한 건 이거에요: orientation의 affine combination.
이걸 하고 나면 세 번째 숙제가 나갈거에요.

Matrix vs. Quaternion

공통점

  • 둘 다 redundant 한 부분이 있죠.
  • sigularity?
  • exp, log 정의 됨.
  • tangent space 정의됨.

    쿼터니온

  • 계산이 간단
  • 적은 공간
  • 계산 오차를 정정하기 쉽다. unit*unit=unit이어야 하는데, 달라질 수있음.
    하지만 정정하려면 normalization만 하면 되므로 간단.

    matrix

  • 100개 매트릭스 곱하면 오차 누적때문에 써먹기 힘듦.
    그람슈미트 process: 계산이 훨씬 복잡함.
  • 그래도 1 to 1 mapping임.
  • 하나 속에 homogeneous matrices를 표현 가능하다.