def test_interconversion_euler_axangle(random_axangles): """ This function checks (with random numbers) that .to_Axangle() and .to_Euler() go back and forth correctly """ z = random_axangles.copy() z[:, :3] = np.divide(random_axangles[:, :3], np.linalg.norm( random_axangles[:, :3], axis=1).reshape(z.shape[0], 1)) # normalise axangle = AxAngle(z) e = axangle.to_Euler(axis_convention='rzxz') transform_back = e.to_AxAngle() assert isinstance(transform_back, AxAngle) assert np.allclose(transform_back.data, axangle.data)
def test_orthogonal_linear_case_for_cyclic_group(fz_string): """ Rotations about the x direction are never removed by the effects of the cyclic group """ axis = np.hstack((np.ones((2000, 1)), np.zeros((2000, 2)))) # x angle = np.linspace(-np.pi, np.pi, 2000) along_x_axis = AxAngle(np.hstack((axis, angle.reshape(-1, 1)))) reduced = reduce_to_fundamental_zone(along_x_axis, fz_string) assert reduced.data.shape[0] == along_x_axis.data.shape[0]
def axang(self, good_array): return AxAngle(good_array)
def test_remove_large_rotations(self, good_array): axang = AxAngle(good_array) axang.remove_large_rotations(1.05) # removes 1 rotations assert axang.data.shape == (1, 4)
def test_good_array__init__(self, good_array): assert isinstance(AxAngle(good_array), AxAngle)
def test_odd_convention_mat2euler(self): ax = AxAngle(np.asarray([[1, 0, 0, 0.2]])) ax.to_Euler(axis_convention='sxyz')