def generate_preset_test_rotation_matrices_2d(): """Generates pre-set test 2d rotation matrices.""" angles = generate_preset_test_euler_angles(dimensions=1) preset_rotation_matrix = rotation_matrix_2d.from_euler(angles) if tf.executing_eagerly(): return np.array(preset_rotation_matrix) with tf.compat.v1.Session() as sess: return np.array(sess.run([preset_rotation_matrix]))
def test_from_euler_jacobian_random(self): """Test the Jacobian of the from_euler function.""" x_init = test_helpers.generate_random_test_euler_angles(dimensions=1) x = tf.convert_to_tensor(value=x_init) y = rotation_matrix_2d.from_euler(x) self.assert_jacobian_is_correct(x, x_init, y)
def test_from_euler_normalized_preset(self): """Tests that an angle maps to correct matrix.""" euler_angles = test_helpers.generate_preset_test_euler_angles(dimensions=1) matrix = rotation_matrix_2d.from_euler(euler_angles) self.assertAllEqual( rotation_matrix_2d.is_valid(matrix), np.ones(euler_angles.shape[0:-1] + (1,), dtype=bool))
def test_from_euler_with_small_angles_approximation_random(self): """Tests small_angles approximation by comparing to exact calculation.""" # Only generate small angles. For a test tolerance of 1e-3, 0.17 was found # empirically to be the range where the small angle approximation works. random_euler_angles = test_helpers.generate_random_test_euler_angles( min_angle=-0.17, max_angle=0.17, dimensions=1) exact_matrix = rotation_matrix_2d.from_euler(random_euler_angles) approximate_matrix = ( rotation_matrix_2d.from_euler_with_small_angles_approximation( random_euler_angles)) self.assertAllClose(exact_matrix, approximate_matrix, atol=1e-3)
def test_inverse_random(self): """Checks that inverting rotated points results in no transformation.""" random_euler_angles = test_helpers.generate_random_test_euler_angles( dimensions=1) tensor_shape = random_euler_angles.shape[:-1] random_matrix = rotation_matrix_2d.from_euler(random_euler_angles) random_point = np.random.normal(size=tensor_shape + (2,)) rotated_random_points = rotation_matrix_2d.rotate(random_point, random_matrix) predicted_invert_random_matrix = rotation_matrix_2d.inverse(random_matrix) predicted_invert_rotated_random_points = rotation_matrix_2d.rotate( rotated_random_points, predicted_invert_random_matrix) self.assertAllClose( random_point, predicted_invert_rotated_random_points, rtol=1e-6)
def generate_preset_test_rotation_matrices_2d(): """Generates pre-set test 2d rotation matrices.""" angles = generate_preset_test_euler_angles(dimensions=1) preset_rotation_matrix = rotation_matrix_2d.from_euler(angles) return preset_rotation_matrix
def func(test_point, test_angle): random_matrix = rotation_matrix_2d.from_euler(test_angle) return rotation_matrix_2d.rotate(test_point, random_matrix)