ó
 ‰\c           @   sª   d  d l  Z d  d l m Z m Z d  d l m Z m Z m Z m	 Z	 d  d l
 m Z d  d l m Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d d „ Z d „  Z d S(   iÿÿÿÿN(   t	   ellipsoidt   ellipsoid_stats(   t   marching_cubes_classict   marching_cubes_lewinert   mesh_surface_areat   correct_mesh_orientation(   t   testing(   t   assert_array_equalc          C   sÄ   t  d d d d t ƒ}  t d d d ƒ \ } } t |  d ƒ \ } } t | | ƒ } | | k rp | | d k sv t ‚ t |  d ƒ d  \ } } t | | ƒ } | | k rº | | d k sÀ t ‚ d  S(   Ni   i
   i   t   levelsetg        g®Gáz®ï?i   (   R    t   TrueR   R   R   t   AssertionErrorR   (   t   ellipsoid_isotropict   _t   surft   vertst   facest	   surf_calc(    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   test_marching_cubes_isotropic	   s    "c          C   s  t  j d d d d d g ƒ }  t d d d d |  d t ƒ} t d d d ƒ \ } } t | d d |  ƒ\ } } t | | ƒ } | | k rœ | | d	 k s¢ t ‚ t | d d |  ƒd
  \ } } t | | ƒ } | | k rì | | d	 k sò t ‚ t | d d |  d t	 ƒd  S(   Ng      ð?i
   g      @i   i   t   spacingR   g        g…ëQ¸…ï?i   i    t   allow_degenerate(
   t   npt   arrayR    R	   R   R   R   R
   R   t   False(   R   t   ellipsoid_anisotropicR   R   R   R   R   (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   test_marching_cubes_anisotropic   s     	""c           C   sp  t  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ ! t t j d	 ƒ d d d
 ƒWd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ ! t t j d ƒ d d d ƒWd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXd  S(   Ni   i   i    i   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   (   R   t   raisest
   ValueErrorR   R   t   zerost   onesR   (    (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   test_invalid_input4   s"    "c          C   s}  t  d d d d t ƒ}  t j d d d g d d d g d d d g d d d g d d d g d d d g g ƒ } t j d d d g d d d g d d d	 g d	 d d g d d d
 g d d d
 g d d	 d
 g d
 d	 d g g ƒ } t |  | | d d ƒ} t |  | | d d ƒ} t | | d  d  … d  d  d … f ƒ d d	 d
 g } | j ƒ  } | | d  d  d … f | | <t | | ƒ d  S(   Ni   R   g      ð?g       @g      @i    i   i   i   i   t   gradient_directiont   descentt   ascentiÿÿÿÿ(   R    R	   R   R   R   R   t   copy(   t   sphere_smallR   R   t   corrected_faces1t   corrected_faces2t   idxt   expected(    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   test_correct_mesh_orientationK   s0    		&c          C   s¯   t  d d d d t ƒ}  t |  d ƒ d  \ } } t |  d d t ƒd  \ } } t |  d d t d t ƒd  \ } } t | | | | ƒ s t ‚ t | | | | ƒ s« t ‚ d  S(   Ni   R   i    i   R   t   use_classic(   R    R	   R   R   R   t
   _same_meshR
   (   R"   t	   vertices1t   faces1t	   vertices2t   faces2t	   vertices3t   faces3(    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt"   test_both_algs_same_result_ellipsep   s    "g»½×Ùß|Û=c         C   s  |  t  j | ƒ } | t  j | ƒ } g  | D]$ } t  j t | d d „  ƒƒ ^ q- } g  | D]$ } t  j t | d d „  ƒƒ ^ q^ }	 t  j t g  | D] }
 t |
 ƒ ^ q˜ ƒ ƒ } t  j t g  |	 D] }
 t |
 ƒ ^ qÆ ƒ ƒ }	 | j |	 j k ot  j | |	 d | ƒ S(   s`    Compare two meshes, using a certain tolerance and invariant to
    the order of the faces.
    t   keyc         S   s
   t  |  ƒ S(   N(   t   tuple(   t   x(    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   <lambda>ˆ   s    c         S   s
   t  |  ƒ S(   N(   R2   (   R3   (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyR4   Š   s    i    (   R   R   t   concatenatet   sortedR2   t   shapet   allclose(   R*   R+   R,   R-   t   tolt
   triangles1t
   triangles2t   tt   triang1t   triang2R3   (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyR)   €   s    ....c       	   C   sš  d }  d |  d } } t  j |  |  |  f d ƒ } xØt | j d ƒ D]Ã} xºt | j d ƒ D]¥} xœt | j d ƒ D]‡} t | ƒ | | t | ƒ | | t | ƒ | | } } }	 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 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 <qz Wq` WqF Wt | d ƒ d  \ }
 } t | d ƒ d  \ } } t | d d t ƒd  \ } } t |
 | | | ƒ szt	 ‚ t | | | | ƒ s–t	 ‚ d  S(   Ni0   g      @g      ô¿t   float32i    i   i   i   i   gš™™™™™ý?i@   i   i  R(   gâz®Ga@gâz®Ga@gâz®Ga@gâz®Ga@(
   R   t   emptyt   rangeR7   t   floatR   R   R	   R)   R
   (   t   nt   at   bt   volt   izt   iyt   ixt   zt   yR3   R*   R+   R,   R-   R.   R/   (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt    test_both_algs_same_result_donut“   s$    >/P?@1 (   t   numpyR   t   skimage.drawR    R   t   skimage.measureR   R   R   R   t   skimage._sharedR   t   skimage._shared.testingR   R   R   R   R'   R0   R)   RL   (    (    (    sH   lib/python2.7/site-packages/skimage/measure/tests/test_marching_cubes.pyt   <module>   s   "				%	