gluunproject-关于gluUnProject的问题

问题描述

关于gluUnProject的问题

大家好, 本人想通过gluUnProject将屏幕2维点坐标转换为3维点坐标, 但发现了问题, 为简化问题描述, 我将调试值写成了下面的程序内容:

GLdouble modelMatrix[16];
GLdouble projMatrix[16];
GLint viewport[4];
double Xwin, Ywin, Zwin; //窗口2D坐标
double Xobj, Yobj, Zobj; //模型3D坐标
//
modelMatrix[0] = 0.00000000000000000 ;
modelMatrix[1] = 0.00000000000000000 ;
modelMatrix[2] = 1.9447331428527832 ;
modelMatrix[3] = 0.00000000000000000 ;
modelMatrix[4] = 1.9447331428527832 ;
modelMatrix[5] = 0.00000000000000000 ;
modelMatrix[6] = 0.00000000000000000 ;
modelMatrix[7] = 0.00000000000000000 ;
modelMatrix[8] = 0.00000000000000000 ;
modelMatrix[9] = 1.9447331428527832 ;
modelMatrix[10] = 0.00000000000000000 ;
modelMatrix[11] = 0.00000000000000000 ;
modelMatrix[12] = 0.00000000000000000 ;
modelMatrix[13] = 1.1748198747651376e-015 ;
modelMatrix[14] = -119.18627166748047 ;
modelMatrix[15] = 1.0000000000000000 ;
//
projMatrix[0] = 0.010926948860287666 ;
projMatrix[1] = 0.00000000000000000 ;
projMatrix[2] = 0.00000000000000000 ;
projMatrix[3] = 0.00000000000000000 ;
projMatrix[4] = 0.00000000000000000 ;
projMatrix[5] = 0.016666667535901070 ;
projMatrix[6] = 0.00000000000000000 ;
projMatrix[7] = 0.00000000000000000 ;
projMatrix[8] = 0.00000000000000000 ;
projMatrix[9] = 0.00000000000000000 ;
projMatrix[10] = -0.0020000000949949026;
projMatrix[11] = 0.00000000000000000 ;
projMatrix[12] = 0.00000000000000000 ;
projMatrix[13] = 0.00000000000000000 ;
projMatrix[14] = -1.0000000000000000 ;
projMatrix[15] = 1.0000000000000000 ;
//
viewport[0] = 0 ;
viewport[1] = 0 ;
viewport[2] = 543;
viewport[3] = 356;
//屏幕二维坐标
Xwin = 146.0;
Ywin = 36.0;
Zwin = 0.0;
//
gluUnProject(Xwin, Ywin, Zwin,modelMatrix,projMatrix,viewport, &Xobj, &Yobj, &Zobj);
CString str;
str.Format(_T("%.2lf, %.2lf, %.2lf"),Xobj,Yobj,Zobj);
AfxMessageBox(str);

//修改modelMatrix[13] 的内容后, Xobj的结果发生了巨大变化
modelMatrix[13] = 0.00000000000000000 ;

gluUnProject(Xwin, Ywin, Zwin,modelMatrix,projMatrix,viewport, &Xobj, &Yobj, &Zobj);
//CString str;
str.Format(_T("%.2lf, %.2lf, %.2lf"),Xobj,Yobj,Zobj);
AfxMessageBox(str);

运行以上程序段发现, 当将modelMatrix[13]的值从 1.1748198747651376e-015 修改为 0.00000000000000000时,
坐标(Xobj,Yobj,Zobj)的值从(1311,-22, -25)变成了(61,-22,-25), 为什么Xobj的变化如此之大呢,本人程序是在图形中输入文本,该错误导致文本位置发生了很大的变化,请求您的帮助.

时间: 2024-07-30 15:17:25

gluunproject-关于gluUnProject的问题的相关文章

opengl-关于gluUnProject的问题

问题描述 关于gluUnProject的问题 本人想通过gluUnProject将屏幕2维点坐标转换为3维点坐标, 但发现了问题, 为简化问题描述,将调试值写成了如下程序内容: GLdouble modelMatrix[16]; GLdouble projMatrix[16]; GLint viewport[4]; double Xwin, Ywin, Zwin; //窗口2D坐标 double Xobj, Yobj, Zobj; //模型3D坐标 // modelMatrix[0] = 0.0

OpenGL开发库的介绍[转载]

开发基于 OpenGL 的应用程序,必须先了解 OpenGL 的库函数.它采用 C 语言风格,提供大量的函数来进行图形的处理和显示. OpenGL 库函数的命名方式非常有规律.所有 OpenGL 函数采用了以下格式:  < 库前缀 >< 根命令 >< 可选的参数个数 >< 可选的参数类型 >  库前缀有 gl . glu . aux . glut . wgl . glx . agl 等等,分别表示该函数属于 OpenGL 那个开发库,从函数名后面中还可以看出

google earth-opengl屏幕坐标转世界坐标的问题

问题描述 opengl屏幕坐标转世界坐标的问题 我正在试图用opengl实现一个类似google earth那样的功能: 1),相机永远面向地球的球心 2),鼠标定点拖动旋转,也就是鼠标按住地球上一个点移动的时候,这个点就跟随鼠标的位置运动,鼠标动了多长,相机就旋转多长,一开始按住的那个点一直处于鼠标的位置,而不要跑开了 现在我已经实现了基本的旋转部分,拖动鼠标相机就转动,但没有定点转动,现在就剩下定点拖动旋转这个功能了,我的思路是将鼠标点击屏幕的屏幕坐标转换成opengl的世界坐标,通过这个点

modelview matrix-glGetFloatv不能查询到modelview 矩阵。

问题描述 glGetFloatv不能查询到modelview 矩阵. 这个bug困扰我很久. 我用基于glkit编程,pan手势识别之后程序需要讲对应的顶点坐标计算出来.. 手势这边的代码是这样的: if ([gestureRecognizer state] == UIGestureRecognizerStateChanged) { NSLog(@"pan2"); CGPoint location = [gestureRecognizer locationOfTouch:0 inVie

OpenGL 问答之 4 GLU

OpenGL 问答之 4 GLU 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. OpenGL FAQ / 4 GLU 4.010 什么是GLU?它与 OpenGL有什么不同?        

OpenGL ES 在 Android 中对 GLU 的原生支持

OpenGL ES 在 Android 中对 GLU 的原生支持 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 注: 我总是喜欢多了解些语言,比如英文.法文.俄语.德文.日文.韩文.藏语.蒙古

我的opengl编程学习(一)(简介、绘制图像、三维观察、光照)

这是我第二次学习OPENGL,第一次学习是在大二的计算机图形学课堂上,那是对opengl只是走马观花,现在过了两年,我打算把opengl进行新一编完整而系统的学习,有三个目的:1.熟练掌握opengl编程,2从opegl的体系中加深对计算机图形渲染管线的整个体系的了解,作为深入学习GPU编程的进阶,3.制作好看的CG作品. 这里是我在学习<opengl programming guide fifth edition>过程的从头到尾的整个的学习笔记,放在这里,给自己做个以后的参考,也想与大家交流