Exact axis-angle decomposition #
The local balanced-support argument needs an exact finite-rotation identity,
not an infinitesimal approximation. We obtain it from the existing theorem
that every element of SO(3) is orthogonally conjugate to a rotation about
the z axis.
Euclidean-space wrapper for the ordinary three-dimensional cross product.
Equations
- Cayley.BalancedSupport.cross3 v w = WithLp.toLp 2 ((crossProduct v.ofLp) w.ofLp)
Instances For
theorem
Cayley.BalancedSupport.oriented_frame_first_inner
(frame : Euc(3) ≃ₗᵢ[ℝ] Euc(3))
(inverseMatrix : Matrix (Fin 3) (Fin 3) ℝ)
(hinverse : ∀ (x : Euc(3)), (frame.symm x).ofLp = inverseMatrix.mulVec x.ofLp)
(v d : Euc(3))
:
Orientation-preserving orthonormal frames carry the standard infinitesimal z rotation to cross product with their z axis.
An axis-angle presentation of a three-dimensional rotation. The axis is encoded by the orthonormal frame taking the standard z axis to that axis.
- angle : ℝ
- rotation_eq : Q = self.frame.toLinearIsometry.toContinuousLinearMap ∘SL RzL self.angle ∘SL self.frame.symm.toLinearIsometry.toContinuousLinearMap
Instances For
theorem
Cayley.BalancedSupport.exists_axisAngle
(A : Matrix (Fin 3) (Fin 3) ℝ)
(hA : A ∈ Matrix.specialOrthogonalGroup (Fin 3) ℝ)
:
Every special orthogonal matrix has an exact AxisAngle presentation
with angle in (-π,π].