3D相关的简单数学知识

三维坐标系:

 

 

向量的模:向量起点到终点的距离

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

 

矩阵乘法:

 

 

逆矩阵:

方阵才有逆矩阵,且不一定有

ppR 并且假设我们知道pR可以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是旋转的弧度

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值