
    9i                     z    S SK rS SKrS SKJr  S SKJrJr  S SKJ	r	J
r
  S rS rS rS rSS	 jrS
 rS rS rS rg)    N)assert_allclose)	ellipsoidellipsoid_stats)marching_cubesmesh_surface_areac                      [        SSSSS9n [        SSS5      u  p[        U SSS9S S	 u  p4[        X45      nX%:  a  XRS
-  :  d   e[        U S5      S S	 u  p4[        X45      nX%:  a  XRS
-  :  d   eg )N   
      Tlevelset        lorensenmethod   gGz?)r   r   r   r   )ellipsoid_isotropic_surfvertsfaces	surf_calcs         i/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/measure/tests/test_marching_cubes.pytest_marching_cubes_isotropicr   	   s    #Ar2=aR(GA ""5s:NrPQRLE!%/I	4K 777 ""5s;BQ?LE!%/I	4K 777 7    c            	         [         R                  " / SQ5      n [        SSSU SS9n[        SSS5      u  p#[	        USU SS	9S S
 u  pE[        XE5      nX6:  a  XcS-  :  d   e[	        USU S9S S
 u  pE[        XE5      nX6:  a  XcS-  :  d   e[        R                  " [        5         [	        USU [         R                  " / 5      S9S S
 u  pES S S 5        [	        USU SS9  g ! , (       d  f       N= f)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   hh01G%aR4PaR(GA "sGJq
LE "%/I	5L 888 ""7gNrPQRLE!%/I	5L 888 
z	"%!3bhhrl

1 
# (!WuU 
#	"s   $&C
C-c                     [         R                  " [        5         [        [        R
                  " S5      SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      SSS9  S S S 5        [         R                  " [        5         [        [        R                  " S5      SSSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S	5      SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S5        S S S 5        [         R                  " [        5         [        [        R
                  " S5      S5        S S S 5        [         R                  " [        5         [        [        R                  " S5      SSS
9  S S S 5        [         R                  " [        5         [        [        R
                  " S	5      S5        S S S 5        [        SSSSS9n [         R                  " [        5         [        U SSS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNZ= f! , (       d  f       GN)= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)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	"rxx	*AjA 
#	z	"rxx	*AjA 
#	z	"rwwy)1fZP 
#	z	"rxx)1Z@ 
# 
z	"rxx	*A. 
#	z	"rxx	*A. 
#	z	"rwwy)1f= 
#	z	"rxx)1- 
# $Ar2=	z	"*C? 
#	"+ 
#	"	"	"	"	"	"	" 
#	"	"	"	"	"	"	"
 
#	"sk    I I"!I4" J$!J'!J** J<,!K;K
I"
I14
J
J
J'*
J9<
K

K
K,c                      [        SSSSS9n [        U SSS9S S u  p[        U SSSS	9S S u  p4[        XX45      (       d   eg )
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   sc     Q1t4L&|QOPRQRSI&a%
q
I i;;;;r   c           
         U [         R                  " U5         nU[         R                  " U5         nU Vs/ s H"  n[         R                  " [        US S95      PM$     nnU Vs/ s H"  n[         R                  " [        US S95      PM$     n	n[         R                  " [        U V
s/ s H  n
[	        U
5      PM     sn
5      5      n[         R                  " [        U	 V
s/ s H  n
[	        U
5      PM     sn
5      5      n	UR
                  U	R
                  :H  =(       a    [         R                  " XSU5      $ s  snf s  snf s  sn
f s  sn
f )zWCompare two meshes, using a certain tolerance and invariant to
the order of the faces.
c                     [        U 5      $ Ntuplexs    r   <lambda>_same_mesh.<locals>.<lambda>j       eAhr   )keyc                     [        U 5      $ r;   r<   r>   s    r   r@   rA   k   rB   r   r   )r"   r#   concatenatesortedr=   shapeallclose)r4   r5   r6   r7   tol
triangles1
triangles2ttriang1triang2r?   s              r   r2   r2   b   s    
 288F+,J288F+,JJTU*Qr~~fQ,>?@*GUJTU*Qr~~fQ,>?@*GUhhv9AuQx9:;Ghhv9AuQx9:;G==GMM)Sbkk'As.SS VU99s   )D;&)E *E#E
c            	         Sn SU -  Sp![         R                  " X U 4S5      n[        UR                  S   5       GHb  n[        UR                  S   5       GHA  n[        UR                  S   5       GH   n[	        U5      U-  U-   [	        U5      U-  U-   [	        U5      U-  U-   pnSU	-  S-  SU-  S-
  S-  -   SU-  S-  -   S	-   S
-
  SU	-  S-  SU-  S-
  S-  -   SU-  S-  -   S	-   S
-
  -  SSU	-  S-  SU-  S-
  S-  -   -  -
  SU	-  S-  SU-  S-
  S-   SU-  S-
  S-   -  -   SU-  S-  -   S	-   S
-
  SU	-  S-  SU-  S-
  S-   SU-  S-
  S-   -  -   SU-  S-  -   S	-   S
-
  -  SSU-  S-
  S-   SU-  S-
  S-   -  SU-  S-  -   -  -
  -  S-   X4XV4'   GM#     GMD     GMe     [        USSS9S S u  p[        US5      S S u  p[        XX5      (       a   eg )N0   g      @g      float32r   r*   r      r   gzGa@@      i  r   r   )r"   emptyrangerG   floatr   r2   )nabvoliziyixzyr?   r4   r5   r6   r7   s                 r    test_both_algs_same_result_donutra   r   s   
A7Eq
((A!9i
(CCIIaL!		!%BCIIaL))a-!+U2Y]Q->b	APQ@Qa!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#J * & "B 'sAjA"1EI&sA.r2I )Y?????r   c                      [        SSSSS9n [        R                  " U [        S9nSUS S2S S 2S S 24'   SUS S 2S S 2SS 24'   [	        U S	US
9u  p#  n[        X#5      n[        USSS9  g )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_cubesrm      su     BT:<<(5DD"aODArsO%&6EC1S(DD,48r   c                      [        SSSSS9n [        R                  " / 5      n[        R                  " [
        5         [        U SUS9nS S S 5        g ! , (       d  f       g = f)Nr	   r
   r   Tr   r   re   )r   r"   r#   r$   r%   r&   r   )rj   r    r   s      r    test_masked_marching_cubes_emptyro      sG     BT:88B<D	z	"+QT: 
#	"	"s   A
A c                      [        SSSSS9n [        R                  " U [        S9n[	        U SUS9u  p#  n[	        U SUS9u  pV  n[        X%S	S
9  [        X6S	S
9  g )Nr	   r
   r   Tr   rc   r   re   gh㈵>rf   )r   r"   rh   ri   r   r   )rj   r    ver_mfaces_mr   rk   r   s          r   #test_masked_marching_cubes_all_truers      sd     BT:<<(5D)*:ADIEAq%&6EC1EW-G1r   )g|=)numpyr"   r$   numpy.testingr   skimage.drawr   r   skimage.measurer   r   r   r(   r0   r8   r2   ra   rm   ro   rs    r   r   <module>ry      sF      ) 3 =8"V<@6<T +@\9;2r   