³ò
êfJc           @   s1   d  d k  Td Z d d Z d d d „  ƒ  YZ d S(   iÿÿÿÿ(   t   *g    ®MXAg      ð?t   Locationc           B   sÔ   e  Z d  d  d d „ Z d d „ Z d d „ Z d d „ Z d d „ Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   g        t   radianc         C   sK   | i  ƒ  d j o" t | ƒ |  _ t | ƒ |  _ n | |  _ | |  _ d  S(   NR   (   t   lowert   radianst   latt   lon(   t   selfR   R   t   unit(    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   __init__   s
    	c         C   s+   | i  ƒ  d j o t |  i ƒ Sn |  i S(   NR   (   R   t   degreesR   (   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   getLat   s    c         C   s+   | i  ƒ  d j o t |  i ƒ Sn |  i S(   NR   (   R   R
   R   (   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   getLon   s    c         C   s3   | i  ƒ  d j o t | ƒ |  _ n
 | |  _ d  S(   NR   (   R   R   R   (   R   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   setLat"   s    c         C   s3   | i  ƒ  d j o t | ƒ |  _ n
 | |  _ d  S(   NR   (   R   R   R   (   R   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   setLon(   s    c         C   s-   |  i  | i  } |  i | i } t | | ƒ S(   N(   R   R   R   (   R   t   otherR   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   __add__.   s    c         C   s-   |  i  | i  } |  i | i } t | | ƒ S(   N(   R   R   R   (   R   R   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   __sub__3   s    c         C   s"   t  i |  i |  i | i | i ƒ S(   N(   R   t   s_getBearingR   R   (   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt
   getBearing8   s    c         C   s"   t  i |  i |  i | i | i ƒ S(   N(   R   t   s_getDistanceR   R   (   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   getDistance<   s    c         C   s1   t  i | | |  i |  i ƒ \ } } t  | | ƒ S(   N(   R   t   s_atBearingR   R   (   R   t   bearingt   distanceR   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt	   atBearing@   s    c         C   s%   t  i |  i |  i | i | i | ƒ S(   N(   R   t   s_isWithinDistanceR   R   (   R   R   R   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   isWithinDistanceE   s    c         C   s.   t  i | i | i |  i |  i | i | i ƒ S(   N(   R   t   s_hasXPerpLineR   R   (   R   t   startt   target(    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyt   hasXPerpLineI   s    c         C   s_   t  | | ƒ t | ƒ } t |  ƒ t  | ƒ t  |  ƒ t | ƒ t | | ƒ } t | | ƒ S(   N(   t   sint   cost   atan2(   t   lat1t   lon1t   lat2t   lon2t   yt   x(    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR   N   s    8c         C   s@   t  t t |  ƒ t | ƒ t |  ƒ t | ƒ t | | ƒ ƒ S(   N(   t   EARTH_RADIUSt   acosR    R!   (   R#   R$   R%   R&   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR   U   s    c         C   s•   | t  } t t | ƒ t | ƒ t | ƒ t | ƒ t |  ƒ ƒ } | t t |  ƒ t | ƒ t | ƒ t | ƒ t | ƒ t | ƒ ƒ } | | f S(   N(   t   EARTH_RADIUS_INVERTEDt   asinR    R!   R"   (   R   R   R   R   t   rt   rlatt   rlon(    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR   ]   s
    
:#$c         C   s1   t  i |  | | | ƒ } | | j o t Sn t S(   N(   R   R   t   Truet   False(   R#   R$   R%   R&   t   distR   (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR   f   s    c   	      C   sv   t  } | |  j oA | | | |  } t | d ƒ t | | | | d ƒ j } n t | d ƒ t | d ƒ j } | S(   Ni   (   R1   t   round(	   t   slatt   slont   clatt   clont   tlatt   tlont
   isOverlinet	   perpSlopet
   isOverLine(    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR   v   s    "(   t   __name__t
   __module__R	   R   R   R   R   R   R   R   R   R   R   R   t   staticmethodR   R   R   R   R   (    (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pyR      s"   								N(    (   t   mathR)   R+   R   (    (    (    s4   /home/godin/workspace/LRAUV/TestMissions/Location.pys   <module>   s   

