忽然想到自己是做图形学相关的,但是每次求向量夹角或者是空间向量夹角每次还要查百度
- 向量夹角
不管对于二维向量还是三维向量都成立
cos(theat) = (AB)/(|A||B|) 点乘除以两个向量的模
但是上述计算结果是在0-PI之间的,为了求看是否在0~2PI之间。
a) 对于二维向量来讲,必须要做一次叉乘,判断叉乘结果是否大于0还是小于0,小于0就是在PI-2Pi之间,需要转换,都则就是在0-PI中间。
b) 对于三维向量来讲,就比较麻烦了,但是对于三位向量求夹角肯定是在当前平面上某个平面上或者是相对与转轴来讲实现的,此时可以投射到二维平面上,在平面上进行解决。 - 向量旋转
对于二维向量,其旋转矩阵为[cos(theat),sin(theat)] [-sin(theat),cos(theat)]
对于三维向量的旋转,由于他是绕着某一轴旋转的,所以要分别求三次旋转矩阵。
分别是绕X轴,绕y轴,绕Z轴旋转,
拿X轴举例
R(x) = [1,0,0][0,cos(theat),-sin(theat)] [0,sin(theat),cos(theat)]
R(y) = [cos(theat),0,sin(theat][0,1,0] [-sin(theta),0,cos(theat)]
R(x) = [cos(theat),-sin(theat),0][sin(theat),cos(theat),0] [0,0,1]
为什么这个时候的斜对角线与二维向量相反,应为此时表示的theat(x)的定义是roll角,定义就与右手法则相反。
若对点进行循环求旋转之后点的坐标则为P' = RP;
若对坐标系进行旋转则为RP' = P,要求原先点在新系下的坐标,则为P' = R'P = RT*P(旋转矩阵为正交矩阵,他的逆和他的转置相同)
若要旋转矩阵,这样想:若点跟着坐标系一起转,则在新系还是旧系下,当前点的坐标都没有变化,要将新系下当前点的坐标转到原系的位置,则左乘的旋转矩阵为原先的逆矩阵(反向转回去)。