二维图形学的变换-平移、旋转、缩放 OpenGL

这里实现的是多点画多边形,然后把这个多边形进行二维的变换。

首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数。其次,就是如何进行多边形的二维变换。在这里我有两种方法。第一种是直接根据数学三角等公式推断得到结果。第二种方法是用矩阵相乘的方法。

先讲第一种

平移

假如我要平移a到b的位置:


那么操作就是:把这个多边形的n个顶点从一个位置移动到另外一个位置,然后重新生成平移后的多边形。(顶点知道了,那么就可以直接重新绘制多边形了)

大致代码就是:

         Void translate2D(int x,int y){//x,y表示平移xy的距离

                   For(int i=0;i<n;i++){

                            顶点[i].x=顶点[i].x+x;

                            顶点[i].y=顶点[i].y+y;

}

                   DrawPolygon();//这里表示重新绘制多边形

                  

}

 

旋转(可以绕任意中心点旋转)

 

旋转原理:我们可以通过应用标准的三角等式得到旋转后的坐标。


根据上图,利用三角形的数学公式可以直接得出旋转后的公式


伪代码如下:

 

Void rotate2D(int x,int y,double theta){//x,y为旋转的中心,theta为旋转的角度

         For(inti=0;i<n;i++){

                   顶点[i].x=x+(顶点

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值