请教,如何实现:摄像机围绕观察点(即游戏角色)绕任意轴旋转任意角度的算法?十分感谢了~!

解决方案 »

  1.   

    OPENGL?转换投影角度就可以了啊
      

  2.   


    感谢你的回答,是Direct3D,如果可以的话,给一个具体算法行不?
      

  3.   

    //旋转摄像机
    void CCamera::RotateCamera(float angle, float X, float Y, float Z)
    {
    float ca = (float)cos(angle);
    float sa = (float)sin(angle); //归一化
    CVector3 dir = m_view-m_pos;
    dir.Normal(); CVector3 dir2; //计算新的X坐标
    dir2.x = (ca + (1 -ca)*X)*dir.x;
    dir2.x += ((1 - ca)*X*Y - Z * sa)*dir.y;
    dir2.x += ((1 - ca)*X*Z + Y * sa)*dir.z; //计算新的Y坐标
    dir2.y = ((1 - ca)*X*Y + Z*sa)*dir.x;
    dir2.y += (ca + (1 - ca)*Y)*dir.y;
    dir2.y += ((1-ca)*Y*Z - X*sa)*dir.z; //计算新的Z坐标
    dir2.z = ((1 - ca)*X*Z - Y*sa)*dir.x;
    dir2.z += ((1 - ca)*Y*Z + X*sa)*dir.y;
    dir2.z += (ca + (1 - ca)*Z)*dir.z; m_view = m_pos +dir2;
    }上面是我写的旋转摄像机的函数(包括旋转角度,以及旋转轴)。但是摄像机是围绕摄像机的位置旋转。请问如何改为围绕观察点旋转??感谢各位了!~