3 차원 공간 강체 운동 프로 그래 밍 문제 총화 (SLAM 제3 장)

5050 단어 C++
1. 정규 화 중. normalized 와. normalize 의 차이
전송:http://www.우리. com / article / 4812836. htm 공통점: 규범 화 를 실현 하여 하나의 벡터 를 같은 방향 으로 유지 하지만 그 길 이 는 1.0 이다. 만약 에 이 벡터 가 너무 작 아서 규범화 되 지 않 으 면 0 벡터 가 되 돌아 갈 것 이다.
차이 점: Vector 3. normalized 의 특징 은 현재 벡터 가 변 하지 않 고 새로운 규범 화 된 벡터 를 되 돌려 주 는 것 이다.Vector 3. Normalize 의 특징 은 현재 벡터 를 바 꾸 는 것 입 니 다. 즉, 현재 벡터 길 이 는 1 입 니 다.
그래서 사용 방식 은 다음 과 같다.
Vector3 temp1 = new Vector3(3f, 4f, 5f);//       
Vector3 temp = temp1.normalized;//normalized       ,          
temp.Normalize();//normalize              

2. 매트릭스 T 변환 시 주의사항
2.1. 변환 매트릭스 TEigen: Isometry3d T 를 직접 사용 할 수 없습니다.T. matrix () 야 말로 행렬 을 바 꾸 는 것 입 니 다. 연산 을 할 때. matrix () 접 두 사 를 추가 해 야 합 니 다.
2.2 회전 매트릭스 R, 이동 벡터 t 할당 방법 두 가지
Isometry3d T1 = Isometry3d::Identity();//       T1    

T1.pretranslate(t1);// T      t     1
T1.translation() = Eigen::Vector3d(1,2, 3)// T      t     2

T1.rotate(Q1);// T      R  


3, 4 원수 Q 사용 주의사항
1. 4 원수 쓰기 형식: 보통 책 에 쓰 인 4 원수 형식 은 q = [w, x, y, z] 프로그램 에서 4 원수 형식 은 q = [x, y, z, w] 이 므 로 반대로 쓰 지 않도록 주의해 야 한다
4. 회전 행렬 T 4 원수 Q 회전 벡터 V 3 자 간 의 전환
블 로그:https://blog.csdn.net/u011092188/article/details/77430988
AngleAxisd t_V(M_PI / 4, Vector3d(0, 0, 1));//    
Matrix3d t_R = t_V.matrix();//    
Quaterniond t_Q(t_V);//   

4. 세계 좌표계 와 국부 좌표계
블 로그:https://blog.csdn.net/ktigerhero3/article/details/77155199 https://blog.csdn.net/miaomiaoyuan/article/details/54973363
3 차원 좌표 가 회전 하고 이동 할 때 행렬 이 왼쪽 곱 하기 인지 오른쪽 곱 하기 인지 고려 해 야 한다.회전 매트릭스 R, 이동 매트릭스 T, 좌표 매트릭스 A 가 설치 되 어 있 습 니 다.
  • 정적 인 세계 좌 표를 돌 면 RA, 즉 왼쪽 곱 하기 회전 행렬
  • 이 있다.
  • 만약 에 동태 적 인 자체 좌 표를 돌 면 A 'R', 즉 오른쪽 곱 하기 회전 행렬
  • 이 있다.
  • 만약 에 평행 이동 을 하면 TA, 즉 왼쪽 곱 하기 평행 이동 행렬 이 있 고 A 'T' 는 오른쪽 곱 하기 평행 이동 행렬
  • 이다.

    좋은 웹페이지 즐겨찾기