图像的旋转

本文介绍了如何使用Win32API进行图像的旋转操作,详细阐述了从像素矩阵坐标到坐标系坐标的转换过程,以及如何围绕中心点进行逆时针旋转。在实践中,为避免图像旋转后超出原位图范围,新位图的尺寸被设置为原图宽高的和。尽管由于浮点数精度问题,旋转后的图像可能与原图存在细微差异,但通过代码实践,可以实现不同角度(如45度、90度、135度、180度)的图像旋转效果。
摘要由CSDN通过智能技术生成

图像的选旋转,按照指定中心点逆时针旋转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*
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值