ktk.geometry.create_transforms#
- create_transforms(seq=None, angles=None, translations=None, scales=None, *, degrees=False)[source]#
Create series of transforms based on angles, translations and scales.
Create an Nx4x4 series of homogeneous transform matrices based on series of angles, translations and scales.
- Parameters:
seq (str | None) – Optional. Specifies sequence of axes for rotations. Up to 3 characters belonging to the set {“X”, “Y”, “Z”} for intrinsic rotations (moving axes), or {“x”, “y”, “z”} for extrinsic rotations (fixed axes). Extrinsic and intrinsic rotations cannot be mixed in one function call. Required if angles is specified.
angles (ArrayLike | None) –
Optional array_like of shape (N,) or (N, [1 or 2 or 3]). Angles are specified in radians (if degrees is False) or degrees (if degrees is True).
For a single-character seq, angles can be:
array_like with shape (N,), where each angle[i] corresponds to a single rotation;
array_like with shape (N, 1), where each angle[i, 0] corresponds to a single rotation.
For 2- and 3-character seq, angles is an array_like with shape (N, W) where each angle[i, :] corresponds to a sequence of Euler angles and W is the length of seq.
translations (ArrayLike | None) – Optional array_like of shape (N, 3) or (N, 4). This corresponds to the translation part of the generated series of homogeneous transforms.
scales (ArrayLike | None) – Optional array_like of shape (N, ) that corresponds to the scale to apply uniformly on the three axes. By default, no scale is included.
degrees – If True, then the given angles are in degrees. Default is False.
- Returns:
An Nx4x4 series of homogeneous transforms.
- Return type:
np.ndarray
See also
ktk.geometry.create_frames
,ktk.geometry.rotate
,ktk.geometry.translate
,ktk.geometry.scale
Examples
Create a series of two homogeneous transforms that rotates 0, then 90 degrees around x:
>>> import kineticstoolkit.lab as ktk >>> ktk.geometry.create_transforms(seq="x", angles=[0, 90], degrees=True) array([[[ 1., 0., 0., 0.], [ 0., 1., 0., 0.], [ 0., 0., 1., 0.], [ 0., 0., 0., 1.]], [[ 1., 0., 0., 0.], [ 0., 0., -1., 0.], [ 0., 1., 0., 0.], [ 0., 0., 0., 1.]]])
Create an homogeneous transform that converts millimeters to meters
>>> import kineticstoolkit.lab as ktk >>> ktk.geometry.create_transforms(scales=[0.001]) array([[[0.001, 0. , 0. , 0. ], [0. , 0.001, 0. , 0. ], [0. , 0. , 0.001, 0. ], [0. , 0. , 0. , 1. ]]])