#25 Quaternion.AngleAxis

국기웅·2024년 5월 22일

다시 돌아온 쿼터니언 복습시간..

AngleAxis라는 함수를 발견하였다.
각도에 따라 벡터를 회전시켜야하는데, 여기서 사용되는 함수이다.

public static Quaternion AngleAxis(float angle, Vector3 axis);

vector3 축을 따라 angle만큼 회전시켜준다.
여기서 vector는 Vector3.up과 같이 기본벡터를 사용하면 더욱 편리하다.
xy평면, xz평면 등 기본적인 면을 기본으로 회전시켜줄수 있기 때문이다

오일러각의 회전은 짐벌락으로 이어질 수 있다고 전에 이야기한 적이 있다.그래서 등장한 것이 쿼터니언
이 쿼터니언의 각종 함수에 대해 정리해보겠다

회전 생성
Quaternion.LookRotation(Vector3 forward, Vector3 upwards= Vector3.up);
foward와 upwards의 벡터값을 통해 회전을 생성한다.
foward는 볼 곳이 작성되고, upwards는 어느 방향이 up인지를 정의한다.

Quaternion.Angle(Quaternion a, Quaternion b);
두개의 쿼터니언 사이 각을 degree로 표기한다

Quaternion.AngleAxis

Quaternion.FromToRotation(Vector3 fromDirection, Vector3 toDirection);
fromdirection에서 todirection으로 회전을 생성한다.

회전 조작
Quaternion.Slerp(Quaternion a, Quaternion b, float t);
두 쿼터니언 사이의 보간법이다. a가 시작, b가 끝이고, t는 보간할 비율을 의미한다.

Quaternion.Inverse(Quaternion rotation);
반대되는 회전값 반환

Quaternion.RotateTowards (Quaternion from, Quaternion to, float maxDegreesDelta);
from에서 to로 회전시킨다. maxDegreesDelta만큼 간격이 띄워진다고 하는데..활용하면 잘 사용할 수 있을 것 같다.

예외적이지만, Transform클래스에도 쿼터니언 회전에 적용되는 메서드가 존재한다.
Transfrom.Rotate
Transform.RotateAround

profile
게임개발호소인

0개의 댓글