Source code for astrophot.models.func.gaussian_ellipsoid

from ...backend_obj import backend, ArrayLike


[docs] def euler_rotation_matrix(alpha: ArrayLike, beta: ArrayLike, gamma: ArrayLike) -> ArrayLike: """Compute the rotation matrix from Euler angles. See the Z_alpha X_beta Z_gamma convention for the order of rotations here: https://en.wikipedia.org/wiki/Euler_angles """ ca = backend.cos(alpha) sa = backend.sin(alpha) cb = backend.cos(beta) sb = backend.sin(beta) cg = backend.cos(gamma) sg = backend.sin(gamma) R = backend.stack( ( backend.stack((ca * cg - cb * sa * sg, -ca * sg - cb * cg * sa, sb * sa)), backend.stack((cg * sa + ca * cb * sg, ca * cb * cg - sa * sg, -ca * sb)), backend.stack((sb * sg, sb * cg, cb)), ), dim=-1, ) return R