在下列程序示例中,一个多边形绕指定的世界坐标系中的基准点旋转。旋转过程的输入参数是原始的多边形顶点、基准点坐标和用弧度表示的旋转角θ,多边形用OpenGL子程序重新生成。
class wcPt2D { public: GLfloat x, y; }; void rotatePolyon (wcPt2D * verts, GLint nVerts, wcPt2D pivPt, GLdouble theta) { wcPt2D * vertsRot; GLint k; for (k = 0; k < nVerts; k++){ vertsRot [k].x = pivPt.x + (verts [k].x - pivPt.x) * cos(theta) - (verts [k].y - pivPt.y) * sin(theta); vertsRot [k].y = pivPt.y + (verts [k].x - pivPt.x) * sin(theta) + (verts [k].y - pivPt.y) * cos(theta); } glBegin {GL_POLYGON}; for(k = 0; k < nVerts; k++) glVertex2f (vertsRot [k].x, vertsRot [k].y); glEnd(); }
新闻热点
疑难解答