Direct 平移,旋转,缩放

本文详细介绍了三维空间中的平移、旋转及缩放变换方法,并提供了DirectX中的具体实现函数。包括如何利用矩阵进行变换操作,以及如何区分处理点与向量的不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)平移

我们能通过与下面的矩阵相乘把向量(x, y, z, 1)沿x轴移动px个单位,沿y轴移动py 个单位, 沿z 轴移动pz个单位。

只需要用位置向量(x, y, z, 1)和矩阵做乘法运算即可,对应的矩阵是:


DX中对应的平移函数是:

D3DXMatrix *D3DXMatrixTranslation(D3DXMatrix *pOut,FLOAT x,FLOAT y,FLOAT z);

(2) 旋转

我们能用下面的矩阵把一个向量围绕 x,y 和 z 轴旋转δ弧度。注意:当我们俯视绕轴原点时,角度是指顺时针方向的角度。

只需要用位置向量(x, y, z, 1)和矩阵做乘法运算即可,对应的矩阵是:




在DX中对应的旋转矩阵有:
D3DXMatrix   *D3DXMatrixRotationX(D3DXMatrix* pOut,FLOAT Angle);
D3DXMatrix   *D3DXMatrixRotationY(D3DXMatrix* pOut,FLOAT Angle);
D3DXMatrix   *D3DXMatrixRotationZ(D3DXMatrix* pOut,FLOAT Angle);

(3)缩放

缩放其实就是在对应的坐标上乘以一个系数,这样就可以实现相对差距离是原来的多少倍,我们能通过与下面的矩阵相乘把向量沿 x 轴缩放 qx 个单位,沿 y 轴缩放 q
y 个单位,沿 z 轴缩放qz 个单位。

对应的缩放矩阵如下:


D3DX中缩放矩阵函数为:

D3DXMatrix *D3DXMatrixScale(D3DXMatrix *pOut,FLOAT sx,FLOAT sy,FLOAT sz);

(4)DX 中点,向量跟矩阵相乘

(1)w=1表示点;w=0表示是向量。
(2)D3DXVec3TransfomCoord处理过程如下:
pOut.x = pv.x * pM._11 + pv.y * pM_21 + pv.z * pM_31 + pM_41;
pOut.y = pv.x * pM._12 + pv.y * pM_22 + pv.z * pM_32 + pM_42;
pOut.z = pv.x * pM._13 + pv.y * pM_23 + pv.z * pM_33 + pM_43;
w = 1
(3)D3DXVec3TransformNormal处理过程如下:
pOut.x = pv.x * pM._11 + pv.y * pM_21 + pv.z * pM_31;
pOut.y = pv.x * pM._12 + pv.y * pM_22 + pv.z * pM_32;
pOut.z = pv.x * pM._13 + pv.y * pM_23 + pv.z * pM_33;
w = 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值