我们知道2维的旋转变换公式为
Q = ( cos ( θ ) sin ( θ ) − sin ( θ ) cos ( θ ) ) Q=\left( \begin{matrix} \cos \left( \theta \right)& \sin \left( \theta \right)\\ -\sin \left( \theta \right)& \cos \left( \theta \right)\\ \end{matrix} \right) Q=(cos(θ)−sin(θ)sin(θ)cos(θ))
如果 y = Q T x y=Q^{T}x y=QTx,那么逆时针旋转x就得到了y。旋转矩阵可以看我的其他博客3维旋转的3种表示方法之间的关系,还有从几何与代数的角度推算坐标旋转变换矩阵(以2维为例)
而镜像变换,是点x以某个向量为轴,得到其镜像y。
Q = ( cos ( θ ) sin ( θ ) sin ( θ ) − cos ( θ ) ) Q=\left( \begin{matrix} \cos \left( \theta \right)& \sin \left( \theta \right)\\ \sin \left( \theta \right)& -\cos \left( \theta \right)\\ \end{matrix} \right) Q=(cos(θ)sin(θ)sin(θ)−cos(θ))
该镜像变换以向量 ( c o s ( θ / 2 ) , s i n ( θ / 2 ) ) (cos(\theta/2),sin(\theta/2)) (cos(θ/2),sin(θ/2))为轴
镜像变换是对称矩阵,因此 y = Q T x = Q x y=Q^{T}x=Qx y=QTx=Qx
该镜像变换矩阵是怎么来的呢,下面进行推导。假设需要镜像的点为A ( x 0 , y 0 ) (x_0,y_0) (x0,y0),镜像后得到的点为B ( x 1 , y 1 ) (x_1,y_1) (x1,y1)
那么就有下面两个约数(1) A B → \overrightarrow{AB} AB垂直与向量,(2)A到向量的距离与B到向量的距离相等,并且方向相反。
根据条件(1)
( x 0 − x 1 ) cos θ 2 + ( y 0 − y 1 ) sin θ 2 = 0 \left( x_0-x_1 \right) \cos \frac{\theta}{2}+\left( y_0-y_1 \right) \sin \frac{\theta}{2}=0 (x0−x1)cos2θ+(y0−y1)sin2θ=0
向量 ( c o s ( θ / 2 ) , s i n ( θ / 2 ) ) (cos(\theta/2),sin(\theta/2)) (cos(θ/2),sin(θ/2))可以看做一条直线,该直线为
− sin θ 2 x + cos θ 2 y = 0 -\sin \frac{\theta}{2}x+\cos \frac{\theta}{2}y=0 −sin2θx+cos2θy=0
A到该直线距离为
f 1 = − sin θ 2 x 0 + cos θ 2 y 0 f1=-\sin \frac{\theta}{2}x_0+\cos \frac{\theta}{2}y_0 f1=−sin2θx0+cos2θy0
B到该直线距离为
f 2 = − sin θ 2 x 1 + cos θ 2 y 1 f2=-\sin \frac{\theta}{2}x_1+\cos \frac{\theta}{2}y_1 f2=−sin2θx1+cos2θy1
条件(2)为
f 1 = − f 2 f1=-f2 f1=−f2
根据解这两个方程,就可以得到上面的镜像变换矩阵Q,我用mathematica验证,确实如此