在Single document的工程,如果用鼠标选取两个点,如何在实际的位置上,用OpenGL命令绘制出一条直线?主要是OnButttonDown中得到的CPoint的坐标应该如何处理?

解决方案 »

  1.   

    关键问题是要把鼠标点转换到三维空间,方法是用一根过鼠标点位置,垂直于屏幕的直线
    和一个目标平面求交。目标平面可以使用户选择的一个平面,也可以是过用户当前选择点,
    平行于屏幕的平面。============================================================================
    提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
    http://alphasun.betajin.com/   遇到问题可以给我发消息,给我发信息时请附带原帖地址
    DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
      

  2.   

    世界坐标系中的点,投影到camera的xy平面,裁剪面形成的矩形映射到窗口的句型。
    根据这个变换关系,你可以得到 鼠标点对应的 camera的xy平面上的点,然后你可以得到
    相应的世界坐标系中的点。
      

  3.   

    void CRenderView::OnSize(UINT nType, int cx, int cy) 
    {
    CView::OnSize(nType, cx, cy);

    // Set OpenGL perspective, viewport and mode
    cx = max(cx, cy);
    cy = max(cx, cy);
    CSize size(cx,cy);
    double aspect;
    aspect = (cy == 0) ? (double)size.cx : (double)size.cx/(double)size.cy;

           // 设置视口
    glViewport(0,0,size.cx,size.cy);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();     // 设置裁剪面
    gluPerspective(45,1,1,15.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glDrawBuffer(GL_BACK);
    glEnable(GL_DEPTH_TEST);
    }