Source code for src.core.transforms.euler_angles

import numpy as np

# Rotation about x axis
[docs] def Rx(theta): '''Theta: angle in radians Returns: 3x3 rotation matrix about x axis ''' return np.array([[1, 0, 0], [0, np.cos(theta), -np.sin(theta)], [0, np.sin(theta), np.cos(theta)]])
# Rotation about y axis
[docs] def Ry(theta): '''Theta: angle in radians Returns: 3x3 rotation matrix about y axis ''' return np.array([[np.cos(theta), 0, np.sin(theta)], [0, 1, 0], [-np.sin(theta), 0, np.cos(theta)]])
# Rotation about z axis
[docs] def Rz(theta): '''Theta: angle in radians Returns: 3x3 rotation matrix about z axis ''' return np.array([[np.cos(theta), -np.sin(theta), 0], [np.sin(theta), np.cos(theta), 0], [0, 0, 1]])
# Proper Euler angles (z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)
[docs] def rotation_matrix_z_x_z(alpha, beta, gamma): return Rz(alpha) @ Rx(beta) @ Rz(gamma)
[docs] def rotation_matrix_x_y_x(alpha, beta, gamma): return Rx(alpha) @ Ry(beta) @ Rx(gamma)
[docs] def rotation_matrix_y_z_y(alpha, beta, gamma): return Ry(alpha) @ Rz(beta) @ Ry(gamma)
[docs] def rotation_matrix_z_y_z(alpha, beta, gamma): return Rz(alpha) @ Ry(beta) @ Rz(gamma)
[docs] def rotation_matrix_x_z_x(alpha, beta, gamma): return Rx(alpha) @ Rz(beta) @ Rx(gamma)
[docs] def rotation_matrix_y_x_y(alpha, beta, gamma): return Ry(alpha) @ Rx(beta) @ Ry(gamma)
# Tait-Bryan angles (z-y-x, y-x-z, x-z-y, z-x-y, y-z-x, x-y-z)
[docs] def rotation_matrix_z_y_x(alpha, beta, gamma): return Rz(alpha) @ Ry(beta) @ Rx(gamma)
[docs] def rotation_matrix_y_x_z(alpha, beta, gamma): return Ry(alpha) @ Rx(beta) @ Rz(gamma)
[docs] def rotation_matrix_x_z_y(alpha, beta, gamma): return Rx(alpha) @ Rz(beta) @ Ry(gamma)
[docs] def rotation_matrix_z_x_y(alpha, beta, gamma): return Rz(alpha) @ Rx(beta) @ Ry(gamma)
[docs] def rotation_matrix_y_z_x(alpha, beta, gamma): return Ry(alpha) @ Rz(beta) @ Rx(gamma)
[docs] def rotation_matrix_x_y_z(alpha, beta, gamma): return Rx(alpha) @ Ry(beta) @ Rz(gamma)