³ò
¿ËHc           @   s1  d  d k  l Z l Z l Z l Z l Z l Z d d d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ	 d e	 f d	 „  ƒ  YZ
 d
 e	 f d „  ƒ  YZ e d j o e	 ƒ  Z e	 ƒ  Z e d d ƒ Z e i d d ƒ e i d e d ƒ e i d e d ƒ e i d  d ƒ e i e ƒ Z e i e ƒ Z n d S(   iÿÿÿÿ(   t   sqrtt   cost   acost   asint   pit   sint   point2Dc           B   sG   e  Z d  d  d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   i    g      ð?c         C   s   | | | g |  _  d  S(   N(   t   e(   t   selft   xt   yt   z(    (    s   bin/linear2D.pyt   __init__   s    c         C   sX   |  i  d | i  d } |  i  d | i  d } |  i  d | i  d } t | | | ƒ S(   Ni    i   i   (   R   R   (   R   t   vR	   R
   R   (    (    s   bin/linear2D.pyt   addVec
   s    c         C   sX   |  i  d | i  d } |  i  d | i  d } |  i  d | i  d } t | | | ƒ S(   Ni    i   i   (   R   R   (   R   R   R	   R
   R   (    (    s   bin/linear2D.pyt   subVec   s    c         C   sX   |  i  d t i  d } |  i  d t i  d } |  i  d t i  d } t | | | ƒ S(   Ni    i   i   (   R   R   t   vector2D(   R   t   pR	   R
   R   (    (    s   bin/linear2D.pyt   subpoint   s    c         C   sO   |  i  d |  i  d |  i  d <|  i  d |  i  d |  i  d <d |  i  d <d  S(   Ni    i   i   (   R   (   R   (    (    s   bin/linear2D.pyt
   homogenize   s    c         C   s   d |  i  d |  i  d f S(   Ns   (%f, %f)i    i   (   R   (   R   (    (    s   bin/linear2D.pyt   __str__"   s    (   t   __name__t
   __module__R   R   R   R   R   R   (    (    (    s   bin/linear2D.pyR      s   				R   c           B   s>   e  Z d  d d d „ Z d „  Z d „  Z d „  Z d „  Z RS(   g      ð?i    c         C   s   | | | g |  _  d  S(   N(   R   (   R   R	   R
   R   (    (    s   bin/linear2D.pyR   &   s    c         C   s0   |  i  d } |  i  d } t | | | | ƒ S(   Ni    i   (   R   R    (   R   R	   R
   (    (    s   bin/linear2D.pyt   length*   s    c         C   s8   |  i  d } |  i  d } | | i  d | | i  d S(   Ni    i   (   R   (   R   R   R	   R
   (    (    s   bin/linear2D.pyt   dot.   s    c         C   sL   |  i  d } |  i  d } |  i ƒ  } | | |  i  d <| | |  i  d <d  S(   Ni    i   (   R   R   (   R   R	   R
   t   l(    (    s   bin/linear2D.pyt	   normalize2   s
    c         C   s   d |  i  d |  i  d f S(   Ns   (%f, %f)i    i   (   R   (   R   (    (    s   bin/linear2D.pyR   :   s    (   R   R   R   R   R   R   R   (    (    (    s   bin/linear2D.pyR   %   s
   			t   matrix2Dc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c      	   C   s(   d d d d d d d d d g	 |  _  d  S(   Ng      ð?i    (   R   (   R   (    (    s   bin/linear2D.pyR   @   s    		c   	      C   sÔ   | i  d } | i  d } | i  d } |  i  d | |  i  d | |  i  d | } |  i  d | |  i  d | |  i  d | } |  i  d | |  i  d | |  i  d	 | } t | | | ƒ } | i ƒ  | S(
   Ni    i   i   i   i   i   i   i   i   (   R   R   R   (	   R   R   R	   R
   R   t   uR   t   wt   returnP(    (    s   bin/linear2D.pyt   matpointE   s    ///
c         C   sg   | i  d } | i  d } |  i  d | |  i  d | } |  i  d | |  i  d | } t | | ƒ S(   Ni    i   i   i   (   R   R   (   R   R   R	   R
   R   (    (    s   bin/linear2D.pyt   matvecR   s
      c      	   C   só   |  i  } | i  } d d d d d d d d d g	 } x‹ t d d ƒ D]z } xq t d d ƒ D]` } | | d | | | | d d | | d | | d d | | d | | d | <qY WqC Wx+ t t | ƒ ƒ D] } | | |  i  | <qÔ Wd  S(   Ng      ð?i    i   i   i   i   (   R   t   ranget   len(   R   t   matt   at   bt   ct   jt   i(    (    s   bin/linear2D.pyt   postmult[   s    		!  b c      	   C   só   |  i  } | i  } d d d d d d d d d g	 } x‹ t d d ƒ D]z } xq t d d ƒ D]` } | | d | | | | d d | | d | | d d | | d | | d | <qY WqC Wx+ t t | ƒ ƒ D] } | | |  i  | <qÔ Wd  S(   Ng      ð?i    i   i   i   i   (   R   R!   R"   (   R   R#   R%   R$   R&   R'   R(   (    (    s   bin/linear2D.pyt   premulti   s    		!  b c         C   s   t  | ƒ } |  i | ƒ d  S(   N(   t   rotationMatrix2DR)   (   R   t   radt   m(    (    s   bin/linear2D.pyt   rotatex   s    c         C   s    t  | | ƒ } |  i | ƒ d  S(   N(   t   translationMatrix2DR)   (   R   R	   R
   R-   (    (    s   bin/linear2D.pyt	   translate|   s    c         C   s£   d } xŒ t  d d ƒ D]{ } xW t  d d ƒ D]F } | d |  i | d | } | d | d j o | d } q, q, W| d j o | d } q q W| d	 } | S(
   Ns   [ i    i   s   %fi   s   , i   s   
s    ](   R!   R   (   R   t   rstringR'   R(   (    (    s   bin/linear2D.pyR   €   s      
(
   R   R   R   R   R    R)   R*   R.   R0   R   (    (    (    s   bin/linear2D.pyR   ?   s   								R+   c           B   s   e  Z d  „  Z RS(   c         C   s`   t  i |  ƒ t | ƒ |  i d <t | ƒ |  i d <|  i d |  i d <|  i d |  i d <d  S(   Ni    i   i   i   (   R   R   R   R   R   (   R   R,   (    (    s   bin/linear2D.pyR   Ž   s
    (   R   R   R   (    (    (    s   bin/linear2D.pyR+      s   R/   c           B   s   e  Z d  „  Z RS(   c         C   s+   t  i |  ƒ | |  i d <| |  i d <d  S(   Ni   i   (   R   R   R   (   R   R	   R
   (    (    s   bin/linear2D.pyR   —   s    (   R   R   R   (    (    (    s   bin/linear2D.pyR/   –   s   t   __main__i    i   i<   i´   iÄÿÿÿN(    (    (    (   t   mathR    R   R   R   R   R   R   R   R   R+   R/   R   R#   t   invmatR   R0   R.   R   t   p1t   p2(    (    (    s   bin/linear2D.pys   <module>   s   . N			