
    G8c.                        d dl Zd dlmZmZmZ d dlmc mZ	 d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZmZ  G d d      Zd Zd Zd	 Zd
 Zd Ze
j<                  j?                  dg g fdgdgfddgddgfg dg dfg dg dfg dg dfg      d        Z d Z! edg      d        Z"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z- ed&gd'd()      d*        Z. ed+gd'd,)      d-        Z/d. Z0d/ Z1e
j<                  j?                  d0ejd                  ejf                  gd1d2g3      d4        Z4d5 Z5d6 Z6d7 Z7d8 Z8d9 Z9d: Z:d; Z;d< Z<d= Z=d> Z> e       d?        Z?d@ Z@y)A    N)assert_array_equalassert_array_almost_equalassert_array_less)Path)image_comparisoncheck_figures_equalc                   .   e Zd Zg dZg dZg dg dgZddgZej                  j                  deegi eeddgfeeegi eeedgfeeg e
e	      eeedgfeeg e
e
      eedegfeeeg e
e
      eeeegfeeg e
ee      eeeegfg      d        Zy)TestTriangulationParamsr      r   r   r   r   r   r   r      r   r      FTzargs, kwargs, expectedN	trianglesmaskr   r   c                     ddg}ddd}t         j                  j                  ||z   i ||      \  }}}}	}
}|\  }}}}||u sJ ||u sJ t        ||       |	|u sJ |
|k(  sJ ||k(  sJ y )Nr   r   r   4)ab)mtriTriangulation_extract_triangulation_paramsr   )selfargskwargsexpected
other_argsother_kwargsx_y_
triangles_mask_args_kwargs_xyr   r   s                   E/usr/lib/python3/dist-packages/matplotlib/tests/test_triangulation.py!test_extract_triangulation_paramsz9TestTriangulationParams.test_extract_triangulation_params   s     V
S)<<z!#=f#=#=? 	2B
E5' !)1iQwwQww:y1}}
""",&&&    )__name__
__module____qualname__r+   r,   r   r   pytestmarkparametrizedictr.    r/   r-   r
   r
      s    AAI&I4=D[[5
QaD$'(
Q		BAy$ 78
Q	*Q9d,CD
Q41at"45
Q		DdOaIt-DE
Q	51i7NO8 ''r/   r
   c                      dg} g dg dg dg| g}t         j                  j                  |i       \  }}}}}}|J || gk(  sJ y )NTr   r   r   r   r   r   r   )r   r   r   )r   r    r%   r&   r'   r(   r)   r*   s           r-   *test_extract_triangulation_positional_maskr;   +   sX    6Dy9+t4D88rB .BJug==TF??r/   c                     g d} g d}t        j                  t        d      5  t        j                  | ddg       d d d        t        j                  t        d      5  t        j                  | |g d       d d d        t        j                  t        d	      5  t        j                  | |d
       d d d        t        j                  t        d      5  t        j                  | |g dg       d d d        t        j                  t        d      5  t        j                  | |g dg       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   lxY w# 1 sw Y   y xY w)Nr   r   zx and y must be equal-lengthmatchr   r   z>triangles must be a \(N, 3\) int array, but found shape \(3,\)r   z3triangles must be a \(N, 3\) int array, not 'other'otherzfound value 99)r   r   c   zfound value -1)r   r   r   r3   raises
ValueErrorr   r   r+   r,   s     r-   test_triangulation_initrE   7   s6   AA	z)G	H &1q!f%&	
 , 	1a+	,
 
H
J * 	1a)* 
z)9	: /1a*./	z)9	: /1a*./ /& &, ,
* */ // /s;   D: EEEE*:EEEE'*E3c                     d} d}t        j                  t        j                  dd|       t        j                  dd|            \  }}|j                         }|j                         }| |z  }d| dz
  z  |dz
  z  }d| z  |z  d| z  z
  d|z  z
  dz   }t	        j
                  ||      }t        |j                  |       t        |j                  |       t        |j                        |k(  sJ t        j                  |j                        dk(  sJ t        j                  |j                        |dz
  k(  sJ t        |j                        |k(  sJ t        j                  |j                        dk(  sJ t        j                  |j                        |dz
  k(  sJ |j                  }d |_        t!        |j                  |       t!        t        j"                  |j                        t        j$                  |             y )	N                    ?r   r   r   r   )npmeshgridlinspaceravelr   r   r   r+   r,   lenr   minmaxedges	neighbors
_neighborsr   uniquearange)	nxnyr+   r,   npoints
ntrianglesnedgestriangrS   s	            r-   test_delaunayr]   K   s   	
B	
B;;r{{3R0"++c32KLDAq		A		AeGbdr!t$JrT"Wqt^ad"Q&F 1%F fhh*fhh* v J...66&""#q(((66&""#wqy000 v||&&&66&,,1$$$66&,,719,,,
   IFv''3 ryy!1!12BIIg4FGr/   c                     d} d}d}t         j                  j                  d       t         j                  j                  |       }t         j                  j                  |       }||   ||<   ||   ||<   t        j                  ||      }t        t        j                  |j                        t        j                  t        j                  |       |             y )N
      r      )
rK   randomseedr   r   r   rU   r   deleterV   )rY   	duplicateduplicate_ofr+   r,   r\   s         r-   test_delaunay_duplicate_pointsrg   u   s    GILIINN2
		!A
		!A\?AiL\?AiL 1%F ryy!1!12yy7!3Y?Ar/   c                  l   t        j                  ddd      } t        j                  ddd      }t        j                  t              5  t        j                  | |       d d d        t        j                  | d      } t        j                  |d      }t        j                  | |       y # 1 sw Y   LxY w)NrI         $@          @g       @)rK   rM   r3   rB   RuntimeErrorr   r   appendrD   s     r-   test_delaunay_points_in_linern      s     	Cr"A
Cr"A	|	$ !1a ! 			!SA
		!SAq!! !s   B**B3zx, yr   rG   r      )r   r   r   )rG   ro   rG   )r   r   r   )rG   ro   ro   )r   r   r   r   r   r   )rG   rG   rG   ro   rG   ro   c                     t        j                  t              5  t        j                  | |       d d d        y # 1 sw Y   y xY wNrA   rD   s     r-   !test_delaunay_insufficient_pointsrr      s5     
z	" !1a ! ! !s	   :Ac            
      x   t        j                  ddgddgddgddgddgd	d
gddgg      } t        j                  ddgddgddgddgddgddgddgg      }d fd}t        j                  | d d df   | d d df         }|D ]  } |||      dk(  rJ  t        j                  | dd df   | dd df         }y )NgLXz?g     gCM??g~9B.?g     g/7R?g9?g     ڿgHC?g     ڿgt?g     ڿg(\?gq=
ףpݿg?gzGڿffffff?gQ޿g)\(ܿ      ?皙?c                 x    t        j                  | |f      j                  }t        |      j	                  |      S rq   )rK   vstackTr   contains_point)xtriytrixy
tri_pointss       r-   tri_contains_pointz0test_delaunay_robust.<locals>.tri_contains_point   s0    YYd|,..
J..r22r/   c                 H     t         fd j                  D              S )Nc              3   f   K   | ](  } j                   |   j                  |          * y wrq   rD   ).0trir   r\   r}   s     r-   	<genexpr>zCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>   s2      0 &fhhsmVXXc]BG 0s   .1)sumr   )r\   r}   r   s   ``r-   tris_contain_pointz0test_delaunay_robust.<locals>.tris_contain_point   s#     0$..0 0 	0r/   r   r   )rK   arrayasarrayr   r   )r~   test_pointsr   r\   
test_pointr   s        @r-   test_delaunay_robustr      s    	01	01	01	01	01	01	124 5J **	u	u	u	e	e	u	e K30 
1a4 0*QT2BCF! ;
!&*5:::;
 
12q5 1:ab!e3DEFr/   ztripcolor1.pngc                     t        j                  g d      } t        j                  g d      }t        j                  g dg dg dg dg dg dg d	g d
g dg dg
      }t        j                  | ||      }| d|z  z   }| |j                     j                  d      }||j                     j                  d      }d|z  |z   }t        j                  d       t        j                  ||d       t        j                  d       t        j                  d       t        j                  ||d       t        j                  d       y )N)
r         ?r   r   r   r   r   r   r   ru   )
r   r   r   r   r   r   r   r   r   ru   r   r   r   )r   rH   r   r   r   rH   )r   rG   rH   )r   rH   ro   )rH   r`   ro   )rH   rG   	   )r`   rH   r   )   r`   r   )rG   r   r   r   r   axisy   k)
edgecolorszpoint colorsz   )
facecolorsr   r   )
rK   r   r   r   r   meanpltsubplot	tripcolortitle)r+   r,   r   r\   CpointsxmidymidCfacess           r-   test_tripcolorr      s   


>?A


>?A

9999i	4 5I 1i0F#a%iGV###+DV###+DX_FKKMM&'c2IInKKMM&V<IIlr/   c                  8   g d} g d}t        j                         \  }}t        j                  t        d      5  |j                  | |       d d d        t        j                  t        d      5  |j                  | |g d       d d d        t        j                  t        d      5  |j                  | |g d	       d d d        t        j                  t        d
      5  |j                  | |ddgd       d d d        t        j                  t        d
      5  |j                  | |ddgd       d d d        t        j                  t        d      5  |j                  | |g d       d d d        |j                  | |g d       |j                  | |g dd       |j                  | |ddg       |j                  | |ddg	       y # 1 sw Y   xY w# 1 sw Y   Yx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   xY w)Nr   r   z!tripcolor\(\) missing 1 required r=   z!The length of c must match eitherr   r   r   z,length of facecolors must match .* triangles)r   r   r   rH   r   z-'gouraud' .* at the points.* not at the facesr   r   gouraud)r   shading)r   z+positional.*'c'.*keyword-only.*'facecolors')C)r   subplotsr3   rB   	TypeErrorr   rC   )r+   r,   figaxs       r-   test_tripcolor_colorr      s   AAllnGC	y(L	M 
Q	z)L	M &
Q9%&	zK
M 4
Ql34 
zL
N A
Qq!fi@A 
zL
N 6
QAq6956 
yJ
L +
Q\*+
 LLA|$LLA|YL7LLA1vLLA1a&L)+ & &4 4A A6 6+ +sG   G1G*G+$G8HHGG(+G58HHHc                     t         j                  j                  d       t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      }}} t	        j
                         j                         }d}|j                  | |||      j                  }|j                  |j                  f|k(  sJ y )Ni!N,r_   )      ?ru   )clim)rK   rb   rc   randr   figureadd_subplotr   normvminvmax)r   r   cr   r   r   s         r-   test_tripcolor_climr     s    IINN8iinnR ")).."4biinnR6H!qA		!	!	#BD<<1ad<+00DIItyy!T)))r/   c                     g d} g d}ddg}t        j                         \  }}t        j                  t        d      5  |j                  | ||d       d d d        t        j                  t        d      5  |j                  | |||	       d d d        t        j                  t        d      5  |j                  | |d
|	       d d d        y # 1 sw Y   |xY w# 1 sw Y   OxY w# 1 sw Y   y xY w)Nr   r   皙?r   zAdditional positional paramr=   unused_positionalz"Positional parameter c .*no effectr   zinterpreted as c)r   r   r3   warnsDeprecationWarningr   UserWarning)r+   r,   r   r   r   s        r-   test_tripcolor_warningsr     s    AA	c
AllnGC	(0M	N 3
Q1123 
k)M	N ,
Q1+,	k)M	N =
Q-!<= =3 3, ,= =s#   C7C0C'CC$'C0c                     t        j                  g dg dgt         j                        } t        j                  g d      }| j                         }t	        j
                  |d d df   |d d df   |       j                   t        ||        y )Nr   r   r   )r   r   r   dtype))r   r   )r   g?)r   r   )r   r   r   r   )rK   r   int32copyr   r   rR   r   )r   pointsold_triangless      r-   test_no_modifyr   %  sh    )Y/rxx@IXX89FNN$Mvad|VAqD\9=CC}i0r/   c                     t        j                  t        j                  d      t        j                  d            \  } }| j                         } |j                         }g dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg}t        j                  t        |            }d|dd t        j                  | |||      }|j                         }g d}g d}t        j                  ||      \  }}|j                         }|j                         } |||      }t        |g d        ||dz
  |dz
        }t        |g d       g d}g d} |||      }t        |g d       ddg}ddg} |||      }t        |d d!g       d}	g d"} d#d d d d |	dg}g d$g d%g d&g dg d'g d(g d)g d*g}t        j                  | ||      }|j                         }g d+}d,d-g}t        j                  ||      \  }} |||      }t        |g d.g d/g       d}	d#|	 d d d d dg} g d0}g d1g d2g d3g d4g d5g d6g d7g d*g}t        j                  | ||      }|j                         }d,d-g}g d+}t        j                  ||      \  }} |||      }t        |d#d#gd d8gd d8gd d9gdd9gdd:gd#d#gg       g d;} g d<}g d1g d=g}t        j                  | ||      }|j                         }g d>}g d?} |||      }t        |g d@       |j                  dd g       ||j                         k(  sJ  |||      }t        |g dA       y )BNrH   r   r   rH   r   rG   rH   r   r   rG   r   ro   rG   r   r   ro   r   r`   ro   rH   rG   r   rG   r   r   rG   ro   r   ro   r_   r   ro   r`   r_   r`   rj   r_   r   r      r      r   r   r_   r   r_      r   r_   rj   r   rj      r   r   r   r_   )r         ?      @      
@)r   r   rH   r   ro   r   r_   r   r   r      r   r   r   r   r   r   )r   r   r   r   r   r   r   rG   r   r`   r   rj   r   r   r      )r         ?      @r   r   r   r   r   rI   rJ   rk         @)rI   rI   rI   r   r   r   rJ   rk   r   r   r   r   )r   r   rH   r   r   r   r   r   ro   r`   r_   rj   rI   r   r   r   r   r   r   r   r   r   r   r   r9   r   r   r   r   rH   r   r   r   rG   r   rH   rG   r   rG   ro   rH   ro   rG   )皙r   ?gffffff?gffffff?g333333@g333333@r   皙?)r   r   r   r   r   r   r   )r   ro   ro   ro   r`   r`   r   )r   r   r   r   r   r   r   r   )r   r   rG   r   )r   r   rH   )r   rH   rG   )r   ro   r   )r   ro   rH   rG   ro   r`   r   r   r   r   r   r   r   r   r   r   r   )gɿ皙?rv   g333333?)r   r   r   r   )r   r   r   r   )r   r   r   r   )rK   rL   rV   rN   zerosrO   r   r   get_trifinderr   set_mask)
r+   r,   r   r   r\   	trifinderxsystrisdeltas
             r-   test_trifinderr   /  sj   ;;ryy|RYYq\2DAq		A		AIy)YIy)Z[*k;|\;I 88C	N#DD2J1i6F$$&I	!B	!B[[R FB	B	BRDt > ?RVRV$Dt = > 
FB	EBRDtGH sB
sBRDtaW% E'A	a!aE1%AIy)YIy2I1i0F$$&I	-B
B[[R FBRDt557 8 E	eVQQ1%A'AIy)YIy2I1i0F$$&I
B	-B[[R FBRDtr2hAAAAA!2h( )
 	AAI&I1i0F$$&I	B	BRDt^,
OOQF,,....RDt_-r/   c                  F   t        j                  t        j                  d      t        j                  d            \  } }| j                         } |j                         }d| z  d|z  z
  }g dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg}t        j                  t        |            }d|dd t        j                  | |||      }t        j                  ||      }t        j                  ||      }t        j                  ||d      }t        j                  ddd      }	g d}
t        j                  |	|
      \  }	}
|||fD ]   } ||	|
      }t        |d|	z  d|
z  z
         " g d}	|	}
t        j                  |	|
      \  }	}
|||fD ])  } ||	|
      }t        |j                  d gdz  gdz         + t        j                  dd!d      }	g d"}
t        j                  |	|
      \  }	}
|||fD ]W  } ||	|
      }t        j                  |d|	z  d|
z  z
         |	dk\  |	d#k  z  |
dk\  z  |
d#k  z  }t        |j                  |       Y d$\  fd%}fd&}t        j                  g d'      } t        j                  g d(      }t        j                  g d)g d*g d+g d,g d-g d.g d/g d0g      }t        j                  | ||      } || |      } || |      }t        j                  d1d2d3      }	t        j                  d1d2d3      }
t        j                  |	|
      \  }	}
t        j                  ||d4|5      } ||	|
      }t        | ||	|
             |j!                  | |      \  }} || |      \  }}t        ||       t        ||       d6}t        j                  t        j                  d1d2|dz         t        j                  d1d2|dz               \  } }| j                         } |j                         } || |      }t        j                  | |t#        |dz         7      }t        j                  t        j                  d8d9d3      t        j                  d8d9d3            \  }	}
|	j                         }	|
j                         }
t        j                  ||      }t        j                  ||      }t        j                  ||d      } ||	|
      }t        j$                   ||	|
      |z
        }||fD ]  }t        j$                   ||	|
      |z
        }t        j&                  |      dt        j&                  |      z  k\  sJ t        j(                  ||      d:t        j(                  ||      z  k\  rJ  y );NrH   Gz?)\(@r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r_   geomkindr         @ro   )r   ru   r   r  )g      пr         ?r   Tr  )r   ru   r   r  r   )r   g)\(333333?c                 D    | dz
  dz  z  |dz
  dz  z  z   | z  |z  z   S )Nr   r   r7   r+   r,   r   r   r   s     r-   quadztest_triinterp.<locals>.quad  s3    !C%!|a3
l*QqSU22r/   c                 H    dz  | dz
  z  |z  z   dz  |dz
  z  | z  z   fS )Nr   r   r7   r	  s     r-   gradient_quadz%test_triinterp.<locals>.gradient_quad  s8    !QsUac!1Q3#;1#455r/   )r   &jjZ? rh?rI   rJ   rJ   rI   )333333?HPs?X9v?rI   rI   rJ   rJ   r   r   r   rH   rH   r   r   rH   r   rG   r   rG   r   ro   rG   r   ro   r   r   ro   r   r   rI   rJ   rG   userr  dzrj   r   r   r   d   )rK   rL   rV   rN   r   rO   r   r   LinearTriInterpolatorCubicTriInterpolatorrM   r   r   r   matestr   gradientmeshgrid_trianglesabsrQ   dot)r+   r,   zr   r   r\   linear_interpcubic_min_E
cubic_geomr   r   interpzsr
  r  r  
cubic_user	interp_zsinterp_dzsdxinterp_dzsdydzsdxdzsdyndiff_lin
diff_cubicr   r   r   s                            @@@r-   test_triinterpr3    s   ;;ryy|RYYq\2DAq		A		AQaAIy)YIy)Z[*k;|\;I 88C	N#DD2J1i6F..vq9M++FA6K**616BJ	T4	#B	!B[[R FB +z: ;B^!"tBwb'8:;
 
#B	B[[R FB +z: 22r"277dVAXJqL12
 
T4	#B	!B[[R FB +z: *B^((d2gR.?AaB!G$a0B!G<277D)	* #IQ136 	67A
78A)Y	9#Y	9F GI1i0FQ
A	q!	B	RQ	B	RQ	B[[R FB**616bIJ2r"Iib"6#-#6#6q!#< \<"1a(NUElE2lE2 	A;;r{{2r1Q3/RQqS1IJDAq		A		AQ
A10B1Q30GHF[[S#q12;;sC3KLFB	B	B..vq9M++FA6K**616BJ	b"BvvmB+b01H
+ 6VVF2rNR/0
vvh2z(:#::::x*bffZ445 	6 56r/   c                     dd} d\  }}d\  }}d\  }}t        j                  |||ddddg      }t        j                  |||ddddg      }t        j                  g dg dg d	g d
g dg dg dg dg      }	t        j                  |||	      }
t	        d      D ]  }t        j
                  dt         j                        }t        j
                  dt         j                        }t        j
                  dt         j                        }t        j
                  ddgt         j                        }|dz  }d|||dz  f<   |dk(  rd||<   n|dk(  r	d||dz  <   n|dk(  rd||dz  <   t        j                  |
|d||f      } | |||f|d d df           | |||f|d d df           | |||f|d d df           | |||z   dz  ||z   dz  f        | |||z   dz  ||z   dz  f        | |||z   dz  ||z   dz  f        | |||z   |z   dz  ||z   |z   dz  f        | |d|z  |z   |z   dz  d|z  |z   |z   dz  f        | ||d|z  z   |z   dz  |d|z  z   |z   dz  f        | |||z   d|z  z   dz  ||z   d|z  z   dz  f        y )Nc           	         d}d}d}|\  }}||t        j                  t        j                  ddt         j                  z  |            z  z   }||t        j                  t        j                  ddt         j                  z  |            z  z   }	 | |g|g      d   }
| j                  |g|g      \  }}|3t        |
|d          t        |d   |d          t        |d   |d           | ||	      |
z
  }| j                  ||	      \  }}||z
  }||z
  }t        |||z         t        |||z         t        |||z         y)	aJ  
        Checks the continuity of interpolator (and its derivatives) near
        location loc. Can check the value at loc itself if *values* is
        provided.

        *interpolator* TriInterpolator
        *loc* location to test (x0, y0)
        *values* (optional) array [z0, dzx0, dzy0] to check the value at *loc*
           绽|=g      Y@rI   r   r   Nr   )rK   cosrM   pisinr   r   r   )interpolatorlocvaluesn_starepsilonr   loc_xloc_ystar_xstar_yr$  dzxdzydiff_ztab_dzxtab_dzydiff_dzxdiff_dzys                     r-   check_continuityz;test_triinterpcubic_C1_continuity.<locals>.check_continuity  sA    B"%%(H!IIIB"%%(H!III%5'*1-!**E7UG<
c%a3%c!ffQi8%c!ffQi8ff-1)2266B'S=S=&'!),(GAI.(GAI.r/   )r   r  )r  r  )r  r  rI   rJ   r   r  r  r  r  r  r  r  r   r`   r   r   r   r   r   r  r  r   r         @g      @rq   )rK   r   r   r   ranger   float64r  )rK  r   aybxbycxcyr+   r,   r   r\   idofr$  rD  rE  r=  caser(  s                     r-   !test_triinterpcubic_C1_continuityrV    s   /> HR!HRHR
"b"b"b"-.A
"b"b"b"-.A)Y	9#Y	9F GI1i0Fa GHHQbjj)hhq

+hhq

+1a&

3Qw!$tTAX~19AdGQYCqMQYCqM**616/2Cj: 	"b6!Q$<8"b6!Q$<8"b6!Q$<82b5#+2s{!;<2b5#+2s{!;<2b5#+2s{!;<2b58R-"R%(B!?@2b58B;"2RU2Xb["4D!EF2be8B;"2R2Xb["4D!EF2b5B;"2RU2b5["4D!EF9Gr/   c            	         d } d\  }}t        j                  j                   | ||       }|j                          |j	                         }t        ||z        D ]  }t        j                  ||z  t        j                        }d||<   t         j                  j                  ||t        j                  ||z        d      \  }}t        t        j                  ||      |        d\  }	}
 | ||      \  }}}}|d||	k\  z  z   d||
k\  z  z   }|d||	k\  z  z   d||
k\  z  z   }t        j                  ||	|	dz
  |
|
dz
  gg      }t        j                  ||	dz
  |	|
dz
  |
gg      }t        j                  |g d	g      }t         j                  j                  |||||z  d
z   ||z  d
z   f      }|j                          |j	                         }t        ||z  d
z         D ]  }t        j                  ||z  d
z   t        j                        }d||<   t         j                  j                  ||t        j                  ||z  d
z         d      \  }}t        t        j                  ||      |        t        j                  dt        j                        }t        j                  g dt        j                        }t        j                  g dt        j                        }d}t         j                  j                  ||||      }|j                          |j	                         }t        |t        j                  g dg dg dgt        j                               y )Nc                    || z  }t        j                  t        j                  |t         j                        t        j                  |dz
  t         j                        t        j                  d|t         j                        t        j                  || z
  t         j                        t        j                  | |t         j                        g      }t        j                  t        j                  |t         j                        t        j                  d|t         j                        t        j                  |dz
  t         j                        t        j                  | |t         j                        t        j                  || z
  t         j                        g      }t        j                  dt        j                  |t         j
                        z  t        j                  |dz
  t         j
                         t        j                  |dz
  t         j
                         t        j                  || z
  t         j
                         t        j                  || z
  t         j
                         g      }d||d|z  dz
   |dz
  d|<   d|d|z  dz
  d|z  dz
   |dz
  d|<   |||| |z  | |z  ffS )z
        Return the sparse, (n*m, n*m) matrix in coo format resulting from the
        discretisation of the 2-dimensional Poisson equation according to a
        finite difference numerical scheme on a uniform (n, m) grid.
        r   r   rH   rI   r   Nr   )rK   concatenaterV   r   onesrN  )r0  mlrowscolsvalss         r-   poisson_sparse_matrixz<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrixO  s    aC~~IIarxx(IIac*BIIa"((,KIIac*BIIa"((,KM N ~~IIarxx(IIa"((+RYYqs"((-KIIa"((+RYYqs"((-KM N ~~bggarzz**WWQqS

++bggac.L-LWWQqS

++bggac.L-LN O
 !#Qqs1uacf1f$&QqSU1Q3q5!A#&q&!T4!A#qs++r/   )r   rH   r   rJ   r7  )Ar   x0tol)r   1   r   )rJ   rJ   rJ   rJ   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )rJ   rk   rI   )rk   rJ         @)rI   re  rJ   )r   triinterpolate_Sparse_Matrix_coocompress_cscto_denserM  rK   r   rN  _cgr   r#  rY  rZ  r   r   )r`  r0  r[  mat	mat_denseitestr   r+   _i_zeroj_zeror_  r]  r^  dims                  r-   test_triinterpcubic_cg_solverrr  K  s	   ,2 FQ



0
02G12M
NCIqs ;HHQqS

+%""&&bhhqsm+1 ' 31!"&&A"6:;  VV/15D$a!TV^$$q$&.'99D!TV^$$q$&.'99D>>4&&(FF1H!EFGD>>4&(FF1Hf!EFGD>>4!123D



0
0tT23A#'1Q371CECIqsQw ;HHQqS1WBJJ/%""&&bggacAg6F+1 ' 31!"&&A"6:; 772RZZ(D88G(($D88G(($D
C



0
0tT3
GCIilL329;*E Fr/   c                  N   d\  } }t        j                  | d| z  ddg      }t        j                  || ddg      }t        j                  dt         j                        }g dg dg}t        j                  dd	g      }t        j                  dd	t         j
                  z  d
      D ]z  }t        j                  |      |z  t        j                  |      |z  z   }t        j                  |       |z  t        j                  |      |z  z   }	t        j                  ||	|      }
t        j                  |
|d      }t        j                  j                  |      }|j                         }t        j                  |d      dz
  |dd d f<   t        d      D ]/  }t        j                  |d      d	|d d |f   z  z
  ||dz   d d f<   1 t!        t        j"                  t        j$                  |      d      t        j                  ddgt         j                               } y )N)rI   gˡE?r   rI   rJ   rH   r   r   r   r   r   r  r  r   r   r   r   )rK   r   r   rN  rM   r9  r8  r:  r   r   r  rf  _DOF_estimator_geomcompute_geom_weightsr   rM  r   rP   r"  )r   rO  r+   r,   r$  r   sum_wthetax_roty_rotr\   r'  dof_estimatorweightsitris                  r-    test_triinterpcubic_geom_weightsr}    s   
 HR
"c"fb"%&A
"rc2r"#A
"**%AI&IHHaVER255"- Hua"&&-/1q 266%=?2##E5)<..vqvF
++??
K446ffWa(1,ad!H 	GD!vvgq1Agag6F4FFE$q&!)	G!"&&Q"?"$((B82::"F	HHr/   c                  8   d} t        j                  g d      }t        j                  ddddd| dg      }ddgddgddgddgddgddgg}|D ]  }|d   |z  |d   |z  z   }|d    |z  |d   |z  z   }||}}d|z  d	|z  z
  }	g d
g dg dg dg dg dg dg dg}
t        j                  |||
      }t        j                  t        j
                  |j                        t        j                  |j                        d      }t        j                  t        j
                  |j                        t        j                  |j                        d      }t        j                  ||      \  }}|j                         }|j                         } |j                         ||      dk(  }t         j                  j                  d|z  d	|z  z
  |      }t        j                  ||	      }t        j                  ||	      }t        j                  ||	d      }|||fD ]  } |||      }t        ||        d}|j                   |df   }|j                   |df   }t        j                  |j                  |   |j                  |   d      }t        j                  |j                  |   |j                  |   d      }d|z  d	|z  z
  }|||fD ]J  }|j#                  |||t        j$                  dt         j&                        z        \  }t        ||       L  y )NrI   r   r   r   r   r   r   r  r9   r   r   r   r   r   r   r      r   r  r  rH   r_   r   )	tri_index)rK   r   r   r   rM   rP   r+   rQ   r,   rL   rN   r   mar  r  r   r   _interpolate_multikeysrZ  r   )r   rb  y0transformationstransformationrx  ry  r+   r,   r$  r   r\   r   r   mask_out	zs_targetr%  r&  r'  r(  r)  r|  pt1pt2s                           r-   test_triinterp_colinearr    s    E	1	2B	2A1eQ/	0B 1v1v1v1vBx"aIO) #5q!"$~a'8';;""2%q(9"(<<AFT!VO	9i	96	##Aq)4[[)266&((+;R@[[)266&((+;R@R$BXXZXXZ*F((*2r2b8EEKKR$r' 1KA	2261=//:..vqvF
$k:> 	5FBB%i4	5 tQw'tQw'[[#r:[[#r:Gd2g%	$k:> 	5F//B$rwwr'B"B 0 DCB%i4	5A#5r/   c                     d} d}d}d }t        j                  |d|      }t        j                  d| z   dt         j                  z  | z   | d	      }t        j                  |d
t         j                  f   |d      }|d d dd dfxx   t         j                  | z  z  cc<   |t        j
                  |      z  j                         }|t        j                  |      z  j                         }t        j                  ||      } |||      }	t        j                  ddd      }
t        j                  ddd      }t        j                  |
|      \  }
}|
j                         }
|j                         }i }t        d      D ]  }dt         j                  z  | z  |z  }t        j
                  |      |z  t        j                  |      |z  z   }t        j                  |       |z  t        j
                  |      |z  z   }t        j
                  |      |
z  t        j                  |      |z  z   }t        j                  |       |
z  t        j
                  |      |z  z   }t        j                  |||j                        }t        j                  ||	      }t        j                  ||	      }t        j                  ||	d      }|||d}dD ];  }||   }|dk(  r ||
|      ||<    |||      }t!        j"                  |||          =  d}dD ]  }|dk(  r||z  }|}||
z  }|}n|}||z  }|
}||z  }t        j                  |||j                        }t        j                  ||	      }t        j                  ||	      }t        j                  ||	d      }|||d}dD ]'  } ||   ||      }t!        j"                  |||          )  y )Nr  r_   333333?c                    t        j                  d| z
  d|z
        }t        j                  d| z
  d|z
        }t        j                  |  dz
  | dz
        }t        j                  |  dz
  | dz
        }dt        j                  |dz  dz        dz
  z  dz  t        j                  d|z        z  t        j                  |dz  dz        dz
  dz  t        j                  d|z        z  z   d	| dz  |dz  z   z  z    }t        j
                  |      |z
  t        j
                  |      t        j                  |      z
  z  S 
Nr   r   r   r_   r   g      >@      @g      &@rt   rK   hypotarctan2expr8  rQ   rP   r+   r,   r1theta1r2theta2r$  s          r-   r$  z)test_triinterp_transformations.<locals>.z  "   XXcAgsQw'C!GS1W-XXqb3hS)QBHqb3h/B
#A%&s*RVVBvI->>vvr"uqj!!#S(266#f*+==>1a4!Q$;  ! q	!bffQiq	122r/   ffffff?r   r   Fendpoint.r   r         rJ   ra   r  r  )linmin_Er  gZ$.ArD   r+   )rK   rM   r9  repeatnewaxisr8  flattenr:  r   r   rL   rN   rM  r   r  r  r  r   )n_anglesn_radii
min_radiusr$  radiianglesrb  r  triang0z0xs0ys0	interp_z0i_anglerw  r+   r,   r   r   r\   r%  r&  r'  
dic_interp
interp_keyr(  interpzscale_factorscaled_axiss                                r-   test_triinterp_transformationsr    s    HGJ3 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
1add7OruuX~%O
v
	'	'	)B
v
	'	'	)B  R(G	
2rB ++c2r
"C
++c2r
"C{{3$HC
))+C
))+CI8 H"%%("W,FF5M"rvve}R//VVE]N2ub 00VVE]3s!22ffUm^C"&&-"33##Aq'*;*;<2262>//;..vrG
**(*
 3 	HJ
+F!|(.sC(8	*% R.001::1FH	HH0 L! M#r!AA#BBAr!AB#B##Aq'*;*;<2262>//;..vrG
**(*
 3 	MJ,j,R4G,,Wi
6KL	M)Mr/   ztri_smooth_contouring.pngTg;On?)remove_textrc  c                     d} d}d}d }t        j                  |d|      }t        j                  d| z   dt         j                  z  | z   | d	      }t        j                  |d
t         j                  f   |d      }|d d dd dfxx   t         j                  | z  z  cc<   |t        j
                  |      z  j                         }|t        j                  |      z  j                         }t        j                  ||      } |||      }	|j                  t        j                  ||j                     j                  d      ||j                     j                  d            |k         t        j                  |      }
|
j                  |	d      \  }}t        j                   ddd      }t#        j$                  |dd       t#        j&                  |||d       y )Nr  r_   r  c                    t        j                  d| z
  d|z
        }t        j                  d| z
  d|z
        }t        j                  |  dz
  | dz
        }t        j                  |  dz
  | dz
        }dt        j                  |dz  dz        dz
  z  dz  t        j                  d|z        z  t        j                  |dz  dz        dz
  dz  t        j                  d|z        z  z   d	| dz  |dz  z   z  z    }t        j
                  |      |z
  t        j
                  |      t        j                  |      z
  z  S r  r  r  s          r-   r$  z%test_tri_smooth_contouring.<locals>.zU  r  r/   r  r   r   Fr  .r   r   rH   subdivrI   rJ   g?r   z0.5)lwcolorblack)levelscolors)rK   rM   r9  r  r  r8  r  r:  r   r   r   r  r   r   UniformTriRefinerrefine_fieldrV   r   triplot
tricontour)r  r  r  r$  r  r  rb  r  r  r  refinertri_refiz_test_refir  s                 r-   test_tri_smooth_contouringr  N  s    HGJ3 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
1add7OruuX~%O
v
	'	'	)B
v
	'	'	)B  R(G	
2rBRXXb!2!2388a8@ !2!2388a8@B!" #
 $$W-G#00A0>HkYYr2u%FKKCu-NN8[Hr/   ztri_smooth_gradient.pnggZd;O?c                  p   d } d}d}d}t        j                  |d|      }t        j                  ddt         j                  z  |d	      }t        j                  |d
t         j                  f   |d      }|d d dd dfxx   t         j                  |z  z  cc<   |t        j
                  |      z  j                         }|t        j                  |      z  j                         } | ||      }t        j                  ||      }	|	j                  t        j                  ||	j                     j                  d      ||	j                     j                  d            |k         t        j                  |	      }
|
j                  |d      \  }}t        j                   |	|       }|j#                  |	j$                  |	j&                        \  }}t        j                  ||      }t)        j*                          t)        j,                         j/                  d       t)        j0                  |	d       t        j2                  ddd      }t4        j6                  d   }t)        j8                  ||||g d       t)        j:                  |	j$                  |	j&                  ||z  ||z  ddddddd       y )Nc                     | dz  |dz  z   }t        j                  ||       }t        j                  |      |z  }t        j                  |      |z
  t        j                  |      t        j                  |      z
  z  S )zAn electric dipole potential V.r   )rK   r  r8  rQ   rP   )r+   r,   r_sqrw  r$  s        r-   dipole_potentialz2test_tri_smooth_gradient.<locals>.dipole_potentialy  sa    !tad{

1a FF5M$q	!q	"&&) 344r/      r_   r   r  r   r   Fr  .r   r   r   r  equalz0.8)r  rI   rJ   g{Gz?hot)rk   rJ   rJ   rJ   )r  cmap
linewidthsr}   ri   bluegy&1|?r   rL  )unitsscalezorderr  width	headwidth
headlength)rK   rM   r9  r  r  r8  r  r:  r   r   r   r  r   r   r  r  r  r   r+   r,   r   r   gca
set_aspectr  rV   mpl	colormapsr  quiver)r  r  r  r  r  r  r+   r,   Vr\   r  r  r  tciExEyE_normr  r  s                      r-   test_tri_smooth_gradientr  u  s7   5 HGJKK
D'2E[[AbeeGX>FYYvc2::o.a@F
1add7OruuX~%O	rvvf~	&&(A	rvvf~	&&(AAA1%F
OOBHHQv//05515=v//05515=? ! "
 $$V,G#0010=Hk 
#
#FQB
/C\\&((FHH-FBXXb"F JJLGGI!KKe$YYr2t$F==DNN8[d24 JJvxx2f9biQfbR9r/   c                     t        j                  g d      } t        j                  dddt        j                  d      z  ddg      }t        j                  g dg dg d	gt         j                  
      }t        j                  g dt        
      }t        j                  | |||      }t        j                  |      }t        |j                  t        j                  ddddt        j                  d      z  z   z  g             t        |j                  d      t         j                  j                  dddt        j                  d      z   z  t         j                  g|             t        j                  g d      } t        j                  g d      }t        j                  g dgt         j                  
      }t        j                  | ||      }t        j                  |      }t        |j                         t        j                  dg             d}d }t        j                  dd|dz         } t        j                   || d       || d            \  } }| j!                         } |j!                         }t        j                  | |t#        |dz               }t        j                  |      }|j%                  d      }t        j&                  dt        
      }	g d}
d|	|
<   t)        ||	       t        j&                  dt        
      }d|d<   |j+                  |       |j%                  d      }g d}d|	|<   t)        ||	       y )NrI   rJ   r   rI   rk   rI   r   r   r  rJ   r   r   r   r   FFTr   F)rescalerk   )rI   rJ   rk   )rJ   rL  r  r   c                 ^    t        j                  |       |z  t        j                  |       z  S rq   )rK   r"  sign)r+   r   s     r-   powerztest_tritools.<locals>.power  s!    vvay!|BGGAJ&&r/   r   r   r   r      )r   r   r   r   r   r   r   r         "   #   ~                                    TP   ),   -   >   ?   N   O   r  Q   R   S   b   r@   t   u   )rK   r   sqrtr   boolr   r   TriAnalyzerr   scale_factorscircle_ratiosr  masked_arraynanrM   rL   rN   r!  get_flat_tri_maskr   r   r   )r+   r,   r   r   r\   analyserr0  r  	mask_flat
verif_maskcorners_indexcenter_indexs               r-   test_tritoolsr    s    	&'A
"b#bggbk/334A)Y	:"((KI88(5D1id;F'Hh44 hhB3rwwr{?0B,C'DEGu-
CR^!4bff=tDF
 	A
#$A)BHH5I1i0F'Hh446"G 	
A' 	CQqS!A;;uQ|U1d^4DAq		A		A10B1Q30GHF'H**3/I#T*JGM $J}y*- 88Ct$DDH
OOD**3/IML#J|y*-r/   c                     d} d}t        j                  dd| dz         }t        j                  ||      \  }}|j                         }|j                         }t        j                  d| dz  z  t
              }d|| dz  d  t        j                  ||t        | dz         |      }t        j                  |      }|j                  |	      }|j                  }|j                  }	| |dz  z  }
t        j                  dd|
dz         }t        j                  ||      \  }}|j                         }|j                         }t        j                  t        j                  |d
|z   z  d      t        j                  |d
|	z   z  d            }t        |d       |j                   }t        j"                  |j                  |j$                     d      dz  }t        j"                  |j                  |j$                     d      dz  }|j'                         } |||      }|j                   |   }t        ||       t        j(                  g d      }t        j(                  g d      }t        j                  ||g dg dg      t        j                  ||g dg dg      g}t        j*                  |dz
  |dz
        }g }t-        d      D ]  }t        j                  ||         }|j/                  |d	      \  }}t        j0                  |j                  |j                  |f      d   }|t        j2                  |d d df   |d d df   f         }||gz  } t5        |d   |d          y )Nr   r   r  rJ   r   r   Tr   r  r   r   r   r   rI   rJ   rI   rJ   rI   rI   rJ   rJ   r   r   r   r   r   r  r   r   )rK   rM   rL   rN   r   r  r   r   r!  r  refine_triangulationr+   r,   in1daroundr   r   r   r   r   r   r  rM  r  dstacklexsortr   )r0  r  r+   r,   r   r\   r  refi_triangx_refiy_refin_refix_verify_verifind1d	refi_maskrefi_tri_barycenter_xrefi_tri_barycenter_y
tri_finderrefi_tri_indicesrefi_tri_maskr$  xyz_datairefined_triang	refined_zxyzs                             r-   test_trirefiner0    s   	AF
CQqS!A;;q!DAq		A		A88AadF$'DDAK10B1Q30G%)+F$$V,G..f.=K]]F]]F]Fkk#r6!8,G{{7G4GWmmoGmmoGGGBIIgs7{3Q7IIfc&j1157Eud#   IFF;==1F1F#G()+-/0FF;==1F1F#G()+-/0%%'J!"7"79KK 01My-0 	

'(A


'(A  A	9'=>  A	9'=>@F
S!c'"AH1X ((3$+$8$81$8$E!	ii))>+;+;YGHK"**c!Q$iQT345SE hqk8A;7r/   r;  linearcubic)idsc                    t         j                  d dd df   \  }}t        j                  |j                         d      }t        j                  |j                         d      }t        j                  |      }t        j                  ||      }t        j                  |      } | ||      }|j                  ||d       y )Nr   )triinterpolatorr  )	rK   mgridr  r  
zeros_liker   r   r  r  )r;  r+   r,   r$  r   r  r(  s          r-   test_trirefine_maskedr8    s     88BQBFDAq
		!))+q!A
		!))+q!A
aA


Q
"C$$S)G#q!FF1=r/   c                    g }t        | dz
        D ]N  }t        | dz
        D ];  }||| z  z   }|dz   || z  z   }||dz   | z  z   }|dz   |dz   | z  z   }||||g|||ggz  }= P t        j                  |t        j                        S )zU
    Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
    r   r   )rM  rK   r   r   )r0  r   r,  jr   r   r   ds           r-   r!  r!  -  s     C1Q3Z *qs 	*AAaCA1!AQqS!GA11aAQ1I1ay))C	** 88Crxx((r/   c                      t        j                         j                         } t        j                  g dg dg dg dg      }| j                  |d      J d       y )Nr  r  r   r   r   zb-z(triplot should return the artist it adds)r   r   r   r   r   r  )r   r\   s     r-   test_triplot_returnr=  <  sW    		!	!	#B2i(*F ::fd#/ 323/r/   c                  Z   t        j                  g dg dg      } t        j                  |       rJ t        j                  | dd      }t        j                  |      sJ t        j                  g d      }t        j                  g d      }t        j                  |||       }t        j                  |||      }t        j
                  |      }t        j
                  |      }|j                  d	      }|j                  d	      }	t        |j                  |	j                         y )
Nr  )r   r   r   TF)r   order)g(\?gzG?gQ?g{Gz?)gQ@@gzGA@gQA@gףp=
A@r   r  )	rK   r   	isfortranr   r   r  r  r   r   )

triangles1
triangles2r+   r,   triang1triang2refiner1refiner2fine_triang1fine_triang2s
             r-   ,test_trirefiner_fortran_contiguous_trianglesrJ  F  s     9i01J||J'''*4s;J<<
###
)*A
-.A  Az2G  Az2G%%g.H%%g.H000:L000:L|--|/E/EFr/   c                  @   t        j                  ddd      } t        t         j                  t        j                  | |             \  }}||dz
  kD  |dk  z  |dkD  z  }||   ||   }}t        j
                  d      }|t        j                  |      z  |t        j                  |      z  z
  }|t        j                  |      z  |t        j                  |      z  z   }t        j                  ||      }|j                  }d |_        |j                  }	t        ||	       y )Nr  r   r  r   g333333g333333   )rK   rM   maprN   rL   radiansr8  r:  r   r   rS   rT   r   )
xir+   r,   wrw  x1y1r\   qhull_neighborsown_neighborss
             r-   test_qhull_triangle_orientationrU  ]  s    	RC	 BrxxR,-DAq	
QUq5y!QX.AQ41qAJJrNE	
266%=1RVVE]?	*B	
266%=1RVVE]?	*B B'F &&O F$$M6r/   c                     t        j                  g d      } t        j                  dddt        j                  d      z  ddg      }t        j                  g dg dg d	gt         j                  
      }t        j                  g dt        
      }t        j                  | |||      }t        j                  |      }|j                          y )Nr  rI   r   r   r  rJ   r   r   r   r   r  r   )	rK   r   r  r   r  r   r   r	  _get_compressed_triangulation)r+   r,   r   r   r\   r  s         r-   #test_trianalyzer_mismatched_indicesrX  t  s    
&'A
"b#bggbk/334A)Y	:"((KI88(5D1id;F'H **,r/   c                      g d} g d}g d}t        j                          t        j                  t              5  t        j
                  | ||ddg       d d d        y # 1 sw Y   y xY w)N)rI   rJ   rJ   )rI   rI   rJ   )r   r   r  rJ   rI   )r   r   r3   rB   rC   tricontourf)r+   r,   r$  s      r-   "test_tricontourf_decreasing_levelsr[    sQ    AAAJJL	z	" -1a#s,- - -s   AA'c            
      	   ddl m}  t        j                  t        d      5  t
        j                  j                          d d d        t        j                  t        d      5  t
        j                  j                  g dgg gd d d d       d d d        g d}g d	}t        j                  t        d
      5  t
        j                  j                  ||ddggd d d d       d d d        g dg}t        j                  t        d      5  t
        j                  j                  |||ddgd d d       d d d        t        j                  t        d      5  t
        j                  j                  |||d dggd d       d d d        t        j                  t        d      5  t
        j                  j                  |||d d dggd       d d d        t
        j                  j                  |||d d d d      }t        j                  t        d      5  |j                  g        d d d        t        j                  t        d      5  |j                  ddg       d d d        t        j                  t        d      5  t
        j                  j                          d d d        t        j                  t        d      5  t
        j                  j                  |dg       d d d        g d}t
        j                  j                  ||      }t        j                  t        d      5  |j                  dd       d d d        t        j                  t        d      5  t
        j                  j                          d d d        t
        j                  j                  |      }t        j                  t        d      5  |j                  dgddg       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   xY w# 1 sw Y   xY w# 1 sw Y   Xx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   txY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )_triz.function takes exactly 7 arguments \(0 given\)r=   z,x and y must be 1D arrays of the same lengthr   F)r   r   r   r:   z.triangles must be a 2D array of shape \(\?,3\)r   zCmask must be a 1D array with the same length as the triangles arrayz,edges must be a 2D array with shape \(\?,2\)zGneighbors must be a 2D array with the same shape as the triangles arrayr   z<z array must have same length as triangulation x and y arrayz.function takes exactly 2 arguments \(0 given\)z?z must be a 1D array with the same length as the x and y arraysz(filled contour levels must be increasingz-function takes exactly 1 argument \(0 given\)z*x and y must be array-like with same shape)
matplotlibr]  r3   rB   r   r  r   rC   calculate_plane_coefficientsr   TriContourGeneratorcreate_filled_contourTrapezoidMapTriFinder	find_many)r]  r+   r,   r   r\   r$  tcgr   s           r-   test_internal_cpp_apire    s    
C
E ! 	 !
 
M
O GrA3dD$FG 	AA	C
E H 	q!q!fXtT4GH
 ;D	%
& F 	q!TAq64uE	F 
M
O Eq!T41#eDE 
%
& F 	q!T4vuE	F XX##Aq$dD%HF	
 0 	++B/	0 
%
&   	A	  
C
E ' 	$$&'
 

 2 	$$VaS1	2 	A
((
&
&vq
1C	I
K (!!!Q'(
 
M
O )&&() ..v6I	K
M )QC!Q() )S! !
G GH HF FE EF F0 0   ' '
2 2( (
) )) )s   O$(O(7)O5(P(P(PP)P6:Q<"Q%QQ*<Q6O%(O25O?PPP&)P36Q QQQ'*Q36Q?c                  "   t        j                  g d      } t        j                  g d      }d}t        j                  | |      }t        j                  | |z   ||z         }t	        |j
                        t	        |j
                        k(  sJ y )N)r   r   r   r   r   )r   r   r   r   r   g    _B)rK   r   r   r   rO   r   )r+   r,   offsetr\   triang_offsets        r-   test_qhull_large_offsetri    su    


$%A


$%AF1%F&&q6z1v:>Mv C(?(?$@@@@r/   c            	      N   g d} g d}t        j                  | |      }t        j                          t	        j
                  t        d      5  t        j                  |dddt        j                  g       d d d        t	        j
                  t        d      5  t        j                  |dddt        j                   g       d d d        t	        j
                  t        d      5  t        j                  |dddt        j                  g       d d d        t	        j
                  t        d      5  t        j                  |t        j                  j                  g d	g 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   y xY w)Nr   r   zCz array must not contain non-finite values within the triangulationr=   r   r   r   z9z must not contain masked points within the triangulation)r   r   r   r   )r   r   r   r   r   )r   r   r   r   r3   rB   rC   rZ  rK   infr  r  r   )r+   r,   r\   s      r-   test_tricontour_non_finite_zrl    sQ   AA1%FJJL	z *K 
L 3Aq"&& 123 
z *K 
L 4Aq266' 234 
z *K 
L 3Aq"&& 123 
z *D 
E NL| LMN N3 34 43 3N Ns0   )E6*F')F3:F6F FFF$c                  &   g d} g d}g d}t        j                         \  }}|j                  | ||      }|j                  | ||      }|j                  |j                  k7  sJ |j                  ||      }|j                  |j                  k(  sJ y )N)rI   r   rJ   )rI   rJ   rI   )rJ   rk   r   )r   r   rZ  r  _contour_generator)r+   r,   r$  r   r   tcs1tcs2tcs3s           r-   test_tricontourset_reuserr    s     	AAAllnGC>>!Q"D==Aq!D""d&=&======q!D""d&=&====r/   c                     g d}g d}g dg}| j                         j                  |||d       |j                         j                  |||d       y )Nr9   r:   r   z--)ls)	linestyle)r   r  )fig_testfig_refr+   r,   datas        r-   test_triplot_with_lsry    sS    AA;D1dt4q!TT:r/   c                      g d} g d}g dg}t        j                         \  }}|j                  | ||d      \  }}|j                         \  }}|dgk(  sJ t	        |      dk(  sJ |d   |u sJ y )Nr9   r:   r   label)r{  r   r   )r   r   r  get_legend_handles_labelsrO   )	r+   r,   rx  r   r   linesmarkershandleslabelss	            r-   test_triplot_labelr    s    AA;DllnGCZZ1d'Z:NE7224OGVgYw<11:r/   )AnumpyrK   numpy.testingr   r   r   numpy.ma.testutilsr  	testutilsr  r3   r^  r  matplotlib.pyplotpyplotr   matplotlib.trir   r   matplotlib.pathr   matplotlib.testing.decoratorsr   r   r
   r;   rE   r]   rg   rn   r4   r5   rr   r   r   r   r   r   r   r   r3  rV  rr  r}  r  r  r  r  r  r0  r  r  r8  r!  r=  rJ  rU  rX  r[  re  ri  rl  rr  ry  r  r7   r/   r-   <module>r     s   F F # #       O' ':/('HTA( HS1#JVaV 		+,
" 
!
!
*FZ #$% &6*8*=1d.N\6~SGlKF\H4;5|ZMz ./TuM#I N#IL ,-4UK/9 L/9h6.r58p 44335&0  2>	2>)3G.7.
--P)fAN0> ; ;	r/   