scipy.spatial.transform.RigidTransform.
inv#
- RigidTransform.inv(self)#
Инвертировать это преобразование.
Композиция преобразования с его обратным преобразованием дает тождественное преобразование.
Жёсткое преобразование представляет собой композицию вращения и переноса, где сначала применяется вращение, а затем перенос. Таким образом, обратное преобразование эквивалентно обратному переносу, за которым следует обратное вращение.
- Возвращает:
RigidTransformэкземплярОбратное преобразование этого.
Примеры
>>> from scipy.spatial.transform import RigidTransform as Tf >>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
Композиция преобразования с его обратным даёт тождественное преобразование:
>>> rng = np.random.default_rng(seed=123) >>> t = rng.random(3) >>> r = R.random(rng=rng) >>> tf = Tf.from_components(t, r) >>> tf.as_matrix() array([[-0.45431291, 0.67276178, -0.58394466, 0.68235186], [-0.23272031, 0.54310598, 0.80676958, 0.05382102], [ 0.85990758, 0.50242162, -0.09017473, 0.22035987], [ 0. , 0. , 0. , 1. ]])
>>> (tf.inv() * tf).as_matrix() array([[[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]])
Обратное жесткое преобразование совпадает с обратным переносом, за которым следует обратный поворот:
>>> t, r = tf.as_components() >>> r_inv = r.inv() # inverse rotation >>> t_inv = -t # inverse translation >>> tf_r_inv = Tf.from_rotation(r_inv) >>> tf_t_inv = Tf.from_translation(t_inv) >>> np.allclose((tf_r_inv * tf_t_inv).as_matrix(), ... tf.inv().as_matrix(), ... atol=1e-12) True >>> (tf_r_inv * tf_t_inv * tf).as_matrix() array([[[1., 0., 0., 0.], [0., 1., 0., 0.], [0., 0., 1., 0.], [0., 0., 0., 1.]]])