三维空间刚体运动编程问题总结(SLAM第三章)

1.归一化中.normalized和.normailze的区别

转载:http://www.it610.com/article/4812836.htm
共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回。

不同点:Vector3.normalized的作特点是当前向量是不改变的并且返回一个新的规范化的向量;Vector3.Normalize的特点是改变当前向量,也就是当前向量长度是1

所以使用方式如下:

Vector3 temp1 = new Vector3(3f, 4f, 5f);//初始化原始向量
Vector3 temp = temp1.normalized;//normalized不改变原始向量,将归一化值赋值新向量
temp.Normalize();//normalize可以直接将原始向量进行归一化

2、变换矩阵T使用注意事项

2.1、不能直接使用变换矩阵T
Eigen::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、四元数Q使用注意事项

1、四元数书写格式:
通常书上所写四元数格式为q=[w,x,y,z]
在程序中四元数格式为q=[x,y,z,w]
一定要注意不能写反了

4、旋转矩阵T 四元数Q 旋转向量V 三者之间的转换

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);//四元数

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35665380/article/details/88693459