图像的选旋转,按照指定中心点逆时针旋转b角度,这个稍微有点麻烦
具体实现起来相比较而言有一点麻烦,不着急,一步一步来,首先需要将像素矩阵中第i行j列元素坐标(i,j)转化为坐标系坐标(x0,y0)
同理坐标系坐标转化为i,j坐标,可以定义两个函数来转换
//可以自己定义一个坐标结构体变量
# define PI 3.1415926//近似π
typedef struct _coor
{
float x;
float y;
}coor;
coor ijToxy(float i, float j,int w,int h)
{
coor c;
c.x = -0.5*w + i;
c.y = 0.5*h - j;
return c;
}
coor xyToij(float x, float y,int w,int h)
{
coor c;
c.x = 0.5*w + x;
c.y = 0.5*h - y;
return c;
}
有了(x0,y0),绕中心逆时针旋转,那么得到的新坐标(x1,y1)就容易了
float r = sqrt(x0*x0 + y0*y0);
/*
x0=r*cos(a),y0=r*sin(a)
旋转b角度
x1=r*cos(a+b)=r*(cos(a)cos(b)-sin(a)sin(b))
=r*