罗德里格斯公式推导
第一部分
向量
v
=
(
v
x
,
v
y
,
v
z
)
T
v=(v_{x},v_{y},v_{z})^{T}
v=(vx,vy,vz)T 绕单位方向矢量
n
=
(
n
x
,
n
y
,
n
z
)
T
n=(n_{x},n_{y},n_{z})^{T}
n=(nx,ny,nz)T 转过角度
θ
\theta
θ 得到向量
v
r
o
t
v_{rot}
vrot .
v
∣
∣
=
(
v
⋅
n
)
n
w
=
(
n
×
v
)
v
⊥
=
v
−
v
∣
∣
=
v
−
(
v
⋅
n
)
n
v
⊥
=
−
n
×
w
=
−
n
×
(
n
×
v
)
v
∣
∣
=
v
+
n
×
(
n
×
v
)
v_{||}=(v \cdot n)n\\ w= (n\times v)\\ v_{\perp}=v-v_{||}=v-(v \cdot n)n\\ v_{\perp}=-n\times w = -n\times (n\times v)\\ v_{||}=v+n\times (n\times v)
v∣∣=(v⋅n)nw=(n×v)v⊥=v−v∣∣=v−(v⋅n)nv⊥=−n×w=−n×(n×v)v∣∣=v+n×(n×v)
n × v = ∣ i j k n x n y n z v x v y v z ∣ = [ 0 − n z n y n z 0 − n x − n y n x 0 ] [ v x v y v z ] = N v = n × v n\times v\ =\ \left|\begin{array}{ccc}\boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \\ n_x & n_y & n_z \\ v_x & v_y & v_z \end{array}\right| = \ \left[\begin{array}{ccc} 0 & -n_z & n_y \\ n_z & 0 & -n_x \\ -n_y & n_x & 0 \end{array}\right] \left[\begin{array}{c}v_x \\ v_y \\ v_z \end{array}\right]\ = \ Nv\ =\ n^{\times}v n×v = inxvxjnyvyknzvz = 0nz−ny−nz0nxny−nx0 vxvyvz = Nv = n×v
v r o t = v ∣ ∣ + v ⊥ cos θ + w sin θ = v + n × ( n × v ) − n × ( n × v ) cos θ + ( n × v ) sin θ = v + ( 1 − cos θ ) N 2 v + N v sin θ = [ I + ( 1 − cos θ ) N 2 + N sin θ ] v = R v \begin{aligned} v_{rot}&=v_{||}+v_{\perp}\cos \theta +w\sin \theta \\ &=v+n\times (n\times v) -n\times (n\times v)\cos \theta +(n\times v)\sin \theta \\ &=v+(1-\cos \theta )N^{2}v+Nv\sin \theta \\ &=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v \\ &= Rv \end{aligned} vrot=v∣∣+v⊥cosθ+wsinθ=v+n×(n×v)−n×(n×v)cosθ+(n×v)sinθ=v+(1−cosθ)N2v+Nvsinθ=[I+(1−cosθ)N2+Nsinθ]v=Rv
其中
N
2
=
N
⋅
N
=
[
−
n
y
2
−
n
z
2
n
x
n
y
n
x
n
z
n
x
n
y
−
n
x
2
−
n
z
2
n
y
n
z
n
x
n
z
n
y
n
z
−
n
x
2
−
n
y
2
]
=
[
n
x
2
−
1
n
x
n
y
n
x
n
z
n
x
n
y
n
y
2
−
1
n
y
n
z
n
x
n
z
n
y
n
z
n
z
2
−
1
]
=
n
⋅
n
T
−
I
\begin{aligned} N^{2}=N\cdot N &=\left[\begin{array}{ccc} -n_{y}^{2}-n_{z}^{2} & n_{x}n_{y} & n_{x}n_{z} \\ n_{x}n_{y} & -n_{x}^{2}-n_{z}^{2} & n_{y}n_{z} \\ n_{x}n_{z} & n_{y}n_{z} & -n_{x}^{2}-n_{y}^{2} \end{array}\right]\\ &=\left[\begin{array}{ccc} n_{x}^{2}-1 & n_{x}n_{y} & n_{x}n_{z} \\ n_{x}n_{y} & n_{y}^{2}-1 & n_{y}n_{z} \\ n_{x}n_{z} & n_{y}n_{z} & n_{z}^{2}-1 \end{array}\right]\\ &= n \cdot n^{T} - I \end{aligned}
N2=N⋅N=
−ny2−nz2nxnynxnznxny−nx2−nz2nynznxnznynz−nx2−ny2
=
nx2−1nxnynxnznxnyny2−1nynznxnznynznz2−1
=n⋅nT−I
所以
R
=
I
+
(
1
−
cos
θ
)
N
2
+
N
sin
θ
=
I
+
(
1
−
cos
θ
)
(
n
⋅
n
T
−
I
)
+
N
sin
θ
=
I
cos
θ
+
(
1
−
cos
θ
)
n
⋅
n
T
+
N
sin
θ
\begin{aligned} R&=I+(1-\cos \theta )N^{2}+N\sin \theta \\ &=I+(1-\cos \theta )(n\cdot n^{T}-I)+N\sin \theta \\ &=I\cos \theta +(1-\cos \theta )n\cdot n^{T}+N\sin \theta \end{aligned}
R=I+(1−cosθ)N2+Nsinθ=I+(1−cosθ)(n⋅nT−I)+Nsinθ=Icosθ+(1−cosθ)n⋅nT+Nsinθ
第二部分
以上是向量 v = ( v x , v y , v z ) T v=(v_{x},v_{y},v_{z})^{T} v=(vx,vy,vz)T 和单位方向矢量 n = ( n x , n y , n z ) T n=(n_{x},n_{y},n_{z})^{T} n=(nx,ny,nz)T 共面。如果二者不共面,如下图 v 3 v_3 v3 ,可以将 v 3 v_3 v3平移,使 v 3 v_3 v3 和 n n n 共面再用上面公式.
或者使用 与
n
n
n 共面的
v
v
v 和
v
2
v_2
v2 构造
v
3
v_3
v3 ,即
v
3
=
v
−
v
2
v_3=v-v_2
v3=v−v2 .
这里
v
v
v 和
v
2
v_2
v2 满足
v
r
o
t
=
[
I
+
(
1
−
cos
θ
)
N
2
+
N
sin
θ
]
v
v
2
r
o
t
=
[
I
+
(
1
−
cos
θ
)
N
2
+
N
sin
θ
]
v
2
\begin{aligned} v_{rot}&=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v \\ v_{2rot}&=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v_{2} \end{aligned}
vrotv2rot=[I+(1−cosθ)N2+Nsinθ]v=[I+(1−cosθ)N2+Nsinθ]v2
所以向量
v
3
v_3
v3 绕单位方向矢量
n
=
(
n
x
,
n
y
,
n
z
)
T
n=(n_{x},n_{y},n_{z})^{T}
n=(nx,ny,nz)T 转过角度
θ
\theta
θ 得到向量
v
3
r
o
t
v_{3rot}
v3rot 的公式如下:
v
3
r
o
t
=
v
r
o
t
−
v
2
r
o
t
=
[
I
+
(
1
−
cos
θ
)
N
2
+
N
sin
θ
]
(
v
−
v
2
)
=
[
I
+
(
1
−
cos
θ
)
N
2
+
N
sin
θ
]
v
3
\begin{aligned} v_{3rot}&=v_{rot}-v_{2rot}\\ &=[I+(1-\cos \theta )N^{2}+N\sin \theta ](v-v_2)\\ &=[I+(1-\cos \theta )N^{2}+N\sin \theta ]v_3 \end{aligned}
v3rot=vrot−v2rot=[I+(1−cosθ)N2+Nsinθ](v−v2)=[I+(1−cosθ)N2+Nsinθ]v3
由上可知:即使
v
3
v_3
v3 和
n
n
n 不共面,仍然满足罗德里格斯公式,因为这个空间是线性的.