坐标系
(注:基础知识快速过)
- 笛卡尔坐标系
- 左手坐标系:拇指x,食指y,无名指z
-
右手坐标系:拇指x,食指y,无名指z左手坐标系 & 右手坐标系
- 世界坐标系:地球上的“绝对坐标系”
- 物体坐标系:物体自己的坐标系
- 摄像机坐标系:摄像机自己的物体坐标系
- 惯性坐标系:惯性坐标系的原点与物体坐标系的原点重合,但是惯性坐标系的各个轴平行于世界坐标系的轴
- 嵌套坐标系:父子关系
坐标变换:
向量的基础知识:
(注:基础知识快速过)
- 向量的维度
- 向量的形式
- 与空间中点的关系
- 零向量
- 模长
- 标量乘法、加法、减法、
- 距离公式
重要的计算
标准化向量
1.
2.模长为1点乘:
- 对应相乘再相加:
- 描述了两个向量的相似程度
- 点乘等于向量大小与向量夹角cos数的积:
- 对公式
稍作变形,便可求夹角。
其公式为:
如果向量,
均为单位向量,则有:
- 点乘等于0说明两向量垂直
-
投影
推导过程:
由图易知平行于
.所以,
在此三角形中,易知.
所以,.
由公式,可得:
注意:
- 叉乘
- 怎么算?matlab一行代码搞定:
cross(a,b)
- 叉乘得到的向量垂直于原来的两个向量
- 叉乘的长度等于向量的大小与向量夹角
值的积
- 在2D平面中,叉乘的模
等于以
,
为两边的平行四边形的面积。
- 若叉乘为0,则两向量平行。
3D中一个向量绕任意轴旋转
- 假设:
- 假设旋转轴通过原点,不考虑平移。(这一条假设很重要,之前在这里卡了很久。可以感性的理解为一个基向量绕着一个单位向量旋转)
- 向量
是单位向量
-
推导过程:
一个从原点开始的向量,绕一个任意的向量
旋转。
绕任意轴旋转的向量
将向量投影到
轴上,有:
由于是
在
上的投影,易知:
(看上面投影那里,注意是单位向量)
很明显可得:
毕竟
对于垂直于的向量
,可由叉乘求得:
把按逆时针旋转一定角度,得到
可得
联立:(这里写的很详细了,注意对照着上面的四条公式看)
由于
可得
得到了关于
的关系公式之后,令三维空间的其中一个基向量
取代
,也就是
有:
使用matlab实现其算法如下:
clc;
clear;
roundAxis = [1,5,3];%绕轴
n = roundAxis./norm(roundAxis);%转为单位向量
v = [1,1,1];
p = [1 0 0];
q = [0 1 0];
r = [0 0 1];
roundAxis = [0 0 0;roundAxis];
plot3(roundAxis(:,1),roundAxis(:,2),roundAxis(:,3),"--");%绘制绕轴
hold on
plot3(v(:,1),v(:,2),v(:,3),"ro");%起始点
for angle = 0:10:360
%推导出来的旋转矩阵
F = @(p)( (p - (sum(p.*n)*n))*cosd(angle) + cross(n,p)*sind(angle) + sum(p.*n)*n );
pHat = F(p);%相当于分别对基向量进行变换
qHat = F(q);
rHat = F(r);
R = [pHat;qHat;rHat];
posTemp = v*R;
plot3(posTemp(1),posTemp(2),posTemp(3),"g.");
hold on
end
其结果如下:

运行结果

