向量:点乘,叉乘
//点乘:ab = axbx+ayby+azbz =|a| |b|cos(x),ab夹角:
//b在a上的投影:|b|cos(x) = (ab)/|a| = ba(A),//单位矢量a
应用:
a为平面法线,求b在平面上的投影
b在a向量上的投影向量为c = Vector.Dot(a,b)/a.magintude ()a.normalized
则b在平面上的投影为:b-c;
//点乘Vector3.Dot();v2在v1上投影的标量。V1( x1, y1) V2(x2, y2) = x1x2 + y1y2
//叉乘Vector3.Cross();v1v2平面的法线向量。V1(x1, y1) X V2(x2, y2) = x1y2 – y1x2
(右手顺时v1指向v2)。即叉乘的第一个向量在第二个向量右边时为正,否则为负。
A x B = |A||B|Sin(θ)
矩阵
矩阵相乘:A(rxc),B(cxn)矩阵只允许A的列数等于B的行数时两矩阵才能相乘得到r行n列的新矩阵
新矩阵C的i行j列元素等于A的i行与B的j列点乘
特殊矩阵
方块矩阵:行列数相同的矩阵
对角矩阵:除了对角元素m11,m22,m33等其他元素都为0的矩阵
单位矩阵:对角元素为1的矩阵{[1 0 0],[0 1 0],[0 0 1]}任何矩阵与其相乘还是原来的矩阵
转置矩阵: 对矩阵的一种运算,将元素的行变为列,列变为行
逆矩阵:原矩阵与其逆矩阵(纯在逆矩阵,元素都为0的矩阵不存在逆矩阵)相乘=单位矩阵
一个矩阵有对应的逆矩阵即是可逆的又称非奇异的 ,没有逆矩阵则是不可逆的,奇异的
正交矩阵:若矩阵与该矩阵的转置矩阵相乘得到单位矩阵,即该矩阵的转置正交也是该矩阵的逆矩阵
由上得出对于3x3的正交矩阵实际上即是三维空间坐标轴,若它们长度为1构成标准正交基则被称为标准正交矩阵
正交矩阵可用于构造变换矩阵,对应的逆变换(逆矩阵计算复杂)可直接由转置矩阵得到。
关于矢量变为行矩阵还是列矩阵:在U3D中将矢量放在矩阵右边进行相乘计算(当做列矩阵)。
变换
线性变换:那些可以保留矢量相加标量相乘的变换。包括缩放、旋转、正交投影等。
仿射变换:由于平移不是线性变换,因此仿射变换是合并线性变换和平移变换的变换类型。
仿射变换可以使用4x4的矩阵来表示-齐次坐标空间:三维转四维:对于点w=1;对于矢量w=0(当平移作用于矢量时不会产生影响)
复合变换:矢量转为列矩阵计算,顺序从右到左
绝大多数下先进行缩放,再旋转,最后平移
关于xyz轴的旋转顺序:U3D中的旋转顺序是z,x,y,但矩阵的计算顺序不需要从右到左(由于坐标系的旋转)
空间变换
模型空间->世界空间->观察空间->裁剪空间->屏幕空间NDC
M:m->w变换矩阵 平移旋转缩放(移动整个坐标系坐标系中的点也跟随移动)
V:w->v变换矩阵 根据参数对相机进行逆变换移动到世界原点(对z取反)
P:
透视投影,
正交投影。