D3DXPlaneTransformArray 函数

D3DXPlaneTransformArray 函数


用变换矩阵变换一系列平面。每个平面都要规格化。

定义:

D3DXPLANE *WINAPI D3DXPlaneTransformArray(      

    D3DXPLANE *pOut,
    UINT OutStride,
    CONST D3DXPLANE* pP,
    UINT PStride,
    CONST D3DXMATRIX* pM,
    UINT n
);

参数:

pOut

[in, out] 指向 D3DXPLANE 结构的变换后的平面方程数组。

OutStride

[out] 每个变换后的平面结构大小。

pP

[in] 指向D3DXPLANE 结构的变换前的平面方程组。系数 (a,b,c)定义方程,每个平面需要规格化。

PStride

[in] 每个变换前的平面结构大小。

pM

[in] 指向 D3DXMATRIX 结构矩阵,它是变换矩阵的逆矩阵的转置矩阵。

n

[in] 变换平面的个数。

返回值:

指向 D3DXPLANE 结构的平面数组。

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

 

例:

下面的例子是非等比例的缩放的例子:

#define ARRAYSIZE 4
   
   
D3DXPLANE planeNew[ARRAYSIZE];
   
   
D3DXPLANE plane[ARRAYSIZE];
   
   

  
  
   
    
  
  
for(int i = 0; i < ARRAYSIZE; i++)
   
   
{
   
   
       plane = D3DXPLANE( 0.0f, 1.0f, 1.0f, 0.0f );
   
   
       D3DXPlaneNormalize( &plane[i], &plane[i] );
   
   
}
   
   

  
  
   
    
  
  
D3DXMATRIX  matrix;
   
   
D3DXMatrixScaling( &matrix, 1.0f, 2.0f, 3.0f ); 
   
   
D3DXMatrixInverse( &matrix, NULL, &matrix );
   
   
D3DXMatrixTranspose( &matrix, &matrix );
   
   
D3DXPlaneTransformArray( &planeNew, sizeof (D3DXPLANE), &plane, 
   
   
                         sizeof (D3DXPLANE), &matrix, ARRAYSIZE );
   
   

  
  
   
    
  
  
#define ARRAYSIZE 4
   
   
D3DXPLANE planeNew[ARRAYSIZE];
   
   
D3DXPLANE plane[ARRAYSIZE];
   
   

  
  
   
    
  
  
for(int i = 0; i < ARRAYSIZE; i++)
   
   
{
   
   
  plane = D3DXPLANE( 0.0f, 1.0f, 1.0f, 0.0f );
   
   
  D3DXPlaneNormalize( &plane[i], &plane[i] );
   
   
}
   
   

  
  
   
    
  
  
D3DXMATRIX  matrix;
   
   
D3DXMatrixScaling( &matrix, 1.0f, 2.0f, 3.0f ); 
   
   
D3DXMatrixInverse( &matrix, NULL, &matrix );
   
   
D3DXMatrixTranspose( &matrix, &matrix );
   
   
D3DXPlaneTransformArray( &planeNew, sizeof (D3DXPLANE), &plane, 
   
   
                         sizeof (D3DXPLANE), &matrix, ARRAYSIZE );
   
   

所有平面都是像 ax + by + cz + dw = 0方程定义。第一个平面是方程系数 (a,b,c,d) = (0,1,1,0),所以平面方程就是y + z = 0。缩放后,平面方程系数就变成(a,b,c,d) = (0, 0.353f, 0.235f, 0),那么平面方程就是0.353y + 0.235z = 0。

参数pM 是一个变换矩阵的逆矩阵的转置矩阵。

函数信息:

Header

d3dx9math.h

Import library

d3dx9.lib

Minimum operating systems

Windows 98

相关函数:

D3DXPlaneNormalize, D3DXMatrixRotationX, D3DXMatrixRotationY, D3DXMatrixRotationZ, D3DXMatrixInverse, D3DXMatrixTranspose



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值