Joy of Vex

Joy of Vex [Day17-1,2]

후디니하는 돌 2023. 3. 1. 22:38

quaternion(float anglevector axis)

1. 얼마나 회전할지에 대한 크기값 angle

2. 축 axis

두 가지정보가 필요하다.

 

howmuch에 $T 를 넣어주면 계속 회전하는 결과를 얻을 수 있다.

quaternion의 결과는 요소가 4개인 vector가 된다.

 

@orient에 대해..

0,0,0,1로 해주면 카피투포인트 했을 때 원래 오브젝트 방향대로 바라보고 있음 (원본 그대로 복사만 해줌)

a의 값을 1로 바꾸면 x축기준으로 90도 회전, 1에서 점점 커질수록 점점 더 회전하지만 값이 훨씬 더 적게 회전함

a 값을 변경해놓고 b,c를 회전시키면 각각 y축 z축으로 회전하는 게 아니라 틀어진 방향으로 회전하는것처럼 보임

a,b,c,d의 규칙을 정하긴 어려움

d가 4가 되면 a,b,c 값이 4가 되어야 90도 회전

 

axis를 {0,1,0} 으로 두고 angle을 높이면 y축 기준으로 회전

angle이 1.6쯤 되었을 때 90도가 회전하고 이 때 orient 값을 보면

두번째와 네번째 정보값이 서로 비슷한 값이 된다.

orient 값만 보고 어떻게 회전이 되었는지 유추하기는 불가능

 

물체의 방향과 각도를 설정해줄 방법으로 orient 값이 있는데, 이는 4개의 정보를 가진 벡터로 표현

이때 회전량과 축을 quaternion 펑션에 넣어 결과를 얻게 됨

입력한 값들이 화면 상에서 결과로 잘 나타나는지에 집중하기

 

 

1. 쿼터니언 펑션 2개 인풋

quaternion(float anglevector axis)

axis는 방향 벡터를 써주기(노멀라이즈 활용하기!)

axis의 크기가 1이 아니면 회전 값이 달라지게 됨

1일 때 angle에 $T를 넣었을 때 일정하게 회전하지면 5일 때는 빨라졌다 느려졌다 회전하는 것처럼 보임

파라미터에 아무 값도 입력하지 않고 이렇게만 적었을 때,

카피투 포인트 첫번째 input에 넣은 박스의 방향은 원본 그대로가 됨

 

2. 쿼터니언 펑션 1개 인풋

quaternion(vector)

vector → angle * axis

quaternion(angle*axis)라고 적어줘도 동일한 결과가 나오게 됨

 

3. @N 과 @up을 오리엔트로 변화시키는 법

방향을 구하는 두 가지 방법

단위행렬은 ident() 로 불러올 수 있음

 

maketransform function을 활용해서 matrix로 만들어주기

@N의 크기는 1이어야 하므로 normalize 해주기

3@M = M 이렇게 써주면 행렬을 spreadsheet에서 볼 수 있음

 

4. 실제 각도값을 오리엔트의 값으로 변환하는 법

eulertoquaternion

오일러 투 쿼터니언

radians와 eulertoquaternion을 활용하면

실제 각도값을 파라미터에 넣어줄 수 있음

 

5. 오리엔트값을 믹스해주는 법

6. 오리엔트 값끼리의 곱, 효과의 중첩

7. 오리엔트 값을 매트릭스로, 매트릭스 값을 오리엔트로

qconvert

@orient를 다시 matrix로

@orient와 matrix는 상호관계에 있음

 

8. 오리엔트에서 얻어낸 매트릭스값에서 @n과 @up만 따로 뽑아내는 법

 

나머지 내용은 다음 시간에 계속...