astro py:docs

- Index
- Modules

### Navigation

- Astropy v1.1.1 »
- Module code »

# Source code for astropy.coordinates.builtin_frames.fk5

    # -*- coding: utf-8 -*-
    # Licensed under a 3-clause BSD style license - see LICENSE.rst
    from __future__ import (absolute_import, unicode_literals, division,
                            print_function)

    from ..representation import SphericalRepresentation
    from ..baseframe import (BaseCoordinateFrame, frame_transform_graph,
                             TimeFrameAttribute, RepresentationMapping)
    from ..transformations import DynamicMatrixTransform
    from .. import earth_orientation as earth

    from .utils import EQUINOX_J2000

    class FK5(BaseCoordinateFrame):
        """
        A coordinate or frame in the FK5 system.

        Note that this is a barycentric version of FK5 - that is, the origin for
        this frame is the Solar System Barycenter, *not* the Earth geocenter.

        Parameters
        ----------
        representation : `BaseRepresentation` or None
            A representation object or None to have no data (or use the other keywords)
        ra : `Angle`, optional, must be keyword
            The RA for this object (``dec`` must also be given and ``representation``
            must be None).
        dec : `Angle`, optional, must be keyword
            The Declination for this object (``ra`` must also be given and
            ``representation`` must be None).
        distance : `~astropy.units.Quantity`, optional, must be keyword
            The Distance for this object along the line-of-sight.
            (``representation`` must be None).
        equinox : `~astropy.time.Time`, optional, must be keyword
            The equinox of this frame.
        """
        frame_specific_representation_info = {
            'spherical': [RepresentationMapping('lon', 'ra'),
                          RepresentationMapping('lat', 'dec')]
        }
        frame_specific_representation_info['unitspherical'] = \
            frame_specific_representation_info['spherical']

        default_representation = SphericalRepresentation
        equinox = TimeFrameAttribute(default=EQUINOX_J2000)

        @staticmethod
        def _precession_matrix(oldequinox, newequinox):
            """
            Compute and return the precession matrix for FK5 based on Capitaine et
            al. 2003/IAU2006.  Used inside some of the transformation functions.

            Parameters
            ----------
            oldequinox : `~astropy.time.Time`
                The equinox to precess from.
            newequinox : `~astropy.time.Time`
                The equinox to precess to.

            Returns
            -------
            newcoord : array
                The precession matrix to transform to the new equinox
            """
            return earth.precession_matrix_Capitaine(oldequinox, newequinox)

    # This is the "self-transform".  Defined at module level because the decorator
    #  needs a reference to the FK5 class
    @frame_transform_graph.transform(DynamicMatrixTransform, FK5, FK5)
    def fk5_to_fk5(fk5coord1, fk5frame2):
        return fk5coord1._precession_matrix(fk5coord1.equinox, fk5frame2.equinox)