a
    
d                     @   s   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d Zdd Zd	d
 Zdd ZdddZdd Zdd Zdd Zdd ZdS )    N)assert_allclose)	ellipsoidellipsoid_stats)marching_cubesmesh_surface_areac                  C   s   t ddddd} tddd\}}t| dddd d	 \}}t||}||krX||d
 ks\J t| dd d	 \}}t||}||kr||d
 ksJ d S )N   
      Tlevelset        lorensenmethod   gGz?)r   r   r   r   )ellipsoid_isotropic_surfvertsfaces	surf_calc r   r/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/measure/tests/test_marching_cubes.pytest_marching_cubes_isotropic	   s    

r   c                  C   s
  t g d} tddd| dd}tddd\}}t|d| dd	d d
 \}}t||}||krj||d ksnJ t|d| dd d
 \}}t||}||kr||d ksJ tt2 t|d| t g dd d
 \}}W d    n1 s0    Y  t|d| 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   Zellipsoid_anisotropicr   r   r   r   r   r   r   r   test_marching_cubes_anisotropic   s:    


&r$   c                  C   s<  t t$ ttdddd W d    n1 s40    Y  t t$ ttdddd W d    n1 sr0    Y  t t& ttddddd W d    n1 s0    Y  t t$ ttd	ddd W d    n1 s0    Y  t t  ttdd W d    n1 s,0    Y  t t  ttdd W d    n1 sh0    Y  t t$ ttdddd
 W d    n1 s0    Y  t t  ttd	d W d    n1 s0    Y  tddddd} t t t| ddd W d    n1 s.0    Y  d S )N)r   r      r   r   r   r%   )   r&   r&   )r%   r   r   )   r'   r   r   r   r	   Tr
   r   Zabcd)r!   r"   r#   r   r   zerosZonesr   )r   r   r   r   test_invalid_input;   s*    22$20040r)   c                  C   s\   t ddddd} t| dddd d \}}t| dddd	d d \}}t||||sXJ d S )
Nr%   Tr
   r   F)r   r   r   )r   r   )r   r   
_same_mesh)Zsphere_small	vertices1faces1	vertices2faces2r   r   r   "test_both_algs_same_result_ellipseW   s    r/   绽|=c           	      C   s   | t | }|t | }dd |D }dd |D }t tdd |D }t tdd |D }|j|jkot ||d|S )z` Compare two meshes, using a certain tolerance and invariant to
    the order of the faces.
    c                 S   s"   g | ]}t t|d d dqS )c                 S   s   t | S Ntuplexr   r   r   <lambda>o       '_same_mesh.<locals>.<listcomp>.<lambda>keyr   Zconcatenatesorted.0tr   r   r   
<listcomp>o   s   z_same_mesh.<locals>.<listcomp>c                 S   s"   g | ]}t t|d d dqS )c                 S   s   t | S r1   r2   r4   r   r   r   r6   q   r7   r8   r9   r;   r=   r   r   r   r@   q   s   c                 S   s   g | ]}t |qS r   r2   r>   r5   r   r   r   r@   t   r7   c                 S   s   g | ]}t |qS r   r2   rA   r   r   r   r@   u   r7   r   )r   r    r<   shapeZallclose)	r+   r,   r-   r.   ZtolZ
triangles1Z
triangles2Ztriang1Ztriang2r   r   r   r*   g   s    r*   c               	   C   s   d} d|  d }}t | | | fd}t|jd D ]}t|jd D ]}t|jd D ]v}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< qZqFq2t|d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rangerB   floatr   r*   )nabZvolZizZiyixzyr5   r+   r,   r-   r.   r   r   r    test_both_algs_same_result_donutz   s<    48
>>.rQ   c                  C   s   t ddddd} tj| td}d|d dd d d d f< d|d d d d dd f< t| d	|d
\}}}}t||}t|ddd d S )Nr   r   r	   Tr
   ZdtypeFr'   r   r   g   r@g{Gz?Zrtol)r   r   	ones_likeboolr   r   r   )ellipsoid_scalarr   verr   r   arear   r   r   test_masked_marching_cubes   s    
rZ   c                  C   sV   t ddddd} tg }tt t| d|d}W d    n1 sH0    Y  d S )Nr   r   r	   Tr
   r   rS   )r   r   r    r!   r"   r#   r   )rW   r   r   r   r   r    test_masked_marching_cubes_empty   s    
r[   c                  C   sj   t ddddd} tj| td}t| d|d\}}}}t| d|d\}}}}t||d	d
 t||d	d
 d S )Nr   r   r	   Tr
   rR   r   rS   gh㈵>rT   )r   r   rU   rV   r   r   )rW   r   Zver_mZfaces_mr   rX   r   r   r   r   #test_masked_marching_cubes_all_true   s    r\   )r0   )numpyr   r!   Znumpy.testingr   Zskimage.drawr   r   Zskimage.measurer   r   r   r$   r)   r/   r*   rQ   rZ   r[   r\   r   r   r   r   <module>   s    
