OpenGL坐标系

openGL坐标系- -

                                      

openGL使用右手坐标

从左到右,x递增
从下到上,y递增
从远到近,z递增


OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。

世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。

当前绘图坐标系是 绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。当用glTranslatef(),glScalef(), glRotatef()对当前绘图坐标系进行平移、伸缩、旋转变换之后, 世界坐标系和当前绘图坐标系不再重合。改变以后,再用glVertex3f()等绘图函数绘图时,都是在当前绘图坐标系进行绘图,所有的函数参数也都是相 对当前绘图坐标系来讲的。

 

openGL坐标变换

                                      

坐标变换:OPENGL的每一种变换都是一个矩阵的运算。假设当前某顶点坐标为C,现在要做某种变换(设矩阵为M)得到新的坐标C1,那么运算过程就是C1=T×C。OpenGL应用左乘规则,坐标的变换就是用变换矩阵乘以坐标向量

OpenGL变换在编程的时候顺序是反过来的。想对目标 glutWireSphere(0.2, 10, 8);//draw earth 做R2,T,R1的变换,在写的时候就要:

         glRotatef(year, 0.0, 1.0,0.0);//旋转矩阵R1
         glTranslatef(2.0, 0.0, 0.0);//平移矩阵T
         glRotatef(day, 0.0, 1.0, 0.0);//旋转矩阵R2

         glutWireSphere(0.2, 10, 8);//draw earth


 

 三维观察原理类似于拍一张照片的过程。(类似于red book )

第一步是将照相机调整位置置于三角架上;
第二步是 将物体调整位置放在相机的视野当中。实际上,相机和三维物体是相对位置,相机移动位置也可以理解为物体反向移动位置,因此这两步可以理解为一步,即调整三 维物体和视点的位置,将世界坐标系下的物体变换到观察坐标系下。在计算机图形学中,定义模型矩阵(Modeling Matrix)实现了三维图形的几何变换,即平移、旋转和缩放。
第三步相机进行调焦以便看清楚物体,并按下快门将三维物体投影在二维胶片上;在计算机图形学中,定义相应的投影矩阵(ProjectionMatrix),进行投影变换,把三维物体从观察坐标系转换到投影坐标系中。
第四步是胶片的冲洗和裁剪。相应计算机图形学中,定义视口矩阵(ViewingMatrix),进行视口变换和裁剪,决定二维图象的大小。将物体从二维投影坐标系下转换到设备坐标系下。
这样,一个三维空间里的物体被投影到二维平面上了,也就能在二维的计算机屏幕上正确显示了。

屏幕坐标点 = 3D 模型点 * 几何变换栈矩阵(n...1) * 投影变换栈矩阵(n...1)
OpenGL 维护两个栈: 投影变换栈, 几何变换栈。
投影:glOrtho,gluPerspective--------------------glMatrixMOde(GL_PROJECTION);
几何变换:glTranslatef,glRotatef,glScalef--------glMatrixMOde(GL_MODELVIEW);

  http://my.sdlgame.com/content/view/336/6.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值