ó
¡¼™\c           @   s<  d  d l  m Z m Z m Z m Z m Z d  d l m Z m Z m	 Z	 m
 Z
 m Z m Z d  d l m Z m Z m Z d  d l m Z d  d l m Z m Z m Z d  d l m Z m Z d  d l Z d  d l 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 S(   iÿÿÿÿ(   t   It   Rationalt   Symbolt   pit   sqrt(   t   Linet   Pointt   Point2Dt   Point3Dt   Line3Dt   Plane(   t   rotatet   scalet	   translate(   t   Matrix(   t   subsetst   permutationst   cartes(   t   raisest   warnsNc       
      su	  t  d d t ƒ}  t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t d d	 ƒ } t | | ƒ } t | | ƒ } t d
 d
 ƒ ‰ t d d ƒ }	 t d
 d ƒ }
 t t d d
 ƒ d d ƒ‰  | | k só t ‚ | | k st ‚ | j | k st ‚ ˆ |	 |	 k s0t ‚ | | t | | | | ƒ k sWt ‚ |	 d t d d ƒ k svt ‚ | t | | ƒ k s”t ‚ t t d „  ƒ t t d „  ƒ t t d „  ƒ t d t	 d ƒ ƒ t t d d ƒ t	 d ƒ ƒ k sýt ‚ t j
 ˆ |	 ƒ t | | ƒ k s$t ‚ t j
 | |	 ƒ t | | | | | | ƒ k s[t ‚ t j
 | | ƒ | k syt ‚ | j
 | ƒ | k s”t ‚ t j ˆ |	 ƒ t	 d	 ƒ k s¸t ‚ t j | | ƒ d
 k sÖt ‚ t j ˆ | ƒ t	 | j d	 | j d	 ƒ k st ‚ | j ˆ  ƒ ˆ  j | ƒ k s0t ‚ |	 j ˆ  ƒ ˆ  j |	 ƒ k sTt ‚ t j |	 ˆ ƒ d	 k srt ‚ t j |	 |
 ƒ d k st ‚ t | | ƒ ‰ t | | ƒ } t | d | ƒ } t j ˆ ƒ sÖt ‚ t t ƒ ) t j ˆ t ˆ d d ƒƒ st ‚ Wd  QXˆ j ƒ  st ‚ t j ˆ |	 ƒ s7t ‚ t j ˆ |	 ˆ | ƒ sUt ‚ t j ˆ |	 ˆ | ƒ t k syt ‚ t j ˆ ˆ |	 |
 ƒ t k st ‚ t t ‡  f d †  ƒ t t ‡  ‡ f d †  ƒ ˆ j t d
 d
 ƒ ƒ ˆ g k sót ‚ ˆ j |	 ƒ g  k st ‚ t  d d t d t ƒ} t | d
 ƒ } t d
 | ƒ } t | d
 ƒ } t d
 | ƒ } t | d ƒ } t j | ƒ sˆt ‚ t j | | ƒ s t ‚ t j | | | | ƒ s¾t ‚ x; t | | | | f ƒ D]! } t j | Œ  t k s×t ‚ q×Wt j |	 |	 d	 |	 d ƒ t k s%t ‚ t d
 d
 ƒ j d  d! d" ƒ t k sOt ‚ |	 j d	 d ƒ t d	 d ƒ k svt ‚ ˆ j d	 d ƒ ˆ k s”t ‚ |	 j t t d d ƒ ƒ ˆ k s»t ‚ | j | ƒ | j
 | ƒ j d	 d	 ƒ k sët ‚ ˆ j |	 ƒ ˆ j
 |	 ƒ j d	 d	 ƒ k st ‚ |	 d t d d ƒ k s;t ‚ |	 d t d d ƒ k sZt ‚ t t d „  ƒ t |  |  d | ƒ t |  d	 |  | d ƒ t d
 d ƒ k s¯t ‚ t d d	 ƒ t d d ƒ } } t | | ƒ j d	 ƒ t | j d	 ƒ | j d	 ƒ ƒ k st ‚ t t d „  ƒ t d d
 ƒ ‰ ˆ j t d	 ƒ t d
 d ƒ k sTt ‚ ˆ j t d	 ˆ ƒ ˆ k svt ‚ t d d ƒ ‰ ˆ j d	 d ƒ t d	 d ƒ k s¬t ‚ ˆ j d d	 ƒ t d	 d ƒ k sÓt ‚ ˆ j d ƒ t d	 d ƒ k s÷t ‚ ˆ j d d ƒ t d d	 ƒ k s	t ‚ ˆ j ˆ j Œ  t d	 d	 ƒ k sE	t ‚ t t ‡ f d †  ƒ t t ‡ f d †  ƒ d  S(#   Nt   xt   realt   yt   x1t   x2t   y1t   y2i   i   i    t   slopei   c           S   s   t  d t ƒ S(   Ni   (   R   R    (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   <lambda>"   t    c           S   s   t  d t t ƒ S(   Ni   (   R   R    (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   #   R   c           S   s   t  d t t ƒ S(   Ni   (   R   R    (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   $   R   gfffffA@i   i©  i   t   dimi   c              s   t  j ˆ  ƒ S(   N(   R   t   is_collinear(    (   t   line(    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   E   R   c              s   ˆ j  ˆ  ƒ S(   N(   R   (    (   R    t   p1_1(    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   F   R   t   positiveg      à?gš™™™™™É?c           S   s   t  d d ƒ d S(   Ni    i
   (   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   c   R   iÿÿÿÿc           S   s   t  d d ƒ d S(   Ni   i   (   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   k   R   c              s   ˆ  j  ˆ  ƒ S(   N(   t	   transform(    (   t   p3(    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   y   R   c              s%   ˆ  j  t d d g d d g g ƒ ƒ S(   Ni   i    (   R#   R   (    (   t   p(    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   z   R   (   i   i   (   i   i   (   i   i   (    R   t   TrueR   R   R   t   AssertionErrorR   R   t
   ValueErrorR   t   midpointt   distanceR   t   taxicab_distancet   canberra_distanceR   R   t   UserWarningt   Falset	   TypeErrort   intersectiont   is_concyclicR   R   R   R   t   __radd__t   __rsub__t   evalft   nR   t   args(   R   R   R   R   R   R   t   halft   p1t   p2t   p4t   p5t   p1_2t   p1_3t   x_post   p2_1t   p2_2t   p2_3t   p2_4t   p2_5t   ptst   at   b(    (   R    R%   R!   R$   s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt
   test_point   s®    '9'7$6$$*$$')*''01E*("''$''c             só
  t  d d t ƒ‰ t  d d t ƒ}  t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t  d d t ƒ} t  d	 d t ƒ} t d
 d ƒ } t | | | ƒ } t | | | ƒ }	 t d d d ƒ }
 t d
 d
 d
 ƒ } t d d
 d ƒ } | | k st ‚ | |	 k st ‚ |	 j | k s2t ‚ |
 | | k sHt ‚ |	 | t | | | | | | ƒ k svt ‚ | d t d d d ƒ k s˜t ‚ |	 t | | | ƒ k sºt ‚ t d t d ƒ ƒ t t d d ƒ t d ƒ ƒ k sót ‚ t j |
 | ƒ t | | | ƒ k st ‚ t j | | ƒ t | | | | | | | | | ƒ k s_t ‚ t j |	 |	 ƒ |	 k s}t ‚ |	 j |	 ƒ |	 k s˜t ‚ t j	 |
 | ƒ t d ƒ k s¼t ‚ t j	 | | ƒ d k sÚt ‚ t j	 |
 |	 ƒ t |	 j
 d |	 j d |	 j d ƒ k st ‚ t | | | ƒ } t | | | ƒ } t | d
 | | ƒ } t j |
 ƒ t j |
 | ƒ szt ‚ t j |
 | | | ƒ s˜t ‚ t j |
 | | | ƒ t k s¼t ‚ t j |
 |
 | | ƒ t k sàt ‚ |
 j t d d d ƒ ƒ |
 g k s
t ‚ |
 j | ƒ g  k s%t ‚ | d t d d d ƒ k sGt ‚ | d t d d d ƒ k sit ‚ t t d „  ƒ t ˆ ˆ d
 |  d ƒ t ˆ d ˆ |  d
 d
 ƒ t d d d
 ƒ k sÇt ‚ t d
 d ƒ t d
 d ƒ } } t | | ƒ j d ƒ t | j d ƒ | j d ƒ ƒ k s%t ‚ t t d „  ƒ t d
 d
 d
 ƒ ‰  ˆ  j d d ƒ t d d d
 ƒ k sqt ‚ ˆ  j d
 d ƒ t d d d
 ƒ k s›t ‚ ˆ  j d
 ƒ t d d
 d
 ƒ k sÂt ‚ ˆ  j d d
 ƒ t d
 d
 d ƒ k sìt ‚ ˆ  j ˆ  j Œ  t d d d ƒ k st ‚ t d d d t d d ƒj d j sAt ‚ ˆ  j d k sVt ‚ | j d k skt ‚ | j d k s€t ‚ t t ‡  ‡ f d †  ƒ t j ƒ  s«t ‚ t j d  d! d" ƒ sÆt ‚ t j d# d$ ƒ sÞt ‚ t t ƒ  t t d „  ƒ Wd  QXt j d% d& ƒ st ‚ t j d' d( d) d* ƒ t k s=t ‚ t d
 d d
 ƒ } t d d
 d
 ƒ } t j ˆ  | | ƒ t k s‚t ‚ t j ˆ  | | |
 ƒ t k s¦t ‚ t j ˆ  | ƒ s¾t ‚ t d
 d
 d ƒ } t d
 d
 d ƒ } t j ˆ  | | ƒ sýt ‚ t d+ d, d- ƒ } t j g  t d ƒ D] } | j d | | f ƒ ^ q"Œ  sPt ‚ t j t ˆ |  ƒ t ˆ ˆ |  ƒ t |  ˆ d ƒ ƒ t k s”t ‚ | j t ˆ  | ƒ ƒ t d
 d
 d ƒ g k sÇt ‚ | j d
 d
 d
 ƒ | k sèt ‚ | j d d d | ƒ t d
 d
 d
 ƒ k s	t ‚ | j d
 d
 d
 |
 ƒ | k s<	t ‚ t  d
 d d d g d d
 d d g d d d
 d g d d d d
 g g ƒ } ˆ  j! | ƒ ˆ  k sŸ	t ‚ t  d
 d d d
 g d d
 d d
 g d d d
 d
 g d d d d
 g g ƒ } ˆ  j! | ƒ t d d d ƒ k s
t ‚ t t ‡  f d †  ƒ t t ‡  f d †  ƒ ˆ  j" | ƒ t k sU
t ‚ t d d d d
 ƒ } t t ƒ * ˆ  | t d
 d
 d
 d ƒ k sœ
t ‚ Wd  QXt d d d
 d ƒ } t t ƒ * ˆ  | t d
 d
 d d ƒ k sé
t ‚ Wd  QXd  S(.   NR   R   R   R   R   t   x3R   R   t   y3i   i   i    i   gfffffA@i   i©  i   gš™™™™™É?c           S   s   t  d d d ƒ d S(   Ni    i
   (   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   °   R   iÿÿÿÿc           S   s   t  d d ƒ d S(   Ni   i   (   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   ¹   R   t   zgš™™™™™¹?t   evaluatet   on_morpht   ignorec              s   t  j ˆ  ˆ ƒ S(   N(   R   t   are_collinear(    (   R%   R   (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   Í   R   c           S   s   t  j d d ƒ S(   Ni   i   i   (   i   i   (   i   i   i   (   R   t   are_coplanar(    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   Ô   R   i   c              s   ˆ  j  ˆ  ƒ S(   N(   R#   (    (   R%   (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   ò   R   c              s%   ˆ  j  t d d g d d g g ƒ ƒ S(   Ni   i    (   R#   R   (    (   R%   (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   ó   R   (   i   i   i    (   i   i   i    (   i   i   i    (   i   i   i    (   i   i   i   (   i   i   i    (   i   i   i   (   i    i    i    (   i   i   i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i    (   i   i   i   (#   R   R&   R   R   R'   R   R   R   R)   R*   R   RJ   RN   R.   R0   R   R(   R4   R5   R   R   R6   t   is_Floatt   lengthR/   RO   R   R-   R
   t   ranget
   projectionR	   R   R#   t   equals(   R   R   R   RH   R   R   RI   R7   R8   R9   R$   R:   R;   R!   R<   R=   RE   RF   t   planar2t   planar3t   planet   it   identityt   transt   p_4dt   p_4d3d(    (   R%   R   s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_point3D}   s¾    .""9*($A$$*""3***'**+$!$AD3!0$HH'+c          C   sr   t  d d ƒ }  t  d d ƒ } d
 } |  j | ƒ t d ƒ d k sI t ‚ | j | ƒ t d	 ƒ d k sn t ‚ d  S(   Ni   i   i   g      @i   i   i=   i   i   (   i   i   (   R   R*   R   R'   (   R8   R9   R$   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_Point2D  s
    %c          C   s[   t  d d d ƒ }  t  d d d ƒ } t  d d d ƒ } t  j |  | | ƒ t k sW t ‚ d  S(   Ni   iþÿÿÿi   i   i   i   i   (   R   RN   R.   R'   (   R8   R9   R$   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_issue_9214  s    c          C   sY   t  d d d ƒ }  t d d ƒ } t t ƒ & |  j | ƒ t d ƒ k sO t ‚ Wd  QXd  S(   Ni   i    i   i   (   R   R   R   R-   R*   R   R'   (   R8   R9   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_issue_11617  s    c          C   sþ   t  d d ƒ }  |  j t t d ƒ ƒ t  d d ƒ k s= t ‚ |  j t d d ƒ ƒ t  d d ƒ k sj t ‚ |  j t d d ƒ ƒ t  d d ƒ k s— t ‚ t  d d ƒ j d d d
 ƒ t  d d ƒ k sÊ t ‚ t  d d ƒ j d d ƒ t  d d	 ƒ k sú t ‚ d  S(   Ni   i   iÿÿÿÿi   i   i   iþÿÿÿiùÿÿÿi   (   i   i   (   R   R#   R   R   R'   R   R   (   R%   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_transform  s    .--c          C   s|   t  d d ƒ t  d d ƒ }  } t  d d ƒ t  d d ƒ } } t  j |  | | ƒ sY t ‚ t  j |  | | | ƒ sx t ‚ d  S(   Niÿÿÿÿi    i   i   (   R   R1   R'   (   R8   R9   R$   R:   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_concyclic_doctest_bug&  s    c       	   C   s  d d d g t  d d ƒ f }  d d d g t  d d ƒ f } t |  | ƒ } t d d ƒ } d  d d d g t  d d d ƒ f } t | d ƒ } t d d d ƒ } d! d d d d g t  d d d d ƒ f } t | d ƒ } t  d d d d ƒ }	 d d d d d	 d
 d d d g	 }
 d d g } x |  D] } t | ƒ q!Wx2 |
 D]* } x! |  D] } t | | ƒ | ƒ qIWq<Wx2 | D]* } x! | D] } t | | ƒ | Œ  q~WqqWd g } x | D] } t | ƒ q¯Wx2 |
 D]* } x! | D] } t | | ƒ | ƒ q×WqÊWx2 | D]* } x! | D] } t | | ƒ | Œ  qWqÿWd g } x | D] } t  | ƒ q=Wx2 |
 D]* } x! | D] } t |	 | ƒ | ƒ qeWqXWx2 | D]* } x! | D] } t |	 | ƒ | Œ  qšWqWt d ƒ } t  d d ƒ } | d | f t  d d | ƒ k sÿt ‚ t  d d ƒ } | d t  d d ƒ k s-t ‚ t  d d ƒ } | d t  d d ƒ k s[t ‚ t  d d d t ƒ} t  | d d d d ƒ} | j	 d" k st ‚ t
 d „  | j	 d  Dƒ ƒ sÀt ‚ t
 d „  t  | ƒ j	 Dƒ ƒ såt ‚ t  d d d d ƒ s t ‚ d S(#   s‡   Functions accepting `Point` objects in `geometry`
    should also accept tuples and lists and
    automatically convert them to points.i   i   i   i   R*   t   is_scalar_multipleR+   R)   R0   t   dotRT   t   __add__t   __sub__R1   R   R   i    gš™™™™™¹?g      $@g        gš™™™™™É?RK   R   RL   RM   c         s   s   |  ] } | j  Vq d  S(   N(   RP   (   t   .0RX   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pys	   <genexpr>l  s    c         s   s   |  ] } | j  Vq d  S(   N(   RP   (   Rg   RX   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pys	   <genexpr>n  s    t   errorN(   i   i   (   i   i   (   i   i   i   (   i   i   i   i   (   gš™™™™™¹?gš™™™™™É?i    i    (   R   R   R   R   R   t   getattrR   R'   R.   R6   t   all(   t	   singles2dt
   singles2d2t	   doubles2dt   p2dt	   singles3dt	   doubles3dt   p3dt	   singles4dt	   doubles4dt   p4dt   test_singlet   test_doubleR%   t   funcR   RE   t   ut   u4(    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_arguments-  sf    $*!		)#%c           C   s?   t  d d ƒ j t  t d ƒ d t d ƒ d ƒ k s; t ‚ d  S(   Ni   i   (   R   t   unitR   R'   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt	   test_unitt  s    c           C   s   t  t d „  ƒ d  S(   Nc           S   s   t  d d ƒ j t d d ƒ ƒ S(   Ni   i   i    (   i    i    (   i   i   (   R   Rd   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyR   y  R   (   R   R/   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_dotx  s    c           C   s£   t  j t  d d ƒ t  d d ƒ ƒ t  d d ƒ t  d d ƒ g k sH t ‚ t  j t  d d ƒ t  d d d ƒ d d ƒt  d d d ƒ t  d d d ƒ g k sŸ t ‚ d  S(   Ni   i   i   i   i    RL   RM   (   R   t   _normalize_dimensionR'   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test__normalize_dimension|  s
    !'$c          C   sî  t  d d d ƒ }  t  d d d ƒ } |  j t  d d d ƒ ƒ d d d g k sT t ‚ |  j t  d d d ƒ ƒ d d d g k s„ t ‚ |  j t  d d t ƒ ƒ d d d g k s´ t ‚ |  j t  d d d ƒ ƒ d d d g k sä t ‚ |  j t  d t d ƒ d ƒ ƒ d d d g k st ‚ |  j t  d d d ƒ ƒ d d d g k sJt ‚ |  j t  d d d ƒ ƒ t d ƒ d t d ƒ d d g k sŽt ‚ |  j t  d d d ƒ ƒ t d ƒ d t d ƒ d t d ƒ d g k sÜt ‚ |  j t  d d ƒ ƒ d	 t d
 ƒ d
 d t d
 ƒ d
 d g k s%t ‚ | j t  d d d ƒ ƒ t d ƒ d t d ƒ d t d ƒ d g k svt ‚ | j t  d d d ƒ ƒ d d d g k s¦t ‚ | j t  d d d ƒ ƒ t d ƒ d d t d ƒ d g k sêt ‚ d  S(   Ni    i   i   i   g333333@i   iôÿÿÿi   iüÿÿÿi)   iûÿÿÿi   iñÿÿÿ(   R   t   direction_cosineR'   R   R   (   R8   R9   (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   test_direction_cosine„  s    000060DNIQ0((   t   sympyR    R   R   R   R   t   sympy.geometryR   R   R   R   R	   R
   t   sympy.geometry.entityR   R   R   t   sympy.matricesR   t   sympy.utilities.iterablesR   R   R   t   sympy.utilities.pytestR   R   t	   tracebackt   sysRG   R]   R^   R_   R`   Ra   Rb   Rz   R|   R}   R   R   (    (    (    s>   lib/python2.7/site-packages/sympy/geometry/tests/test_point.pyt   <module>   s&   (.	q	„	
					G			