D3DXMatrixLookAtLH 函数

D3DXMatrixLookAtLH 函数
创建左手坐标系的观察矩阵。
定义:
D3DXMATRIX *WINAPI D3DXMatrixLookAtLH(      

    D3DXMATRIX *pOut,
    CONST D3DXVECTOR3 *pEye,
    CONST D3DXVECTOR3 *pAt,
    CONST D3DXVECTOR3 *pUp
);
参数:
pOut
[in, out] 指向 D3DXMATRIX 结构的返回结果的矩阵。
pEye
[in] 指向D3DXVECTOR3 结构的眼睛所有在位置向量。这个值会用来作平移。
pAt
[in] 指向 D3DXVECTOR3 结构的摄像机观察目标位置向量。
pUp
[in] 指向D3DXVECTOR3 结构的当前世界坐标系向上方向向量。通常用[0, 1, 0]向量。
返回值:
指向D3DXMATRIX 结构的左手坐标系观察矩阵。
 
说明:
返回值是跟参数pOut 返回值是一样的。通过这样方式,可以让D3DXMatrixLookAtLH 函数成为其它函数的参数。
这个函数用下面的公式来计算返回的矩阵:
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
 
 xaxis.x           yaxis.x           zaxis.x          0
 xaxis.y           yaxis.y           zaxis.y          0
 xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
函数信息:
Header
d3dx9math.h
Import library
d3dx9.lib
Minimum operating systems
Windows 98
相关函数:
D3DXMatrixLookAtRH
 
使用说明:
一台摄象机有以上画面中的一些属性:

   1 观察点:摄象机摆放的位置
   2 目标点:摄象机对着一个地方
   3 观察范围:圆锥形状投影范围的夹角大小,单位是弧度。
   4 可见的最近距离和最远距离:这两个距离中间的观察范围就是可见区域。
   5 纵横比:显示时候的宽和高比例,一般为 1
  明白了摄象机的原理后,我们来看 D3D 中是怎么设置它的,有两个矩阵是用来设置摄象机的,一个是观察矩阵,一个是射影矩阵,程序说明一切。
  首先是设置摄象机的观察矩阵:
    m_vEyePt = D3DXVECTOR3( 0.0f, 3.0f,-5.0f ); // 视点坐标
   m_vLookatPt = D3DXVECTOR3( 0.0f, 0.0f, 0.0f ); // 目标点坐标
   m_vUpVec = D3DXVECTOR3( 0.0f, 1.0f, 0.0f ); // 当前世界的向上方向,通常是 (0,1,0)
   // 根据上面给出的 3 个值建立一个基于左手坐标系的观察矩阵
   D3DXMatrixLookAtLH( &m_matView, &m_vEyePt, &m_vLookatPt, &m_vUpVec );
   // 设置该矩阵为 D3D 的当前观察矩阵
   pd3dDevice->SetTransform( D3DTS_VIEW, &m_matView );
 

你可能感兴趣的:(windows,header,UP,import,library,math.h)