³ò
'Fc           @   s²   d  d k  Z  d  d k Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d d d „  ƒ  YZ d „  Z d d d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿNc         C   s"   |  d | d |  d | d f S(   Ni    i   (    (   t   ut   v(    (    s   ../src/geometry.pyt   pt_add   s    c         C   s"   |  d | d |  d | d f S(   Ni    i   (    (   R    R   (    (    s   ../src/geometry.pyt   pt_sub   s    c         C   s   |  | d |  | d f S(   Ni    i   (    (   t   aR    (    (    s   ../src/geometry.pyt   pt_mul    s    c         C   sQ   t  i | ƒ t  i | ƒ } } | |  d | |  d | |  d | |  d f S(   Ni    i   (   t   matht   cost   sin(   R    t   anglet   ct   s(    (    s   ../src/geometry.pyt   pt_rot#   s    c         C   s   t  i |  d |  d ƒ S(   Ni    i   (   R   t   hypot(   R    (    (    s   ../src/geometry.pyt   pt_len'   s    c         C   s   t  i |  d |  d ƒ S(   Ni   i    (   R   t   atan2(   R    (    (    s   ../src/geometry.pyt   pt_angle*   s    c         C   s&   t  |  ƒ } |  d | |  d | f S(   Ni    i   (   R   (   R    t   r(    (    s   ../src/geometry.pyt   pt_unit-   s    c         C   sV   |  d  j o | Sn | d  j o |  Sn t |  d | d ƒ t |  d | d ƒ f S(   Ni    i   (   t   Nonet   min(   R   t   b(    (    s   ../src/geometry.pyt   pt_min1   s
      c         C   s²   |  d  j o | Sn | d  j o |  Sn t |  d | d ƒ } | d  j o t |  d | d ƒ } n t |  d | d ƒ } | d  j o t |  d | d ƒ } n | | f S(   Ni    i   (   R   t   maxR   (   R   R   t   xt   y(    (    s   ../src/geometry.pyt   pt_max6   s      t   BoundingBoxc           B   sÎ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         G   sQ   t  | ƒ d j o( t t | ƒ |  _ t t | ƒ |  _ n d  |  _ d  |  _ d  S(   Ni    (   t   lent   reduceR   t   p0R   t   p1R   (   t   selft   args(    (    s   ../src/geometry.pyt   __init__E   s
    	c         C   s    d t  |  i ƒ t  |  i ƒ f S(   Ns   (%s,%s)(   t   strR   R   (   R    (    (    s   ../src/geometry.pyt   __str__M   s    c         C   s   t  |  i |  i ƒ S(   N(   R   R   R   (   R    (    (    s   ../src/geometry.pyt   copyP   s    c         C   s   |  i  d  j p |  i d  j S(   N(   R   R   R   (   R    (    (    s   ../src/geometry.pyt   is_nullS   s    c         C   s5   |  i  ƒ  o d  Sn t |  i d |  i d ƒ Sd  S(   Ni    (   R&   R   t   absR   R   (   R    (    (    s   ../src/geometry.pyt   widthV   s    c         C   s5   |  i  ƒ  o d  Sn t |  i d |  i d ƒ Sd  S(   Ni   (   R&   R   R'   R   R   (   R    (    (    s   ../src/geometry.pyt   height\   s    c         C   s5   |  i  ƒ  o d  Sn t i |  i ƒ  |  i ƒ  ƒ Sd  S(   N(   R&   R   R   R   R(   R)   (   R    (    (    s   ../src/geometry.pyt   diagonalb   s    c         C   s-   |  i  ƒ  o d  Sn |  i ƒ  |  i ƒ  Sd  S(   N(   R&   R   R)   R(   (   R    (    (    s   ../src/geometry.pyt   aspect_ratioh   s    c         C   s1   |  i  ƒ  o d  Sn |  i d |  i d f Sd  S(   Ni    (   R&   R   R   R   (   R    (    (    s   ../src/geometry.pyt   xrangen   s    c         C   s1   |  i  ƒ  o d  Sn |  i d |  i d f Sd  S(   Ni   (   R&   R   R   R   (   R    (    (    s   ../src/geometry.pyt   yranget   s    c         C   s    |  i  ƒ  o d  Sn |  i Sd  S(   N(   R&   R   R   (   R    (    (    s   ../src/geometry.pyt	   lowerleftz   s    c         C   s1   |  i  ƒ  o d  Sn |  i d |  i d f Sd  S(   Ni    i   (   R&   R   R   R   (   R    (    (    s   ../src/geometry.pyt	   upperleft€   s    c         C   s    |  i  ƒ  o d  Sn |  i Sd  S(   N(   R&   R   R   (   R    (    (    s   ../src/geometry.pyt
   upperright†   s    c         C   s1   |  i  ƒ  o d  Sn |  i d |  i d f Sd  S(   Ni    i   (   R&   R   R   R   (   R    (    (    s   ../src/geometry.pyt
   lowerrightŒ   s    c         C   sB   |  i  ƒ  } |  i ƒ  } | d | d d | d | d d f S(   Ni    i   g       @(   R,   R-   (   R    R   R   (    (    s   ../src/geometry.pyt   center’   s    c         C   s4   t  |  i | i ƒ |  _ t |  i | i ƒ |  _ d  S(   N(   R   R   R   R   (   R    t   other(    (    s   ../src/geometry.pyt   union—   s    c         C   s:   t  |  i | | f ƒ |  _ t |  i | | f ƒ |  _ d  S(   N(   R   R   R   R   (   R    t   dtt   dbt   dlt   dr(    (    s   ../src/geometry.pyt   deform›   s    c         C   s.   t  |  i | ƒ |  _ t  |  i | ƒ |  _ d  S(   N(   R   R   R   (   R    t   dp(    (    s   ../src/geometry.pyt   shiftŸ   s    c         C   sS   t  | d |  i ƒ  |  i ƒ  f ƒ } t |  i | ƒ |  _ t |  i | ƒ |  _ d  S(   Ng       @(   R   R(   R)   R   R   R   R   (   R    t   factorR:   (    (    s   ../src/geometry.pyt   expand£   s    %c         C   sè   t  t t |  i ƒ  | ƒ | ƒ | ƒ } t  t t |  i ƒ  | ƒ | ƒ | ƒ } t  t t |  i ƒ  | ƒ | ƒ | ƒ } t  t t |  i ƒ  | ƒ | ƒ | ƒ } t | t | t | | ƒ ƒ ƒ |  _ t	 | t	 | t	 | | ƒ ƒ ƒ |  _
 d  S(   N(   R   R   R   R.   R1   R/   R0   R   R   R   R   (   R    R	   t   pR   R   R
   t   d(    (    s   ../src/geometry.pyt   rotate¨   s    ''''$c         C   sã   | |  i  ƒ  j  oh |  i ƒ  | |  i ƒ  } |  i d |  i d | d f |  _ |  i d |  i d | d f |  _ ne |  i ƒ  |  i ƒ  | } |  i d | d |  i d f |  _ |  i d | d |  i d f |  _ d  S(   Ni    i   i   (   R+   R)   R(   R   R   (   R    t   ratiot   dht   dw(    (    s   ../src/geometry.pyt   make_aspect_ratio°   s    %)%c         C   sp   |  i  d | d j oP | d |  i d j o8 |  i  d | d j o  | d |  i d j o d Sn d Sd  S(   Ni    i   (   R   R   (   R    t   q(    (    s   ../src/geometry.pyt   containsº   s    (   t   __name__t
   __module__R"   R$   R%   R&   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   R2   R4   R9   R;   R=   R@   RD   RF   (    (    (    s   ../src/geometry.pyR   C   s,   																					
c         C   sÞ   |  d d | d d |  d d | d d } |  d d | d d |  d d | d d } |  d d | d d |  d d | d d } |  d d | d d |  d d | d d } | | f | | f f S(   Ni    i   (    (   t   At   Bt   C00t   C01t   C10t   C11(    (    s   ../src/geometry.pyt   _matrix_multipyÅ   s
    2222t   AffineTransformc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   d |  _  d d f |  _ d  S(   Ng        g      ð?(   g        g        (   g      ð?g        (   g        g      ð?(   t   tt   m(   R    (    (    s   ../src/geometry.pyR"   Î   s    	c         C   sp   |  i  d |  i d d | |  i d d | } |  i  d |  i d d | |  i d d | } | | f S(   Ni    i   (   RQ   RR   (   R    R   R   R>   RE   (    (    s   ../src/geometry.pyt   __call__Ò   s    33c         C   sŽ   t  i | ƒ } t  i | ƒ } |  i d |  i d d | |  i d d | } |  i d |  i d d | |  i d d | } | | f S(   Ni    i   (   t   numpyt   asarrayRQ   RR   (   R    R   R   t   x_t   y_R>   RE   (    (    s   ../src/geometry.pyt   call_vec×   s
    33c         C   s<   |  | i  d | i  d ƒ |  _  t |  i | i ƒ |  _ d  S(   Ni    i   (   RQ   t   _matrix_multiplyRR   (   R    R3   (    (    s   ../src/geometry.pyt   composeÞ   s     (   RG   RH   R"   RS   RX   RZ   (    (    (    s   ../src/geometry.pyRP   Ì   s   			t   RectilinearMapc           B   s   e  Z d  „  Z RS(   c   	      C   s¬   t  i |  ƒ | i ƒ  | i ƒ  } | i ƒ  | i ƒ  } | i ƒ  | i ƒ  } } | d | | d } | d | | d } | | f |  _ | d f d | f f |  _ d  S(   Ni    i   g        (   RP   R"   R(   R)   R.   RQ   RR   (	   R    t   srct   destt   sxt   syR>   RE   t   txt   ty(    (    s   ../src/geometry.pyR"   ä   s    (   RG   RH   R"   (    (    (    s   ../src/geometry.pyR[   â   s   (    (    (   R   RT   R   R   R   R   R   R   R   R   R   R   RO   RP   R[   (    (    (    s   ../src/geometry.pys   <module>   s   									‚	