def rotation_matrix_from_axis_and_angle(u, theta):
x = u[<NUM_LIT:0>]<EOL>y = u[<NUM_LIT:1>]<EOL>z = u[<NUM_LIT:2>]<EOL>s = np.sin(theta)<EOL>c = np.cos(theta)<EOL>return np.array([[c + x**<NUM_LIT:2> * (<NUM_LIT:1> - c), x * y * (<NUM_LIT:1> - c) - z * s, x * z * (<NUM_LIT:1> - c) + y * s],<EOL>[y * x * (<NUM_LIT:1> - c) + z * s, c + y**<NUM_LIT:2> * (<NUM_LIT:1> - c), y * z * (<NUM_LIT:1> - c) - x * s ],<EOL>[z * x * (<NUM_LIT:1> - c) - y * s, z * y * (<NUM_LIT:1> - c) + x * s, c + z**<NUM_LIT:2> * (<NUM_LIT:1> - c) ]])<EOL>
Calculate a rotation matrix from an axis and an angle.