码迷,mamicode.com
首页 > 其他好文 > 详细

求特定几何变换

时间:2015-08-12 19:25:00      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:几何变换   正交矩阵   旋转   反射   齐次坐标   

问题

如何求一个三维的正交变换,它把已知向量 (a,b,c)T (a2+b2+c2=1) 变换为 (0,0,1)T
技术分享

解答

这样的正交变换不是唯一的。因为有太多种可能。
我比较感兴趣的是两种:旋转反射

反射

垂直于 OAZ 所在平面,并且等分AOZ的平面作为镜面时的反射满足条件。

首先确定这个平面。令为π:px+qy+rz+d=0 记作 (p,q,r,d)T

不失一般性,不妨假设 p2+q2+r2=1; 因为经过 O:(0,0,0) 点,所以 d=0。即: π=(p,q,r,0)T

另外容易知道: AZ 的中点,以及向量 (0,0,1)(a,b,c) 的叉积也在平面上,从而可以用 a,b,c 表示出平面。

(p,q,r,0)T=1(c?a2+b2+c2??????????)2+a2+b2?????????????????????????(a,b,c?a2+b2+c2??????????,0)T

此时可以从Householder矩阵写出4×4齐次反射矩阵,其前3×3主子矩阵是所要的反射:

????????????1?a2a2+b2+c2?ca2+b2+c2???????????aba2+b2+c2?ca2+b2+c2??????????aa2+b2+c2???????????aba2+b2+c2?ca2+b2+c2??????????1?b2a2+b2+c2?ca2+b2+c2??????????ba2+b2+c2??????????aa2+b2+c2??????????ba2+b2+c2??????????ca2+b2+c2??????????????????????

旋转

如果是旋转,它就是,以两个向量 (0,0,1)(a,b,c) 的叉积向量为旋转轴向量的旋转矩阵,旋转角是二者的夹角。然后,直接利用这里的公式即可。应该注意的是,旋转轴向量的符号与旋转角的符号应该匹配,所以,需要验算。

1(a2+b2)a2+b2+c2??????????????????a2c+b2a2+b2+c2??????????ab(c?a2+b2+c2??????????)a(a2+b2)ab(c?a2+b2+c2??????????)a2a2+b2+c2??????????+b2cb(a2+b2)?a(a2+b2)?b(a2+b2)(a2+b2)c????????

小结

不论是反射平面经过原点的任意三维反射,还是旋转轴经过原点的任意三维旋转,都是正交矩阵。都可以先求齐次坐标下的一般 4×4 的齐次变换矩阵形式之后,直接截取其前 3×3 主子矩阵而得到欧氏坐标下的对应几何变换矩阵。

版权声明:stereohomology原创本文于CSDN博客

求特定几何变换

标签:几何变换   正交矩阵   旋转   反射   齐次坐标   

原文地址:http://blog.csdn.net/stereohomology/article/details/47448759

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!