zoukankan      html  css  js  c++  java
  • 【转载】D3DXVec3TransformNormal and D3DXVec3TransformCoord

    原文:D3DXVec3TransformNormal and D3DXVec3TransformCoord

    D3DXVec3TransformCoord 对向量进行变换,没啥好说明的,默认向量为行向量,矩阵为列矩阵。
    D3DXVec3TransformNormal 这个家伙对法线进行变换,其实就是对于方向性的向量进行变换,在计算中经常用来变换方向,“D3DXVec3TransformNormal transforms a normal using the transpose of the inverse of the given matrix”,他对向量进行变换时,会使用您提供的参数矩阵,先进行逆矩阵计算,再进行转置,然后变换向量,结果就是你想要的。

    坐标和向量是有区别的:向量的第四维数值是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

    D3DXVec3TransformCoord 函数


    用矩阵变换3-D向量,并且用w = 1投影结果。

    定义:

    D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(      

        D3DXVECTOR3 *pOut,

        CONST D3DXVECTOR3 *pV,

        CONST D3DXMATRIX *pM

    );

    Parameters

    pOut

    [in, out] 指向 D3DXVECTOR3 结构的操作结果。

    pV

    [in] 指向 D3DXVECTOR3 结构的向量。

    pM

    [in] 指向 D3DXMATRIX 结构的变换矩阵。

    Return Value

    指向 D3DXVECTOR3 结构的变换后的向量。

    说明:

    这个函数用矩阵pM变换3-D向量pV (x, y, z, 1),并且用w = 1投影结果。

    函数返回值跟pOut 参数返回值是一样的。这样可以让函数D3DXVec3TransformCoord作为其它函数的参数使用。

    函数信息:

    Header

    d3dx9math.h

    Import library

    d3dx9.lib

    Minimum operating systems

    Windows 98

     

     

     

    函数相关:

    D3DXVec3Transform, D3DXVec3TransformNormal

  • 相关阅读:
    CF1324F Maximum White Subtree——换根dp
    bzoj3029 守卫者的挑战
    k8s-pod
    k8s 介绍
    docker-dockerfile
    docker学习
    git
    windows 上git安装及gitlab 连接
    gitlab 配置管理
    gitlab安装/配置/维护
  • 原文地址:https://www.cnblogs.com/zhehan54/p/5559691.html
Copyright © 2011-2022 走看看