rotation
========

.. py:module:: rotation


Functions
---------

.. autoapisummary::

   rotation.dot_rotation_matrix
   rotation.full_rotation_axis_angle
   rotation.sky_projection_axis_angle
   rotation.left_project
   rotation.right_project
   rotation.compute_rotation_matrices
   rotation.rotar
   rotation.dlmn
   rotation.dot_rz
   rotation.fast_direct_left_project


Module Contents
---------------

.. py:function:: dot_rotation_matrix(ydeg, x, y, z, theta)

   Construct a callable to apply a spherical harmonic rotation

   :param ydeg: The order of the spherical harmonic map
   :type ydeg: int
   :param x: The x component of the rotation axis
   :type x: float
   :param y: The y component of the rotation axis
   :type y: float
   :param z: The z component of the rotation axis
   :type z: float
   :param theta: The rotation angle in radians
   :type theta: float


.. py:function:: full_rotation_axis_angle(inc: float | None, obl: float | None, theta: float | None, theta_z: float | None)

   Return the axis-angle representation of the full rotation of the
      spherical harmonic map

   :param inc: map inclination
   :type inc: float
   :param obl: map obliquity
   :type obl: float
   :param theta: rotation angle about the map z-axis
   :type theta: float
   :param theta_z: rotation angle about the sky y-axis
   :type theta_z: float

   :returns: x, y, z, angle
   :rtype: tuple


.. py:function:: sky_projection_axis_angle(inc: float | None, obl: float | None)

   Return the axis-angle representation of the partial rotation of the
      map due to inclination and obliquity

   :param inc: map inclination
   :type inc: float or None
   :param obl: map obliquity
   :type obl: float or None

   :returns: x, y, z, angle
   :rtype: tuple


.. py:function:: left_project(ydeg: int, inc: float | None, obl: float | None, theta: float | None, theta_z: float | None, y: jaxoplanet.types.Array)

   R @ y

   :param ydeg: degree of the spherical harmonic map
   :type ydeg: int
   :param inc: map inclination
   :type inc: float or None
   :param obl: map obliquity
   :type obl: float or None
   :param theta: rotation angle about the map z-axis
   :type theta: float or None
   :param theta_z: rotation angle about the sky y-axis
   :type theta_z: float or None
   :param x: spherical harmonic map coefficients
   :type x: Array

   :returns: rotated spherical harmonic map coefficients
   :rtype: Array


.. py:function:: right_project(ydeg: int, inc: float | None, obl: float | None, theta: float | None, theta_z: float | None, y: jaxoplanet.types.Array)

   y @ R

   :param ydeg: degree of the spherical harmonic map
   :type ydeg: int
   :param inc: map inclination
   :type inc: float or None
   :param obl: map obliquity
   :type obl: float or None
   :param theta: rotation angle about the map z-axis
   :type theta: float or None
   :param theta_z: rotation angle about the sky y-axis
   :type theta_z: float or None
   :param x: spherical harmonic map coefficients
   :type x: Array

   :returns: rotated spherical harmonic map coefficients
   :rtype: Array


.. py:function:: compute_rotation_matrices(ydeg, x, y, z, theta)

.. py:function:: rotar(ydeg, c1, s1, c2, s2, c3, s3)

.. py:function:: dlmn(ell, s1, c1, c2, tgbet2, s3, c3, D)

.. py:function:: dot_rz(deg, theta)

   Special case for rotation only around z axis


.. py:function:: fast_direct_left_project(ydeg, inc, obl, theta, theta_z, y)

