ó
õ™xTc           @   s„   d  d l  m Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z e d k r€ e ƒ  n  d S(   iÿÿÿÿ(   t   divisionc         C   s_   d } d | | } |  | ƒ \ } } t  | ƒ | k  s> t ‚ t  | ƒ | k  sV t ‚ d GHd  S(   NgH¯¼šò×z>g      ð?t   OK(   t   abst   AssertionError(   t   intersectiont
   wavelengtht   origint   epst   st   xt   y(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_intersection_at_origin   s    c         C   sò  d d l  m } d } | j | j ƒ  ƒ } | j | j ƒ  ƒ } | j | j ƒ  ƒ } | j ƒ  } d | | }	 d | | | | d }
 d | | | | d } d | | | | d | | d } |  |	 ƒ \ } } |  |
 ƒ \ } } |  | ƒ \ } } |  | ƒ \ } } t | d ƒ | k  r=t | d ƒ | k  sCt ‚ t | | d ƒ | k  rst | d ƒ | k  syt ‚ t | d ƒ | k  r©t | | d ƒ | k  s¯t ‚ t | | d ƒ | k  rãt | | d ƒ | k  sét ‚ d GHd  S(   Niÿÿÿÿ(   t   matrixgH¯¼šò×z>g      ð?i    i   R   (	   t   scitbxR   t   colt
   get_origint   get_fast_axist   get_slow_axist   get_image_size_mmR   R   (   R   t   panelR   R   R   R   t	   fast_axist	   slow_axist
   image_sizet   s1t   s2t   s3t   s4t   x1t   y1t   x2t   y2t   x3t   y3t   x4t   y4(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_intersection_at_corners   s(    266:c         C   sf   d d l  m } d | | j | j ƒ  ƒ } y |  | ƒ Wn t k
 rU d GHd  SXt sb t ‚ d  S(   Niÿÿÿÿ(   R   g      ð?R   (   R   R   R   R   t   RuntimeErrort   FalseR   (   R   R   R   R   R   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt    tst_intersection_away_from_panel5   s    c       
      s  d d l  m }  d d l m } d } d } d } d } d } d } d } d }	 | j | ƒ j ƒ  | d d | d | j | ƒ j ƒ  | d d | d | | j | ƒ j ƒ  }
 |  d d | | |
 | | d ƒ ‰  ‡  f d †  } t | |	 |
 ƒ t | ˆ  |	 ƒ t | ˆ  |	 ƒ d  S(   Niÿÿÿÿ(   t   Panel(   R   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿g      ð?gÏöè÷î?gj¼t“Æ?gDàH Ášn@gêZ{Ÿjt@iç  ik  g6�Ã`þ‡^@gÈ˜»–�æ?i    i   t    c            s   ˆ  j  |  ƒ S(   N(   t   get_ray_intersection(   R	   (   R   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   <lambda>a   s    (   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿(   g      ð?g        g        (   g        g¤ü¤Ú§ãÕ¿gÏöè÷î?(   gj¼t“Æ?gj¼t“Æ?(   gDàH Ášn@gêZ{Ÿjt@(   iç  ik  (   i    i    (	   t   dxtbx.modelR'   R   R   R   t	   normalizeR   R#   R&   (   R'   R   R   R   t   normalt
   pixel_sizet   pixel_originR   t   distanceR   R   R   (    (   R   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_beam_plane_intersectionG   s$    Mc         C   s–   d } |  d ƒ \ } } } t  | | j ƒ  d ƒ | k  sA t ‚ t  | | j ƒ  d ƒ | k  sg t ‚ t  | | j ƒ  d ƒ | k  s� t ‚ d GHd  S(   NgH¯¼šò×z>i    i   i   R   (   i    i    (   R   R   R   (   t	   transformR   R   R	   R
   t   z(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_transform_at_originh   s    &&&c         C   s˜  d d l  m } d } | j | j ƒ  ƒ } | j | j ƒ  ƒ } | j | j ƒ  ƒ } | j ƒ  } | } | | | d }	 | | | d }
 | | | d | | d } | j |  d ƒ ƒ } | j |  | d d f ƒ ƒ } | j |  d | d f ƒ ƒ } | j |  | d | d f ƒ ƒ } t | | ƒ | k  s;t ‚ t | |	 ƒ | k  sWt ‚ t | |
 ƒ | k  sst ‚ t | | ƒ | k  s�t ‚ d GHd  S(   Niÿÿÿÿ(   R   gH¯¼šò×z>i    i   R   (   i    i    (	   R   R   R   R   R   R   R   R   R   (   R2   R   R   R   R   R   R   R   t   xyz1t   xyz2t   xyz3t   xyz4t   xyz11t   xyz22t   xyz33t   xyz44(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_transform_at_cornersw   s&    #c       
      s  d d l  m }  d d l m } d } d } d } d } d } d } d } d }	 | j | ƒ j ƒ  | d d | d | j | ƒ j ƒ  | d d | d | | j | ƒ j ƒ  }
 |  d d | | |
 | | d ƒ ‰  ‡  f d †  } t | ˆ  ƒ t | ˆ  ƒ d  S(   Niÿÿÿÿ(   R'   (   R   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿g      ð?gÏöè÷î?gj¼t“Æ?gDàH Ášn@gêZ{Ÿjt@iç  ik  g6�Ã`þ‡^@gÈ˜»–�æ?i    i   R(   c            s   ˆ  j  |  ƒ S(   N(   t   get_lab_coord(   R	   (   R   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyR*   °   s    (   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿(   g      ð?g        g        (   g        g¤ü¤Ú§ãÕ¿gÏöè÷î?(   gj¼t“Æ?gj¼t“Æ?(   gDàH Ášn@gêZ{Ÿjt@(   iç  ik  (   i    i    (   R+   R'   R   R   R   R,   R4   R=   (   R'   R   R   R   R-   R.   R/   R   R0   R   R   R2   (    (   R   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_plane_to_lab_transform–   s"    Mc            s¹   d d l  m } d d l m ‰ d } | j ƒ  ‰  ‡  ‡ f d †  } d } xc t | ƒ D]U } | j | ƒ  ƒ } | | ƒ }	 |  |	 ƒ }
 t | | j |
 ƒ ƒ | k  sW t ‚ qW Wd GHd  S(   Niÿÿÿÿ(   R   (   t   randomgH¯¼šò×z>c              s    ˆ ƒ  ˆ  d ˆ ƒ  ˆ  d f S(   Ni    i   (    (    (   R   R@   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyR*   ¾   s    iè  R   (   R   R   R@   R   t   rangeR   R   R   (   R   R2   R   R   R   t	   random_xyt   numt   it   xyR   t   xy_2(    (   R   R@   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   tst_fwd_rev_random¶   s    )c       
      s
  d d l  m }  d d l m } d } d } d } d } d } d } d } d }	 | j | ƒ j ƒ  | d d | d | j | ƒ j ƒ  | d d | d | | j | ƒ j ƒ  }
 |  d d | | |
 | | d ƒ ‰  ‡  f d †  } ‡  f d †  } t | | ˆ  ƒ d  S(   Niÿÿÿÿ(   R'   (   R   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿g      ð?gÏöè÷î?gj¼t“Æ?gDàH Ášn@gêZ{Ÿjt@iç  ik  g6�Ã`þ‡^@gÈ˜»–�æ?i    i   R(   c            s   ˆ  j  |  ƒ S(   N(   R)   (   R	   (   R   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyR*   ì   s    c            s   ˆ  j  |  ƒ S(   N(   R>   (   R	   (   R   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyR*   í   s    (   g        gÏöè÷î¿g¤ü¤Ú§ãÕ¿(   g      ð?g        g        (   g        g¤ü¤Ú§ãÕ¿gÏöè÷î?(   gj¼t“Æ?gj¼t“Æ?(   gDàH Ášn@gêZ{Ÿjt@(   iç  ik  (   i    i    (   R+   R'   R   R   R   R,   RG   (   R'   R   R   R   R-   R.   R/   R   R0   R   R   R   R2   (    (   R   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt!   tst_forward_and_reverse_transformÒ   s"    Mc           C   s   t  ƒ  t ƒ  t ƒ  d  S(   N(   R1   R?   RH   (    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   runò   s    t   __main__N(   t
   __future__R    R   R#   R&   R1   R4   R=   R?   RG   RH   RI   t   __name__(    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/dxtbx/tests/model/tst_ray_intersection.pyt   <module>   s   		!		!			 		 	