一个是对向量的旋转,一个是对点的旋转
坐标和向量是有区别的:向量的第四维数值是0,坐标的第四维数值是1
向量 = 两个坐标的差值 第四维同样做减法,结果是0
向量的坐标变换用D3DXVec3TransformNormal,
点的变换用D3DXVec3TransformCoord。
D3DXVec3Transform和D3DXVec3TransformCoord相似,区别在于后者变换后将w投射回1
实际执行计算的时候是:
D3DXVec3TransformCoord
VOut.x = V1.x * M.11 + V1.y * M.21 + V1.z * M.31 + M.41
VOut.y = V1.x * M.12 + V1.y * M.22 + V1.z * M.32 + M.42
VOut.z = V1.x * M.13 + V1.y * M.23 + V1.z * M.33 + M.43
因为是向量,第四维不计算:
D3DXVec3TransformNormal
VOut.x = V1.x * M.11 + V1.y * M.21 + V1.z * M.31
VOut.y = V1.x * M.12 + V1.y * M.22 + V1.z * M.32
VOut.z = V1.x * M.13 + V1.y * M.23 + V1.z * M.33
本文探讨了向量与坐标之间的区别及它们在三维空间中的变换方式,详细介绍了使用D3DXVec3TransformNormal进行向量变换和D3DXVec3TransformCoord进行坐标变换的方法。

2028

被折叠的 条评论
为什么被折叠?



