choreo.ActionSym.SurjectiveDirectSpaceRot#

static ActionSym.SurjectiveDirectSpaceRot(double[::1] params)#

Surjective parametrization of direct isometries.

This function computes a direct isometry \(R \in SO(n)\) from a set of \(\frac{n(n-1)}{2}\) parameters using the squared Cayley transform, ensuring surjectivity:

\[R = ((I_n-A)^{-1}(I_n+A))^2\]

where \(A\) denotes the skew-symmetric matrix whose upper triangular entries are given in params.

Example

>>> R = choreo.ActionSym.SurjectiveDirectSpaceRot(np.array([1.,2.,3.]))
>>> np.linalg.norm(np.matmul(R,R.T) - np.identity(3)) < 1e-14
np.True_
>>> abs(np.linalg.det(R) - 1.) < 1e-14
np.True_
Parameters:

params (numpy.ndarray(shape = n*(n-1)/2, dtype = np.float64)) – Upper part of the Cayley skew-symmetric matrix.

Returns:

A direct orthonormal transformation.

Return type:

numpy.ndarray(shape = (n,n), dtype = np.float64)