逍遥.安——于安静和黑暗中寻找最亮丽的风景

只为追求从无知到有知的成功和喜悦

关于仿射变换

“仿射变换”是坐标点在保持共线(面)的前提下,空间中的相对距离发生变化。这就是说,坐标点的所属平面不发生变化,且原本平行的直线仍然平行,但坐标点与坐标点之间的距离可能发生与原来成比例的变化。“仿射变换”允许位移,缩放,倾斜和旋转。他不能做锥形或角度扭曲。

如下图:

 

 

 

“变换矩阵”是一个3X3的矩阵

 

 

 示例如下:

a - x scale(X轴缩放)

b - y skew(Y轴倾斜)

c - x skew(X轴倾斜)

d - y scale(Y轴缩放)

tx - x translation(X轴位移)

ty - y translation(Y轴位移)

 

u, v, w是常数分别为0, 0, 1,得到如下"变换矩阵":

 

 

"变换矩阵"的公式为(Matrix类中没有把u, v, w做为属性):

           x' = x*a + y*c + tx

           y' = x*b + y*d + ty

     x'和y'是x和y的最终位置。

 

默认矩阵:

 

x' = x*1 + y*0 + 0   y' = x*0 + y*1 + 0

结果是 x' = x y' = y

 

应用变换:

 

x' = 2*x + 0*y + 0 = 2x

y' = 0*x + 1*y + 0 = y

 

----------------------------------------------------------------------------------

 

x' = 1*x + 1*y + 0 = x + y

y' = 0*x + 1*y + 0 = y

 

----------------------------------------------------------------------------------

旋转的实现是用a, b, c, d四个值乘上相应的三角函数而成。

 

公式如下:

x' = cos(angle)*x - sin(angle)*y + 0

y' = sin(angle)*x + cos(angle)*y + 0

 

另外一个详细介绍

http://apps.hi.baidu.com/share/detail/56353162

阅读更多
文章标签: translation matrix c
个人分类: 数学基础
想对作者说点什么? 我来说一句

OpenGL 仿射变换Demo

2011年05月28日 19KB 下载

仿射变换源代码

2014年06月04日 25KB 下载

没有更多推荐了,返回首页

不良信息举报

关于仿射变换

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭