두 벡터 사이각(내적, 외적 활용)
사이각 계산두 벡터의 내적은 아래 식과 같이 벡터 a, b가 있을 때, 두 벡터 길이(||a||, ||b||)와 코사인 곱으로 구할 수 있습니다.참고로 벡터 길이는 3차원을 예로 들었을 때 x제곱, y제곱, z제곱의 수치들을 모두 더해 루트를 씌어주면 계산이 됩니다.위 식을 이용해서 두 벡터의 각을 구하려면 아래와 같이 아크코사인을 이용하면 됩니다. 아래 그림의 x, y는 벡터를 의미합니다. 벡터 x에 해당하는 3차원 좌표 x, y, z가 있고 벡터 y 또한 3차원 좌표 x, y, z가 있습니다. wiki 그림을 가져와서 혼동을 줄 수 있는 점 양해 바랍니다. -.-;두 벡터의 길이가 1인 단위 벡터이면 두 벡터의 길이를 나눠줄 필요 없이(길이가 1이기 때문에) 아크코사인에 두 벡터의 내적만 이용해서 각..
2024. 1. 17.
변환행렬 사원수 변환 코드(Matrix to Quaternion using Eigen Library)
3차원 4x4변환행렬을 알고 있을 때 사원수의 w, x, y, z를 계산하는 것을 Eigen Library에서 제공하고 있어 코드를 소개합니다. Quaternion은 우리말로 사원수라고 하는데 사원수 식은 아래와 같이 표현할 수 있습니다. q = w+xi+yj+zk 우리가 잘 알고 있는 오일러 각을 사용하면 짐벌락(Gimbal Lock) 현상이 발생하는데 이 현상을 피하기 위해서는 사원수를 사용해야 합니다. 사원수를 사용하기 위해서는 위 식의 w, x, y, z를 알아야 합니다. 참고로 i, j, k는 허수 부분을 나타내는 세 개의 가상 백터입니다. 4x4 변환행렬 입력으로 사원수의 w, x, y, z를 구하는 코드입니다.(행렬의 4행의 값은 translate에 관련된 값입니다.) Eigen::Matri..
2024. 1. 12.