这里实现的是多点画多边形,然后把这个多边形进行二维的变换。
首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数。其次,就是如何进行多边形的二维变换。在这里我有两种方法。第一种是直接根据数学三角等公式推断得到结果。第二种方法是用矩阵相乘的方法。
先讲第一种:
平移
假如我要平移a到b的位置:
那么操作就是:把这个多边形的n个顶点从一个位置移动到另外一个位置,然后重新生成平移后的多边形。(顶点知道了,那么就可以直接重新绘制多边形了)
大致代码就是:
Void translate2D(int x,int y){//x,y表示平移x、y的距离
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+(顶点