개발하는 리프터 꽃게맨입니다.

[그래픽스] 구형 선형 보간으로 회전 보간 본문

컴퓨터 그래픽스

[그래픽스] 구형 선형 보간으로 회전 보간

파워꽃게맨 2024. 8. 27. 23:36

 

어떤 두 사원수를 특정 비율로 보간해보겠습니다.

이런 식으로 선형보간을 할 수도 있지만, 회전은 원 궤적으로 발생하기에

정확한 보간을 나타내지는 못합니다.

 

좀 더 좋은 결과를 귀해서 구형 선형 보간을 구현해보겠습니다.

 

 

그렇다면 구형 선형 보간을 구현하는 계수를 찾아봅시다.

 

 

q1과 직교하는 회전 사원수를 q3이라고 할 떄 

qt는 위와같이 나타낼 수 있을 겁니다.

 

그렇다면 q3를 구해봅시다.

 

삼각함수를 이용하여 q3와 방향이 동일한 벡터를 얻을 수 있고

해당 벡터를 이용하여 q3벡터를 얻어주도록 합시다.

최종적으로 위와같이 qt를 얻어낼 수 있습니다.

 

 

한 가지 생각할 점은 큰 각을 기준으로 보간을 수행할 것인가

작은 각을 기준으로 보간을 수행할 것인가입니다.

 

이는 bool 형 flag를 세워서 분기처리해주면 됩니다.

 

주의할 점은 사원수에 저장된 각도의 값은 항상 절반이라는 겁니다.

그렇다면 360도를 회전시킬 수 있는 회전사원수는 반원 위에 나타낼 수 있습니다.

 

만약, 두 회전 사원수가 만들어내는 각 중 짧은 각으로만 보간을 수행하고 싶다면

두 사원수가 이루는 각이 90도 미만인지 먼저 확인해야하고

90도를 초과할 경우 q1을 반전시켜서 보간을 해주면 됩니다.

 

 

만약, 긴 각으로 보간을 수행하고 싶으면 반대로하면 되겠죠?

 

코드는 다음과 같습니다.