
    k h                     x    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y)    N)assert_allclose)	ellipsoidellipsoid_stats)marching_cubesmesh_surface_areac                      t        dddd      } t        ddd      \  }}t        | dd      d d	 \  }}t        ||      }||kD  r||d
z  kD  sJ t        | d      d d	 \  }}t        ||      }||kD  r||d
z  kD  sJ y )N   
      Tlevelset        lorensenmethod   gGz?)r   r   r   r   )ellipsoid_isotropic_surfvertsfaces	surf_calcs         /home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/skimage/measure/tests/test_marching_cubes.pytest_marching_cubes_isotropicr   	   s    #Ar2=aR(GAt ""5s:NrPQRLE5!%/I)	D4K 777 ""5s;BQ?LE5!%/I)	D4K 777 7    c            	         t        j                  g d      } t        ddd| d      }t        ddd      \  }}t	        |d| d	      d d
 \  }}t        ||      }||kD  r||dz  kD  sJ t	        |d|       d d
 \  }}t        ||      }||kD  r||dz  kD  sJ t        j                  t              5  t	        |d| t        j                  g             d d
 \  }}d d d        t	        |d| d       y # 1 sw Y   xY w)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(GAt "sGJq
LE5 "%/I)	D5L 888 ""7gNrPQRLE5!%/I)	D5L 888 
z	" %!3bhhrl

1u (!WuU s   0)C11C:c                     t        j                  t              5  t        t	        j
                  d      dd       d d d        t        j                  t              5  t        t	        j
                  d      dd       d d d        t        j                  t              5  t        t	        j                  d      ddd       d d d        t        j                  t              5  t        t	        j
                  d	      dd       d d d        t        j                  t              5  t        t	        j
                  d      d       d d d        t        j                  t              5  t        t	        j
                  d      d       d d d        t        j                  t              5  t        t	        j                  d      dd
       d d d        t        j                  t              5  t        t	        j
                  d	      d       d d d        t        dddd      } t        j                  t              5  t        | dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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rxx	*AjAB	z	" Brxx	*AjAB	z	" Qrwwy)1fZPQ	z	" Arxx)1Z@A 
z	" /rxx	*A./	z	" /rxx	*A./	z	" >rwwy)1f=>	z	" .rxx)1-. $Ar2=	z	" @*C?@ @+B BB BQ QA A/ // /> >. .
@ @sk   "I"I! #I.$"I;' J( J)"J", J.<J:I!I+.I8;JJJ"J+.J7:Kc                      t        dddd      } t        | dd      d d \  }}t        | ddd	      d d \  }}t        ||||      sJ y )
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   sh     Q1t4L&|QOPRQRSIv&a%
q
Iv iF;;;r   c           
      |   | t        j                  |         }|t        j                  |         }|D cg c]#  }t        j                  t        |d             % }}|D cg c]#  }t        j                  t        |d             % }	}t        j                  t        |D 
cg c]  }
t	        |
       c}
            }t        j                  t        |	D 
cg c]  }
t	        |
       c}
            }	|j
                  |	j
                  k(  xr t        j                  ||	d|      S c c}w c c}w c c}
w c c}
w )z_Compare two meshes, using a certain tolerance and invariant to
    the order of the faces.
    c                     t        |       S Ntuplexs    r   <lambda>z_same_mesh.<locals>.<lambda>j   
    eAh r   )keyc                     t        |       S r;   r<   r>   s    r   r@   z_same_mesh.<locals>.<lambda>k   rA   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UQr~~fQ,>?@UGUJTUQr~~fQ,>?@UGUhhv9AuQx9:;Ghhv9AuQx9:;G==GMM)Sbkk'7As.SS VU99s   (D*#(D/%D4D9c            	         d} d| z  d}}t        j                  | | | fd      }t        |j                  d         D ]`  }t        |j                  d         D ]A  }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<   % D c t        |dd      d d \  }
}t        |d      d d \  }}t        |
|||      rJ y )N0   g      @g      float32r   r*   r      r   gzGa@@      i  r   r   )r"   emptyrangerF   floatr   r2   )nabvoliziyixzyr?   r4   r5   r6   r7   s                 r    test_both_algs_same_result_donutr`   r   s   
A7EqA
((Aq!9i
(CCIIaL! 		!% 	BCIIaL) )a-!+U2Y]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	B 'sAjA"1EIv&sA.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       y )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_cubesrl      sy     BT:<<(5DD"aODArsO%&6EC1S%(DD,48r   c                      t        dddd      } t        j                  g       }t        j                  t
              5  t        | d|      }d d d        y # 1 sw Y   y xY w)Nr	   r
   r   Tr   r   rd   )r   r"   r#   r$   r%   r&   r   )ri   r    r   s      r    test_masked_marching_cubes_emptyrn      sP     BT:88B<D	z	" ;+QT:; ; ;s   AAc                      t        dddd      } t        j                  | t              }t	        | d|      \  }}}}t	        | d|      \  }}}}t        ||d	
       t        ||d	
       y )Nr	   r
   r   Tr   rb   r   rd   gh㈵>re   )r   r"   rg   rh   r   r   )ri   r    ver_mfaces_mr   rj   r   s          r   #test_masked_marching_cubes_all_truerr      sl     BT:<<(5D)*:ADIE7Aq%&6EC1E3W-GU1r   )g|=)numpyr"   r$   numpy.testingr   skimage.drawr   r   skimage.measurer   r   r   r(   r0   r8   r2   r`   rl   rn   rr    r   r   <module>rx      sF      ) 3 =8"V<@6<T +@\9;2r   