得到的绘图结果如下图所示,坐标轴的原点位置永远固定在屏幕坐标的左下角为起点(50,50)处。同时根据鼠标的移动,坐标轴模型会在其原点上旋转。
1.固定点绘制:
思路:为了在屏幕固定位置画点P,我们可以先在空间坐标上某个位置绘制一点(这一点在投影到屏幕中的位置好确定),然后再移动到相应的位置p’,使得p’投影到屏幕时位置正好为p。
当空间投影面如上定义时,我采用的方法是:先在投影面的坐标原点o(0,0)处定义点p,这时点p映射到屏幕坐标时应显示在屏幕上的o点处。但真实的点应该定义在p’处。可见需要对其平移到p’处.那么就要计算平移距离transx,transy.
投影面的平移距离是可以根据屏幕的平移距离计算出来的。屏幕坐标o移动到p(50,50)处时,X向左平移w/2-50,Y向下平移h/2-50。由于投影面与屏幕是成比例的,一个像素对应的空间坐标长度就是20/h(或者( 宽比宽)20.0/h*w/w,他们是相同的)。因此像素移动的距离为(w/2-50,h/2-50),则坐标移动的距离为((w/2-50)*20/h,(h/2-50)*20/h).
2.坐标轴绕固定点旋转:
思路:简单的旋转变化,但是由于opengl的旋转变化都是相对原点的,所以产生旋转时,要先在原点位置处进行旋转操作,后才能进行平移操作。
代码:
#include <iostream>
using