温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • OpenGL画图的时候免不了需要知道自己建立的opengl坐标的x,y,z轴的极值

OpenGL画图的时候免不了需要知道自己建立的opengl坐标的x,y,z轴的极值

发布时间:2020-07-13 01:47:40 来源:网络 阅读:586 作者:WZM3558862 栏目:开发技术

在我们用OpenGL画图的时候免不了需要知道自己建立的opengl坐标的x,y,z轴的极值(也就是最大表示范围)。那么该如何来测试,下面一起来看看:

首先,你需要知道自己是按照什么视角来建立的坐标系,我的是按照NeHe的那本书来的:


[cpp] view plain copy

  1. void GLWidget::resizeGL(int width, int height)  

  2. {  

  3.     if(0 == height)  

  4.         height = 1;//To prevent a side is 0  

  5.   

  6.     glViewport(0, 0, (GLint)width, (GLint)height);//reset current window  

  7.   

  8.     glMatrixMode(GL_PROJECTION);  

  9.     glLoadIdentity();  

  10.   

  11.     if (width >= height)  

  12.         gluPerspective(45.0, (GLdouble)width / (GLdouble)height, 0.1, 100.0);  

  13.     else  

  14.         gluPerspective(45.0, (GLdouble)height / (GLdouble)width, 0.1, 100.0);  

  15.   

  16.     glMatrixMode(GL_MODELVIEW);  

  17.     glLoadIdentity();  

  18. }  


(1)视角确定:


关键就是这句话:gluPerspective(45.0, (GLdouble)height / (GLdouble)width, 0.1, 100.0);

表示视角是45度,z轴距离你的眼睛是从0.1倍到100倍,这两个参数有什么呢?说白了,它规定了你可以放大缩小的范围,比如,你将100改成50,那么你最多只能缩小到50倍,而0.1那里的参数是不能设置成负数的,只能是正数,那么,这里就设置了0.1,来尽量的跟人眼距离近点。

(2)z轴偏移量的初始值:(我测试的我的x轴最大为1的时候,z轴偏移量设置为-1.8正好)

[cpp] view plain copy

  1. Scalez = -1.8f; //too small change to 0.1f, and -1.8f represents zero point(that mains  

  2.                    //the value is equal to normal view)  


Scalez表示我的z轴偏移量。


(3)具体测试:

首先,在你的画图函数中先画一个(-1.0f, 0.0f, 0.0f)到(1.0f, 0.0f, 0.0f)的直线,用这条直线来测试你的z轴偏移量为多少合适。

然后,在初始化函数中将你的z轴偏移量变量设为-0.1看看(即距离你人眼最近的那个点),Scalez为-0.1。如果直线横穿屏幕,那么,减少Scanlez的值,一般可以以每次0.2的比例进行减少,一直到你可以完整的看到一条直线,而且还未到边境。例如,我的:(此时,我的Scalez是-2.0f)

OpenGL画图的时候免不了需要知道自己建立的opengl坐标的x,y,z轴的极值

此时,可以将你的Scalez值增加0.2(那么,此时我的Scalez为-1.8),如果看到横穿了屏幕,那么此前的值就是当你需要横轴范围是(-1,1)时,Scanlez(纵轴偏移量)的值。这个时候我就知道了,我的纵轴偏移量应该设为-1.8f,我的横轴,纵轴才刚好合适。



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI