• D3DXMatrixLookAtLH 【转】


    D3DXMATRIX *WINAPI D3DXMatrixLookAtLH(
      D3DXMATRIX *pOut,
        CONST D3DXVECTOR3 *pEye,
        CONST D3DXVECTOR3 *pAt,
        CONST D3DXVECTOR3 *pUp
    );
    这个函数用来控制摄影机,用来控制视图矩阵的。
    pEye眼睛的位置,观察的方向。
    pAt是摄影机的前进和后退,向左或向右。向上或向下。
    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 );

        D3DXMATRIX *pOut

    源:http://fandelion.blog.163.com/blog/static/17191332220114434328544/

  • 相关阅读:
    jquery sortable 在ie中拖动的后tabs不显示解决了
    光标是停在文本框文字的最后 ie
    PetShop安装
    Python小题目 针对快速教程
    vb升级到vb.net的一些文章(downmoon收集自msdn)
    [算法 笔记]大根堆
    [More Effective C++ 学习笔记]异常
    [More Effective C++ 学习笔记]效率
    [TCP IP详解:学习笔记]TCP定时器
    【Linux 编程】pthead_cond_t 的使用
  • 原文地址:https://www.cnblogs.com/emyueguang/p/2083142.html
Copyright © 2020-2023  润新知