三维坐标系:
向量的模:向量起点到终点的距离
FLOAT D3DXVec3Length( // Returns the magnitude.
CONST D3DXVECTOR3* pV // The vector to compute the length of.
);
向量标准化(规范化)将向量的长度缩放至1
D3DXVECTOR3 *D3DXVec3Normalize(
D3DXVECTOR3* pOut, // Result.
CONST D3DXVECTOR3* pV // The vector to normalize.
);
向量加减:
D3DXVECTOR3 u(2.0f, 0.0f, 1.0f);
D3DXVECTOR3 v(0.0f, -1.0f, 5.0f);
D3DXVECTOR3 sum = u + (-) v; // = (2.0f, -1.0f, 6.0f)
D3标量与向量的乘积:
D3DXVECTOR3 u(1.0f, 1.0f, -1.0f);
D3DXVECTOR3 scaledVec = u * 10.0f;
点积(结果为标量):
u · v =|u||v|cosθ
通过u*v的结果判断两向量的夹角,0垂直,<0大于90度,>0小于90度
float dot = D3DXVec3Dot( &u, &v );
叉积(结果是另一个向量):
长度为两向量的模乘以夹角的正弦值,在什么坐标系就用什么坐标系的定则去判断叉积的方向。
方向:按照第一个向量指向第二个向量
D3DXVec3Cross
矩阵乘法:
逆矩阵:
方阵才有逆矩阵,且不一定有
p’= pR 并且假设我们知道p’和R可以求p
D3DMatrixIverse
转置:
D3DMatrixTranspose
几何变换:
齐次坐标(用n+1维坐标去表示n维坐标):
3*3的变换矩阵具有一定的局限性,无法完成平移透视投影等基本的集合变换,因此需要将三维的点和向量的坐标扩展为4维的齐次坐标
点的齐次坐标:(x,y,z,1)
向量的齐次坐标:(x,y,z,0)w值为0可以保证向量不受平移变换的影响,这样对于同一个图形中的点和向量,无需对其进行区分,只需使用一个变换矩阵对其进行几何变换
平移变换矩阵:
D3DXMATRIX *D3DXMatrixTranslation(
D3DXMATRIX* pOut, // 返回平移后的矩阵.
FLOAT x, // x轴移动的单位
FLOAT y, // y轴移动的单位
FLOAT z // z轴移动的单位
);
缩放:
D3DXMATRIX *D3DXMatrixScaling(
D3DXMATRIX* pOut, // 返回缩放后的矩阵
FLOAT sx, // x轴缩放的比例
FLOAT sy, // y轴缩放的比例
FLOAT sz // z轴缩放的比例.
);
旋转:
D3DXMATRIX *D3DXMatrixRotationX(
D3DXMATRIX* pOut, // 返回旋转后的矩阵
FLOAT Angle // Angle是旋转的弧度
);
3D相关的简单数学知识
猜你喜欢
转载自blog.csdn.net/love_phoebe/article/details/101642300
今日推荐
周排行