def cross_track_distance(self, start_point, end_point):
        '''
        Return the cross track distance from this point to the line between two
        points::

                        * end_point
                       /
                      /
                     /   * this point
                    /
                   /
                  *
             start_point


        :param start_point: First point on the line
        :type start_point: Point
        :param end_point: Second point on the line
        :type end_point: Point

        :returns: The perpendicular distance to the line between ``start_point`` 
                  and ``end_point``, where distance on the right of ``start_point``
                  is positive and distance on the left is negative 
        :rtype: float
        '''

        dist = start_point.distance_to(self)
        bearing_to_end = start_point.bearing_to(end_point).radians
        bearing_to_point = start_point.bearing_to(self).radians
        return math.asin(math.sin(dist / EARTH_RADIUS) * \
                         math.sin(bearing_to_point - bearing_to_end)) * \
                         EARTH_RADIUS
Return the cross track distance from this point to the line between two
        points::

                        * end_point
                       /
                      /
                     /   * this point
                    /
                   /
                  *
             start_point


        :param start_point: First point on the line
        :type start_point: Point
        :param end_point: Second point on the line
        :type end_point: Point

        :returns: The perpendicular distance to the line between ``start_point`` 
                  and ``end_point``, where distance on the right of ``start_point``
                  is positive and distance on the left is negative 
        :rtype: float