关闭

如何编程实现二维图形的旋转

标签: c++游戏编程图形
255人阅读 评论(0) 收藏 举报
分类:

         把每个顶点绕原点旋转,实现图形的旋转。这个问题就等价于,已知原坐标(x,y)和旋转角度B,求旋转过后的的坐标(x1,y1);下面推导一下,

设顶点到原点距离为r,对应矢量与x轴夹角A,则:

                    x=r cosA,

                    y=rsinA,

                    x1=rcos(A+B)=rcosAcosB-rsinAsinB,

                   y1=rsin(A+B)=rsinAcosB+rcosAsinB;

           再把x,y与对应的值替换掉,可得:

                   x1=xcosB-ysinB,

                   y1=xsinB+ycosB.

           只要把每个顶点都旋转,就可以得到最终的图形。

           c++代码:

int Rotate_poly(POLYGON2D_PTR  poly,int ang){
	
	for(int curr_vert=0;curr_vert<poly->num_verts ;curr_vert++){
	float xr=(float)poly->vlist [curr_vert].x*cos_look[ang]-(float)poly->vlist[curr_vert].y*sin_look[ang];
	float yr=(float)poly->vlist [curr_vert].x*sin_look[ang]+(float)poly->vlist[curr_vert].y*cos_look[ang];
	poly->vlist [curr_vert].x =xr;
	poly->vlist [curr_vert].y =yr;
	}

return 1;


}
           其中,poly是多边形,vlist指向顶点,num_verts是多边形的边数。

                        


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1029次
    • 积分:58
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档