
    0-Ph                     z    d dl Zd dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d Zd Zd Zd Zdd
Zd Zd Zd Zd ZdS )    N)assert_allclose)	ellipsoidellipsoid_stats)marching_cubesmesh_surface_areac                  H   t          dddd          } t          ddd          \  }}t          | dd          d d	         \  }}t          ||          }||k    r	||d
z  k    sJ t          | d          d d	         \  }}t          ||          }||k    r	||d
z  k    sJ d S )N   
      Tlevelset        lorensenmethod   gGz?)r   r   r   r   )ellipsoid_isotropic_surfvertsfaces	surf_calcs         i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/measure/tests/test_marching_cubes.pytest_marching_cubes_isotropicr   	   s    #Ar2===aR((GAt ""5s:NNNrPQrRLE5!%//I)	D4K 7 7 7 7 ""5s;;BQB?LE5!%//I)	D4K 7 7 7 7 7 7    c            	      d   t          j        g d          } t          ddd| d          }t          ddd          \  }}t	          |d| d	          d d
         \  }}t          ||          }||k    r	||dz  k    sJ t	          |d|           d d
         \  }}t          ||          }||k    r	||dz  k    sJ t          j        t                    5  t	          |d| t          j        g                     d d
         \  }}d d d            n# 1 swxY w Y   t	          |d| d           d S )N)g      ?g?gUUUUUU@r	   r
   r   T)spacingr   r   r   r   r   r   gQ?r   )r   maskr   F)r   allow_degenerate)	nparrayr   r   r   r   pytestraises
ValueError)r   ellipsoid_anisotropicr   r   r   r   r   s          r   test_marching_cubes_anisotropicr(      s   h00011G%aR4PPPaR((GAt "sGJ  qb
LE5 "%//I)	D5L 8 8 8 8 ""7gNNNrPQrRLE5!%//I)	D5L 8 8 8 8 
z	"	"  %!3bhrll
 
 

1"u               (!WuUUUUUUs   1DDDc                     t          j        t                    5  t          t	          j        d          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d	          dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          dd
           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d	          d           d d d            n# 1 swxY w Y   t          dddd          } t          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )N)r   r      r   r   r   r*   )   r+   r+   )r*   r   r   )   r,   r   r	   r
   r   Tr   r   abcd)r$   r%   r&   r   r"   zerosonesr   )r   s    r   test_invalid_inputr0   8   s   	z	"	" B Brx	**AjAAAAB B B B B B B B B B B B B B B	z	"	" B Brx	**AjAAAAB B B B B B B B B B B B B B B	z	"	" Q Qrwy))1fZPPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q	z	"	" A Arx))1Z@@@@A A A A A A A A A A A A A A A 
z	"	" / /rx	**A.../ / / / / / / / / / / / / / /	z	"	" / /rx	**A.../ / / / / / / / / / / / / / /	z	"	" > >rwy))1f====> > > > > > > > > > > > > > >	z	"	" . .rx))1---. . . . . . . . . . . . . . . $Ar2===	z	"	" @ @*C????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   %AAA/%B  B$'B$&C66C:=C:%EEE/#FF"%F"#G11G58G5%II
I
*#JJ JK00K47K4c                      t          dddd          } t          | dd          d d         \  }}t          | ddd	          d d         \  }}t          ||||          sJ d S )
Nr*   Tr   r   F)r!   r   r   )r!   r   )r   r   
_same_mesh)sphere_small	vertices1faces1	vertices2faces2s        r   "test_both_algs_same_result_ellipser8   S   s     Q1t444L&|QOOOPRQRPRSIv&a%
  qb
Iv iF;;;;;;;r   绽|=c                    | t          j        |                   }|t          j        |                   }d |D             }d |D             }t          j        t          d |D                                 }t          j        t          d |D                                 }|j        |j        k    ot          j        ||d|          S )z_Compare two meshes, using a certain tolerance and invariant to
    the order of the faces.
    c                 V    g | ]&}t          j        t          |d                      'S )c                      t          |           S Ntuplexs    r   <lambda>z'_same_mesh.<locals>.<listcomp>.<lambda>j       eAhh r   keyr"   concatenatesorted.0ts     r   
<listcomp>z_same_mesh.<locals>.<listcomp>j   3    UUUQr~fQ,>,>???@@UUUr   c                 V    g | ]&}t          j        t          |d                      'S )c                      t          |           S r=   r>   r@   s    r   rB   z'_same_mesh.<locals>.<listcomp>.<lambda>k   rC   r   rD   rF   rI   s     r   rL   z_same_mesh.<locals>.<listcomp>k   rM   r   c                 ,    g | ]}t          |          S  r>   rJ   rA   s     r   rL   z_same_mesh.<locals>.<listcomp>m       999AuQxx999r   c                 ,    g | ]}t          |          S rQ   r>   rR   s     r   rL   z_same_mesh.<locals>.<listcomp>n   rS   r   r   )r"   r#   rH   shapeallclose)	r4   r5   r6   r7   tol
triangles1
triangles2triang1triang2s	            r   r2   r2   b   s    
 28F++,J28F++,JUU*UUUGUU*UUUGhv99999::;;Ghv99999::;;G=GM)Sbk'7As.S.SSr   c            	         d} d| z  d}}t          j        | | | fd          }t          |j        d                   D ]l}t          |j        d                   D ]M}t          |j        d                   D ].}t	          |          |z  |z   t	          |          |z  |z   t	          |          |z  |z   }	}}d|	z  dz  d|z  dz
  dz  z   d|z  dz  z   d	z   d
z
  d|	z  dz  d|z  dz
  dz  z   d|z  dz  z   d	z   d
z
  z  dd|	z  dz  d|z  dz
  dz  z   z  z
  d|	z  dz  d|z  dz
  dz   d|z  dz
  dz   z  z   d|z  dz  z   d	z   d
z
  d|	z  dz  d|z  dz
  dz   d|z  dz
  dz   z  z   d|z  dz  z   d	z   d
z
  z  dd|z  dz
  dz   d|z  dz
  dz   z  d|z  dz  z   z  z
  z  dz   ||||f<   0Ont          |dd          d d         \  }
}t          |d          d d         \  }}t          |
|||          rJ d S )N0   g      @g      float32r   r*   r      r   gzGa@@      i  r   r   )r"   emptyrangerU   floatr   r2   )nabvoliziyixzyrA   r4   r5   r6   r7   s                 r    test_both_algs_same_result_donutrn   r   s   
A7EqA
(Aq!9i
(
(CCIaL!!  	!%% 	 	BCIaL))  ))a-!+U2YY]Q->b		APQ@Qa1!e\QUQY1$44A!|CbH;VQ1q519*+q5Q,'  &	& QUqLAEAI!+;;<= Q1EAI?A	Q?@q5Q,'  &	& Q1EAI?A	Q?@q5Q,'  &	& a!eai1_!a%!)qAQUqLPQR#4 5#BBJ	@ 'sAjAAA"1"EIv&sA..rr2Iv )VY???????r   c                     t          dddd          } t          j        | t                    }d|d dd d d d f<   d|d d d d dd f<   t	          | d	|
          \  }}}}t          ||          }t          |dd           d S )Nr	   r
   r   Tr   dtypeFr,   r   r    g   r@g{Gz?rtol)r   r"   	ones_likeboolr   r   r   )ellipsoid_scalarr    verr   r   areas         r   test_masked_marching_cubesrz      s     BT:::<(555DD"aaaODAAArssO%&6EEEC1S%((DD,4888888r   c                      t          dddd          } t          j        g           }t          j        t
                    5  t          | d|          }d d d            d S # 1 swxY w Y   d S )Nr	   r
   r   Tr   r   rr   )r   r"   r#   r$   r%   r&   r   )rw   r    r   s      r    test_masked_marching_cubes_emptyr|      s     BT:::8B<<D	z	"	" ; ;+QT:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   A!!A%(A%c                     t          dddd          } t          j        | t                    }t	          | d|          \  }}}}t	          | d|          \  }}}}t          ||d	
           t          ||d	
           d S )Nr	   r
   r   Tr   rp   r   rr   gh㈵>rs   )r   r"   ru   rv   r   r   )rw   r    ver_mfaces_mr   rx   r   s          r   #test_masked_marching_cubes_all_truer      s     BT:::<(555D)*:ADIIIE7Aq%&6EEEC1E3W----GU111111r   )r9   )numpyr"   r$   numpy.testingr   skimage.drawr   r   skimage.measurer   r   r   r(   r0   r8   r2   rn   rz   r|   r   rQ   r   r   <module>r      s         ) ) ) ) ) ) 3 3 3 3 3 3 3 3 = = = = = = = =8 8 8"V V V<@ @ @6< < <T T T T +@ +@ +@\9 9 9; ; ;2 2 2 2 2r   