空间坐标和屏幕坐标相互换

    技术2022-05-20  33

    d3d中操作

    可以用D3DXVec3Project从3D坐标转换到屏幕坐标 同时可以用D3DXVec3UnProject将屏幕坐标转换成3D坐标!

     

    gl里的操作

    CPoint D3DToScreen2D(CPoint3d pt3D ,/     const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4]){ GLdouble x,y,z;

     gluProject( pt3D.x, pt3D.y, pt3D.z,   modelMatrix, projMatrix, viewport,   &x, &y, &z); CPoint ptOut; ptOut.x = int(x); ptOut.y = viewport[3]-int(y);

     return ptOut;}

    应用:

    CPoint CCityPlanView::GetPoint3DTo2D(CPoint3d pt3D){ GLdouble    modelview[16]; GLdouble    projection[16]; GLint       viewport[4]; wglMakeCurrent(m_hDC,m_hRC); glGetDoublev (GL_MODELVIEW_MATRIX, modelview); glGetDoublev (GL_PROJECTION_MATRIX, projection); glGetIntegerv (GL_VIEWPORT, viewport);

     CPoint ptOut = D3DToScreen2D(pt3D,modelview,projection,viewport);

     wglMakeCurrent(m_hDC,NULL); return ptOut;}

     

    本文来自博客,转载请标明出处:http://blog.csdn.net/qianlima888/archive/2007/10/24/1840984.aspx


    最新回复(0)