数学几何知识01——向量叉乘
首先说一说向量点乘,向量a=(x1,y1)和向量b=(x2,y2)
设a和b所在坐标系是正交的,坐标系向量为(i, j)
a•b= x1*x2+y1*y2+ 2*(x1y2+x2y1)*(i•j)
由于向量(i)和(j)相互垂直,所以(i•j) = 0;
故a•b = x1*x2+y1*y2;
同理,在空间坐标系下,向量a=(x1, y1, z1) 和向量b=(x2, y2, z2);
a•b = x1*x2+y1*y2+z1*z2;
用矩阵计算,可以这样表示
然后再说一说向量叉乘,在空间中,两个(不平行)的向量决定了一个平面
两向量叉乘,得到的是一个向量,而这个向量就是这个平面的(一个)法向量,(即垂直于这个平面)
设这两个向量为a=(x1, y1, z1)和b=(x2, y2, z2);
通过矩阵可以求得两向量的向量积
该向量设为c=(y1*z2-y2*z1, x2*z1-x1*z2, x1*y2-x2*y1);
向量c点乘向量a和向量b都为0
用矩阵来计算,aXb可以表示为
我们只需要反过来求得前面的矩阵就可以了,这个很简单
好,求出前面的矩阵之后,我们以后就可以使用矩阵来表示叉乘了
aXb = (aX)•(b),
而(aX)就是这个3x3的反对称矩阵。
数学几何知识02——旋转轴、旋转角度和旋转矩阵
旋转角度
已知两向量a=(x1,y1,z1)和b=(x2,y2,z2),
两向量的旋转角度,可以通过点乘获得
a•b=|a|*|b|*cosθ
通过cosθ反转可求得旋转角度
旋转轴
两个(不平行)的向量,决定一个平面,
而平面内任意向量,都可以通过旋转角度θ获得,所以,该平面的法向量一定是旋转轴(旋转轴不一定是该平面的法向量)
而法向量可以通过两向量的叉乘得到。
旋转矩阵
(旋转矩阵)是基于(旋转轴)和(旋转角度)推导出来的
具体推导公式,可参考以下网址
https://blog.csdn.net/KYJL888/article/details/91432684
推导出来的(旋转矩阵)为
公式说明
假设(旋转轴)的向量n=(nx, ny, nz);
I是单位矩阵,A是向量n的反对称矩阵,即
而θ旋转角度
最后求出的旋转矩阵如下
通过旋转矩阵可以求出(向量a)绕(旋转轴)旋转(角度θ)得到的(向量b)
设3X3的(旋转矩阵)为R
v' = Rv
除此之外,在后面会遇到一种特殊的情况,(摄像机的移动)
已知(旋转轴向量n),已知(需要旋转的向量a),已知(需要旋转的向量a,逆时针旋转90度得到的向量b)
而且(向量n)是,(向量a)和(向量b),所在平面的法向量
通过旋转矩阵,我们可以得到
化简整合有
当(向量n)是法向量的时候,我们可以清楚地看见
所以
把vx2代入公式,有
同理,把新得到的向量,逆时针旋转90度,可以获得,向量b旋转同样角度后,得到的新向量
由x坐标变化,我们可以轻易获得向量变化之后的,y坐标 和 z坐标
数学几何知识03——坐标系变换
1. 坐标系旋转
首先定义一个向量,该向量由(i, j, k)坐标系和(u,v,n)坐标系表示
这里说明了(u,v,n)和(i, j, k)的向量关系。
代入变量,替换,得到坐标之间的关系,并列出矩阵
经过计算可得到,坐标系的旋转矩阵R
2.坐标系平移
坐标系旋转之后,只要把坐标系平移,(即平移坐标中心)
需要平移的点的向量w,需要平移距离的向量eye,平移结束后,坐标原点到该点的向量newW,的关系如下
列出平移矩阵T
3.坐标系变换
现在可以把旋转和平移结合在一起,坐标系变换矩阵如下
学会了坐标系的变换,向量的旋转,我们就可以做出360度旋转的摄像机了.