OpenGL中的glUnproject函数获得的三维坐标,其坐标原点是什么

jillll 2009-05-20 07:31:22
OpenGL中的glUnproject函数获得的三维坐标,这个三维坐标的坐标原点是什么。
比如画一个球,将鼠标点击在球面时的屏幕坐标用上面的函数转化为了实物三维坐标,这个坐标的原点是什么啊。
我真的不是不给分,而是尝试了以后,发现自己没分可给,很抱歉。。。但是还是请大家帮忙一下,我运行了程序之后,出来的三维坐标令自己很迷惑。请指点迷津。谢谢!^_^
...全文
620 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lufudan2010 2012-06-15
  • 打赏
  • 举报
回复
用这个方法怎么得的结果总是不变呢?
driverstudent 2009-05-22
  • 打赏
  • 举报
回复

MAMM
jillll 2009-05-22
  • 打赏
  • 举报
回复
55555....
jillll 2009-05-21
  • 打赏
  • 举报
回复
呼唤太平洋。。。上面那个程序是按照太平洋给出的程序做的。。。
jillll 2009-05-21
  • 打赏
  • 举报
回复
我的程序是这样的,鼠标右键按下时,将按下处的鼠标屏幕坐标变为三维实物坐标,其中已经对view matrix处理过了啊,不明白为什么之后还要再乘view matrix的逆,而且获得的三维坐标到底是以什么为原点坐标的啊,请各位好心人指教。谢谢 ^_^.真的很迷惑。。。。
void CRobotView::OnRButtonDown(UINT nFlags, CPoint point)
{
GLfloat pixels;
GLdouble ObjX,ObjY,ObjZ;
GLint ViewPort[4];
GLdouble ProjMatrix[16];
GLdouble ModelMatrix[16];

glGetIntegerv(GL_VIEWPORT,ViewPort);
glGetDoublev(GL_MODELVIEW_MATRIX,ModelMatrix);
glGetDoublev(GL_PROJECTION_MATRIX,ProjMatrix);
glReadPixels(point.x,ViewPort[3]-point.y,1,1,GL_DEPTH_COMPONENT,GL_FLOAT,&pixels);
gluUnProject((GLdouble)point.x,(GLdouble)(ViewPort[3]-point.y),(GLdouble)pixels,ModelMatrix,ProjMatrix,ViewPort,&ObjX,&ObjY,&ObjZ);

CCommandView *pView = (CCommandView *)GetCommandView();
pView->m_xcur = (GLfloat)ObjX;
pView->m_ycur = (GLfloat)ObjY;
pView->m_zcur = (GLfloat)ObjZ;
GetCommandView()->UpdateData(FALSE);

CView::OnRButtonDown(nFlags, point);
}
jillll 2009-05-20
  • 打赏
  • 举报
回复
请问View matrix是一个2乘2的矩阵,而得到的坐标是1乘3的,应该以什么方式相乘呢?谢谢你^_^
chiwa737 2009-05-20
  • 打赏
  • 举报
回复
unproject了以后, 再乘以 view matrix的逆,就是你原来最初始的坐标点了
jillll 2009-05-20
  • 打赏
  • 举报
回复
发现我是菜鸟。。。别人的贴都回不了。。都不会回答。。。5555
jillll 2009-05-20
  • 打赏
  • 举报
回复
我攒够了分一定会给的。。今天去努力回帖

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧