def test_basic_2d_rotation_axis_angle(): rotation_matrix = np.array([[0, 1], [-1, 0]]) rotation = Rotation(rotation_matrix) axis, angle = rotation.axis_and_angle_of_rotation() assert_allclose(axis, np.array([0, 0, 1])) assert_allclose((90 * np.pi)/180, angle)
def test_basic_3d_rotation_axis_angle(): a = np.sqrt(3.0)/2.0 b = 0.5 # this is a rotation of -30 degrees about the x axis rotation_matrix = np.array([[1, 0, 0], [0, a, b], [0, -b, a]]) rotation = Rotation(rotation_matrix) axis, angle = rotation.axis_and_angle_of_rotation() assert_allclose(axis, np.array([1, 0, 0])) assert_allclose((-30 * np.pi)/180, angle)
def test_basic_3d_rotation(): a = np.sqrt(3.0)/2.0 b = 0.5 # this is a rotation of -30 degrees about the x axis rotation_matrix = np.array([[1, 0, 0], [0, a, b], [0, -b, a]]) rotation = Rotation(rotation_matrix) starting_vector = np.array([0, 1, 0]) transformed = rotation.apply(starting_vector) assert_allclose(np.array([0, a, -b]), transformed)
def test_3d_rotation_inverse_eye(): a = np.sqrt(3.0)/2.0 b = 0.5 # this is a rotation of -30 degrees about the x axis rotation_matrix = np.array([[1, 0, 0], [0, a, b], [0, -b, a]]) rotation = Rotation(rotation_matrix) transformed = rotation.compose_before(rotation.inverse) print transformed.h_matrix assert_allclose(np.eye(4), transformed.h_matrix, atol=1e-15)
def test_align_2d_rotation(): rotation_matrix = np.array([[0, 1], [-1, 0]]) rotation = Rotation(rotation_matrix) source = PointCloud(np.array([[0, 1], [1, 1], [-1, -5], [3, -5]])) target = rotation.apply(source) # estimate the transform from source and target estimate = Rotation2D.align(source, target) # check the estimates is correct assert_allclose(rotation.h_matrix, estimate.h_matrix, atol=1e-14)
def test_basic_2d_rotation(): rotation_matrix = np.array([[0, 1], [-1, 0]]) rotation = Rotation(rotation_matrix) assert_allclose(np.array([0, -1]), rotation.apply(np.array([1, 0])))