/LGC图形渲染/图像处理系列之旋转
来源:互联网 发布:mysql免安装版配置教程 编辑:程序博客网 时间:2024/06/05 15:10
图像处理系列之旋转
作者: HouSisong
日期: 2009-08-14
本文介绍了图像旋转的原理和公式,并给出了公式的推导过程。
旋转原理和旋转公式
旋转示意图
如果果一个点(x,y)旋转到(x',y'),对应的角度旋转从b到(b+a),那么旋转公式为:
x' = x * cos(a) - y * sin(a);
y' = x * sin(a) + y * cos(a);
公式的推导过程如下所示:
有:
tg(b)=y/x ----(1)
tg(a+b)=y'/x' ----(2)
x*x + y*y = x'*x' + y'*y' ----(3)
有公式:
tg(a+b) = ( tg(a)+tg(b) ) / ( 1-tg(a)*tg(b) ) ----(4)
把(1)代入(4)从而消除参数b:
tg(a)+y/x = y'/x'*( 1-tg(a)*y/x ) ----(5)
由(5)可以得
x'=y'*(x-y*tg(a))/( x*tg(a)+y ) ----(6)
把(6)代入(3)从而消除参数x',化简后求得:
y'=x*sin(a)+y*cos(a); ----(7)
把(7)代入(6),有:
x'=x*cos(a)-y*sin(a); ----(8)
应用
假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转RotaryAngle角度后的新的坐标设为(x', y'),x平移rx0,y平移ry0,角度a对应-RotaryAngle , 带入方程(7)、(8)后,得到公式:
x'= (x - rx0)*cos(RotaryAngle) + (y - ry0)*sin(RotaryAngle) + rx0
y'= =-(x - rx0)*sin(RotaryAngle) + (y - ry0)*cos(RotaryAngle) + ry0
那么,根据新的坐标点求源坐标点的公式为:
x=(x'- rx0)*cos(RotaryAngle) - (y'- ry0)*sin(RotaryAngle) + rx0 ;
y=(x'- rx0)*sin(RotaryAngle) + (y'- ry0)*cos(RotaryAngle) + ry0 ;
旋转的时候还可以顺便加入x轴和y轴的缩放和平移,而不影响速度,那么完整的公式为:
x=(x'- move_x-rx0)/ZoomX*cos(RotaryAngle) - (y'- move_y-ry0)/ZoomY*sin(RotaryAngle) + rx0 ;
y=(x'- move_x-rx0)/ZoomX*sin(RotaryAngle) + (y'- move_y-ry0)/ZoomY*cos(RotaryAngle) + ry0 ;
其中:
- RotaryAngle为逆时针旋转的角度;
- ZoomX,ZoomY为x轴y轴的缩放系数(支持负的系数,相当于图像翻转);
- move_x,move_y为x轴y轴的平移量;
Reference
- 任意角度的高质量的快速的图像旋转(上篇)-- 纯软件的任意角度的快速旋转
- /LGC图形渲染/图像处理系列之旋转
- /LGC图形渲染/图像处理系列之扭曲(distort)
- /LGC图形渲染/图像处理之基本概念和思想
- /LGC图形渲染/OpenGL ES 系列教程
- /LGC图形渲染/彩色图像转换为灰度图像
- /LGC图形渲染
- /LGC图形渲染/COS426
- /LGC图形渲染/图形学系列 -- 粒子系统概述及其实现
- /LGC图形渲染/图形学系列 -- 图形学基本概念汇编
- /LGC图形渲染/图形学系列 -- 3D 图形学基础
- /LGC图形渲染/图形学系列 -- 关于计算机图形学的学习
- /LGC图形渲染/framebuffer 简介
- /LGC图形渲染/Android 图形系统剖析
- 图像处理16:图形旋转
- /LGC图形渲染/Graphics 文化系列 -- Loren Carpenter与分形山脉
- /LGC图形渲染/Graphics 文化系列 -- John Carmark 与 id software
- /LGC图形渲染/OpenGL ES 概述
- /LGC图形渲染/OpenGL 概念建立
- 系统分析UML札记
- Oracle数据库笔试总
- vma
- Tomcat+花生壳免费发布网站
- js实现动态增加表格行_jasonchi
- /LGC图形渲染/图像处理系列之旋转
- /LGC图形渲染/图像处理系列之扭曲(distort)
- 大小端机器的判断-引发的思考
- /LGC图形渲染/彩色图像转换为灰度图像
- 流行的Eclipse IDE的开源项目——商业智能和报表工具(BIRT)简介
- Python 性能 剖分 工具
- 指向常量的指针--来自《C++ primer》 第四版
- button按钮绑定快捷键
- /LGC图形渲染/常见颜色深度的 bitmap 之间的相互转换