WTommy的无悔青春 » 日志 » 向量的平移、放大、对称、旋转
向量的平移、放大、对称、旋转
星空夜话 发表于 2006-08-21 20:27:28
上次写过一个只是关于向量旋转的,研究过矩阵后才发现这些东西完全都是矩阵的效应,太神奇了..
下面我们定义四种操作:
分别把点(x0,y0)变为
-平移M(x,y): --> (x0+x , y0+y)
-放大Z(L): --> (Lx0 , Ly0)
-翻转F(0): --> (x0,-y0) (按OX轴), F(1): --> (-x0,y0) (按OY轴)
-旋转R(a): a为逆时针旋转的角度. (x0*cosa-x0*sina , y0*sina+y0*cosa)
先面我们用矩阵来解释上面的操作:
P = [x0]
[y0]
P' = Z * P; Z = [L 0]
[0 L]
P' = F * P; F = [1 0] 或者 F = [-1 0]
[0 -1] [0 1]
P' = R * P; R = [cosa -sina] 如果顺时针旋转,则取a = -a;
[sina cosa]
发现一个问题,上面并没有处理平移的操作M(x,y),那么我们又如何实现呢?
经过启发我们可以再增加一维来控制,把原来的P表示成:
p = [x0]
[y0]
[ 1]
则其他操作的矩阵可变为:
M = [1 0 x] Z = [L 0 0]
[0 1 y] [0 L 0]
[0 0 1] [0 0 1]
F = [1 0 0] 或者 [-1 0 0]
[0 -1 0] [ 0 1 0]
[0 0 1] [ 0 0 1]
R = [cosa -sina 0]
[sina cosa 0]
[ 0 0 1]
我们用P的前两维来表示变换后的坐标,结果发现这样的几种常见的向量符合操作就变成
了矩阵相乘的关系,但由于矩阵相乘不可逆,所以要注意乘法的顺序.
- » 对 称
- » 放大的自我
- » 旋转屏幕的代码
- » 别太当真
- » 那是谁始终的梦。晃荡着流光旋转。
最新评论
-
2006-08-21 23:38:59 http://blog.micy.cn
貌似在图形学里都讲过的说 我复习的时候看了一遍感觉很爽.. 虽然最好考试没考吧..
恩,好象讲过,当时的那个Octree也很有用。
今天这个是因为我看了一个题目有感才写的...利用了矩阵相乘而优化了!~ -
2008-01-03 10:31:19 匿名 210.72.*.*
旋转操作好像写错了
应该是
x0*cosa-Y0*sina , X0*sina+y0*cosa)
