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

原创 2015年11月18日 13:28:53

         把每个顶点绕原点旋转,实现图形的旋转。这个问题就等价于,已知原坐标(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是多边形的边数。

                        


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

图像处理之图像快速旋转算法

基本思想: 旋转矩阵在旋转角度较小的情况下可以通过两次错切变化得到旋转效果的图片,在旋 转角度较大的情况下可以通过三次错切得到等价旋转效果图像(较小角度小于15度,较 大角度在90度之内),对于...

图像旋转以及C代码实现

图像旋转就是将图像按一定角度旋转,依据当前点坐标计算出来的旋转后的坐标往不是整数,因此需要进行插值。常用的插值方法有最近邻插值法、线性插值法和样条插值法(这个我也不懂)。最近邻插值速度快,效果差;双向...

【OpenCV】图像几何变换:旋转,缩放,斜切

几何变换 几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。 几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,...

计算机图形学(四)_几何变换_1_基本的二维几何变换(二)_旋转

类似于平移,旋转是一种不变形地移动对象的刚体变换,对象上的所有点旋转相同的角度。线段的旋转可以通过将旋转方程5用于每个线段端点,并重新绘制新端点间的线段而得到。多边形的旋转则是将每个顶点旋转指定的旋转...

计算机图形学之二维平移旋转缩放代码

以下均为MFC工程代码

计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等

接上文 计算机图形学 学习笔记(六):消隐算法:Z-buffer,区间扫描线,Warnock,光栅图形学小结在图形学中,有两大基本工具:向量分析,图形变换。本文将重点讲解向量和二维图形的变换。5.1 ...
  • Jurbo
  • Jurbo
  • 2017-07-12 18:59
  • 851
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)