二维旋转,多边形沿指定点旋转指定角度
//二维旋转,多边形沿指定点旋转指定角度
#include <iostream>
#include<gl\glut.h>
#define PI 3.1415926
#include<vector>
using namespace std;
class wcPt2D
{
public:
GLfloat x, y;//多边形顶点坐标
};
//旋转矩阵[cos(theta),-sin(theta);sin(theta),cos(theta)]两行两列
//输入:多边形顶点坐标,顶点个数,相对旋转点坐标,旋转角度
缺点,要输入多边形顶点数,需要每次修改有点麻烦
void rotatePolygon(wcPt2D*verts, GLint nVerts, wcPt2D pivPt, GLdouble theta)
{
wcPt2D vertsRot[3];//数组的大小要随着顶点个数改,就麻烦
GLint k;
glBegin(GL_POLYGON);
for (k = 0; k < nVerts; k++)
{
glVertex2f(verts[k].x, verts[k].y);//画出旋转前多边形
}
glEnd();
glFlush();
for (k = 0; k < nVerts; k++)
{
vertsRot[k].x = pivPt.x +