+
     ]i  c                   s   ^ RI t^ RIHtHtHt ^ RIHu Ht	 ^ RI
t
^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHt  ! R R4      tR tR tR	 tR
 tR tR t]
P>                  PA                  R. . 3^.^.3^^.^^.3. R=O. R>O3. R?O. R@O3. RAO. RBO3.4      R 4       t!R t"]! R.4      R 4       t#R t$R t%R t&R t'R t(R t)R t*R t+R t,R t-R t.]! R.RRR 7      R! 4       t/]! R".RR#R 7      R$ 4       t0R% t1R& t2]
P>                  PA                  R']Pf                  ]Ph                  .R(R).R*7      R+ 4       t5R, t6R- t7R. t8R/ t9R0 t:R1 t;R2 R3 lt<R4 t=R5 t>R6 t?]! R7.R87      R9 4       t@R: tAR; tBR< tCR# )C    N)assert_array_equalassert_array_almost_equalassert_array_less)Path)image_comparisoncheck_figures_equalc                   sB  a  ] tR t^t o . R
Ot. ROt. RO. RO.tRR.t]P                  P                  R]]./ ]]RR.3]]]./ ]]]R.3]].]! ]R7      ]]]R.3]].]! ]R7      ]]R].3]]].]! ]R7      ]]]].3]].]! ]]R7      ]]]].3.4      R 4       tR	tV tR# )TestTriangulationParamsFTzargs, kwargs, expectedN	trianglesmaskr	   r   c                s    ^^.pR^RR/p\         P                  P                  W,           / VCVC4      w  rgrrVw  rr\        W4       R# )   abZ4N)mtriTriangulation_extract_triangulation_paramsr   )ZselfargsZkwargsZexpectedZ
other_argsZother_kwargsx_y_
triangles_mask_args_kwargs_xyr	   r   s   &&&&            J/usr/lib64/python3.14/site-packages/matplotlib/tests/test_triangulation.py!test_extract_triangulation_paramsZ9TestTriangulationParams.test_extract_triangulation_params   sc     V
QS)<<!#=f#=#=? 	2
5 !)i 	:1     r    r   r    r    r!   r    r   r    r      r    r$      )Z__name__Z
__module__Z__qualname__Z__firstlineno__r   r   r	   r   pytestmarkparametrizeZdictr   Z__static_attributes__Z__classdictcell__)Z__classdict__s   @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                  sn    R .p . RO. RO. RO.V .p\         P                  P                  V/ 4      w  r#rErgR# )TNr    r$   r   r    r    r   r#   )r   r   r   )r   r   r   r   r   r   r   r              r   *test_extract_triangulation_positional_maskr-   +   s<    6Dy9+t4D88rB .BJugr   c                  s   . R	Op . R
Op\         P                  ! \        RR7      ;_uu_ 4        \        P                  ! V ^^.4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! W. RO4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! WR4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! W. RO.4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! W. RO.4       RRR4       R#   + '       g   i     EL+; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)r   zx and y must be equal-lengthZmatchNz>triangles must be a \(N, 3\) int array, but found shape \(3,\)z3triangles must be a \(N, 3\) int array, not 'other'Zotherzfound value 99zfound value -1r    r"   r#   )r    r   c   )r    r   r!   r'   raises
ValueErrorr   r   r   r        r   test_triangulation_initr5   7   s*   AA	z)G	H	H1q!f% 
I	
 
 	1+	

 
H
J 
J 	1)
J 
z)9	:	:1*. 
;	z)9	:	:1*. 
;	: 
I	H	H
 


J 
J 
;	:	:	:	:s;   E)3E=9F=F#F6)E:	=F	F 	#F3	6G	c                  s   . ROp . ROp. RO. R	O.p\         P                  ! WV4      p\        VP                  . R
O. RO.4       VP	                  RR.4       \        VP
                  RR.4       VP	                  R4       Rp. ROR.R.RR3 FA  p\        P                  ! \        VR7      ;_uu_ 4        VP	                  V4       RRR4       KC  	  R#   + '       g   i     KX  ; i)r   FTNz3mask array must have same length as triangles arrayr.   r    r"   r#   )r$   r&   r    )r!   r!   r   )r!   r!   r    )FTF)	r   r   r   	neighborsset_maskr   r'   r1   r2   )r   r   r	   triangZmsgr            r   test_triangulation_set_maskr:   K   s    AAI&Ii0F v''+{)CD OOUDM"v{{UDM2 OOD AC%wtD]]:S11OOD! 21 E111s   4CC%c                  s   ^p ^p\         P                  ! \         P                  ! RRV 4      \         P                  ! RRV4      4      w  r#VP                  4       pVP                  4       pW,          p^V ^,
          ,          V^,
          ,          p^V ,          V,          ^V ,          ,
          ^V,          ,
          ^,           p\        P
                  ! W#4      p\        VP                  V4       \        VP                  V4       VP                  pRVn
        \        VP                  V4       \        \         P                  ! VP                  4      \         P                  ! V4      4       R# )                 ?N)npmeshgridlinspaceravelr   r   r   r   r   r6   
_neighborsr   uniquer	   arange)	ZnxZnyr   r   npointsZ
ntrianglesZnedgesr8   r6   	            r   test_delaunayrG   b   s   	
B	
B;;r{{3R0"++c32KLDA		A		AeGbdr!t$JrT"Wqt^ad"Q&F %F fhh*fhh*   IFv''3 ryy!1!12BIIg4FGr   c                  s   ^
p ^p^p\         P                  P                  ^4       \         P                  P                  V 4      p\         P                  P                  V 4      pW2,          W1&   WB,          WA&   \        P                  ! W44      p\        \         P                  ! VP                  4      \         P                  ! \         P                  ! V 4      V4      4       R# )
   N)
r>   randomseedr   r   r   rC   r	   ZdeleterD   )rE   Z	duplicateZduplicate_ofr   r   r8   r9   r   test_delaunay_duplicate_pointsrK      s    GILIINN2
		!A
		!A?AL?AL %F ryy!1!12yy7!3Y?Ar   c                  s   \         P                  ! R R^4      p \         P                  ! R R^4      p\        P                  ! \        4      ;_uu_ 4        \
        P                  ! W4       RRR4       \         P                  ! V R4      p \         P                  ! VR4      p\
        P                  ! W4       R#   + '       g   i     LV; i)r<         $@N       @g       @)r>   r@   r'   r1   ZRuntimeErrorr   r   Zappendr3   r4   r   test_delaunay_points_in_linerN      s     	Cr"A
Cr"A	|	$	$1  
% 			!SA
		!SAq 
%	$s   B88C	zx, yc                 s    \         P                  ! \        4      ;_uu_ 4        \        P                  ! W4       R R R 4       R #   + '       g   i     R # ; iNr0   r3      &&r   !test_delaunay_insufficient_pointsrQ      s0     
z	"	"1  
#	"	"	"s   AA	c            
      sl  a \         P                  ! R R.RR.RR.RR.RR.RR.RR..4      p \         P                  ! RR.RR.RR.R	R.R	R.R
R.RR..4      pR oV3R lp\        P                  ! V R,          V R,          4      pV F  pK  	  \        P                  ! V R,          V R,          4      pR# )gLXz?gCM??g~9B.?g/7R?g9?gHC?gt?g(\?g?ffffff?      ?皙?c                 sx    \         P                  ! W34      P                  p\        V4      P	                  V4      # rO   )r>   ZvstackZTr   Zcontains_point)ZxtriZytrixy
tri_pointss   &&& r   tri_contains_pointZ0test_delaunay_robust.<locals>.tri_contains_point   s.    YY|,..
J..r22r   c                 sJ   <a a \        VV V3R  lS P                   4       4      # )c              3   s|   <"   T F1  pS! SP                   V,          SP                  V,          S4      x  K3  	  R # 5irO   r3   )Z.0trirW   r8   rU   s   & r   Z	<genexpr>ZCtest_delaunay_robust.<locals>.tris_contain_point.<locals>.<genexpr>   s4      0.s &fhhsmVXXc]BGG.s   9<)sumr	   )r8   rU   rW   s   ffr   tris_contain_pointZ0test_delaunay_robust.<locals>.tris_contain_point   s#     0$..0 0 	0r   Ng     g     g     ڿg     ڿg     ڿgq=
ףpݿgzGڿgQ޿g)\(ܿNNNr    r\   r   )r   NNr    )r^   r   )r>   arrayasarrayr   r   )rV   Ztest_pointsrZ   r8   Z
test_pointrW   s        @r   test_delaunay_robustra      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 
4 0*T2BCF!
k
 
5 1:e3DEFr   ztripcolor1.pngc                  s   \         P                  ! . R	O4      p \         P                  ! . R
O4      p\         P                  ! . RO. RO. RO. RO. RO. RO. RO. RO. RO. RO.
4      p\        P                  ! WV4      pV RV,          ,           pWP                  ,          P                  ^R7      pWP                  ,          P                  ^R7      pRV,          V,           p\        P                  ! ^y4       \        P                  ! W4RR7       \        P                  ! R4       \        P                  ! ^z4       \        P                  ! W7RR7       \        P                  ! R4       R# )r          ?Zaxisk)
edgecolorszpoint colors)
facecolorsre   rf   N)
r    rb   r   r    rb   r   r    rb   r   rS   )
r    r    r    rb   rb   rb   r   r   r   rS   r    r   r&   )r      r&   r   r$   rh   )r$   r;   rh   )r&   rh      )rh      rj   )rh   r;   	   )rk   rh   rl   )   rk   rl   )r;   rm   rl   )
r>   r`   r   r   r	   meanpltZsubplot	tripcolorZtitle)r   r   r	   r8   ZCpointsZxmidZymidZCfacesr,   r   test_tripcolorrq      s    


>?A


>?A

9999i	4 5I i0F#a%iG###+D###+DX_FKKMM&c2IInKKMM&<IIlr   c            	      s   . ROp . ROp\         P                  ! 4       w  r#\        P                  ! \        RR7      ;_uu_ 4        VP                  W4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W. RO4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W. ROR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W^^.RR	7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W^^.RR
7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W. ROR7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W^^.R4       RRR4       VP                  W. RO4       VP                  W. RORR
7       VP                  W^^.4       VP                  W^^.R7       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELi; i  + '       g   i     EL:; i  + '       g   i     EL; i  + '       g   i     L; i)r   z!tripcolor\(\) missing 1 required r.   Nz!The length of c must match eitherz,length of facecolors must match .* trianglesrf   z-'gouraud' .* at the points.* not at the facesZgouraud)rf   shading)rs   z+positional.*'c'.*keyword-only.*'facecolors')ZCzUnexpected positional parameterZunused_positionalr    r"   r   r$   r&   )r   r$   r&   rh   )ro   subplotsr'   r1   	TypeErrorrp   r2   )r   r   figaxs       r   test_tripcolor_colorry     s   AAllnGC	y(L	M	M
Q 
N	z)L	M	M
Q9% 
N	zK
M 
M
Ql3
M 
zL
N 
N
Qq!fi@
N 
zL
N 
N
QAq695
N 
yJ
L 
L
Q\*
L 
y(I	J	J
QAq6#67 
K LL|$LL|YL7LL1vLL1a&L)/ 
N	M	M	M	M	M
M 
M 
M
N 
N 
N
N 
N 
N
L 
L 
L 
K	JsT   I II(I<JJ$J8 I	I%	(I9	<J	J!	$J5	8K	c                  s   \         P                  P                  R 4       \         P                  P                  ^
4      \         P                  P                  ^
4      \         P                  P                  ^
4      r!p \        P
                  ! 4       P                  4       pRpVP                  WW$R7      P                  pR# )i!N,)climN)      ?rS   )	r>   rI   rJ   Zrandro   figureadd_subplotrp   norm)r   r   crx   rz   r~   r9   r   test_tripcolor_climr   %  su    IINN8iinnR ")).."4biinnR6H!A		!	!	#BD<<a<+00Dr   c            	      s   . ROp . R	OpRR.p\         P                  ! 4       w  r4\        P                  ! \        RR7      ;_uu_ 4        VP                  WW"R7       RRR4       \        P                  ! \        RR7      ;_uu_ 4        VP                  WRVR7       RRR4       R#   + '       g   i     LS; i  + '       g   i     R# ; i)
r   皙?rb   z"Positional parameter c .*no effectr.   rr   Nzinterpreted as cr    r"   )ro   ru   r'   ZwarnsZUserWarningrp   )r   r   r   rw   rx           r   test_tripcolor_warningsr   /  s    AA	c
AllnGC	k)M	N	N
Q1+ 
O	k)M	N	N
Q-!< 
O	N 
O	N	N	N	Ns   B'B:'B7	:C	c                  s$   \         P                  ! . RO. RO.\         P                  R7      p \         P                  ! . RO4      pV P                  4       p\        P
                  ! VR,          VR,          V 4      P                   \        W 4       R# )r&   ZdtypeNr&   r$   r    )r&   r   r    ))r    r    )r    g?)r   r    )r   r   r[   r]   )r>   r_   int32copyr   r   Zedgesr   )r	   ZpointsZold_triangles      r   test_no_modifyr   ;  s^    )Y/rxx@IXX89FNN$Mvd|VD\9=CC}0r   c                  s   \         P                  ! \         P                  ! ^4      \         P                  ! ^4      4      w  rV P                  4       p VP                  4       p. RO. RO. R	O. R
O. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO.p\         P                  ! \        V4      4      p^VR&   \        P                  ! WW#4      pVP                  4       p. ROp. ROp\         P                  ! Wg4      w  rgVP                  4       pVP                  4       pV! Wg4      p\        V. RO4       V! VR,
          VR,
          4      p\        V. RO4       . ROp. ROpV! Wg4      p\        V. RO4       RR.pRR.pV! Wg4      p\        V^ ^.4       Rp	. R Op R^ ^ ^ ^ V	^.p. R!O. R"O. R#O. R	O. R$O. R%O. R&O. R'O.p\        P                  ! WV4      pVP                  4       p. R)OpR(R.p\         P                  ! Wg4      w  rgV! Wg4      p\        V. R*O. R+O.4       Rp	RV	) ^ ^ ^ ^ ^.p . R,Op. R-O. R.O. R/O. R0O. R1O. R2O. R3O. R'O.p\        P                  ! WV4      pVP                  4       pR(R.p. R)Op\         P                  ! Wg4      w  rgV! Wg4      p\        VRR.^ ^.^ ^.^ ^.^^.^^.RR..4       . R4Op . R5Op. R-O. R6O.p\        P                  ! WV4      pVP                  4       p. R7Op. R8OpV! Wg4      p\        V. R9O4       VP                  ^^ .4       V! Wg4      p\        V. R:O4       R# );rh   rm   rH   Nrb   r<         @皙?Nr    r   rh   r   r;   rh   r   r$   r;   r$   rj   r;   r$   r&   rj   r&   rk   rj   rh   r;   rm   r;   rl   rm   r;   rj   rl   rj   rH   rl   rj   rk   rH   rk      rH   rm   rl      rl      r   rl   rH   r   rH      r   rH   r   r   r      r   )r{         ?      @      
@r!   )r    r$   rh   r!   rj   r!   rH   r!   r   r      r!   r!   r!   r!   r!   )r!   r!   r!   r!   r!   r   r&   r;   r!   rk   r!   r   r!   r   r      )rb         ?      @rb   r   r   r   r   r<   r=   rM   r   )r<   r<   r<   r   r   r   r=   rM   r   r   r   r   )r    r$   rh   r   r   r   r&   r   rj   rk   rH   r   r   r    r   r$   r&   r   r   r*   r    r&   r$   r    rh   r&   r$   r&   r;   r&   rh   r;   r   r;   rj   rh   rj   r;   皙)r   r   ?gffffff?gffffff?g333333@g333333@)r!   r    r    r   r   r$   r!   )r!   rj   rj   rj   rk   rk   r!   )r   r   r    r   r$   r&   r   r#   )r    r   r;   rt   )r   r&   rh   )r   rh   r;   )r$   rj   r&   )r&   rj   rh   r    r   r    r   r    r    r   r   r   r&   r$   )gɿ皙?rT   g333333?)rb   rb   rb   rb   )r!   r    r   r!   )r!   r!   r   r!   )r>   r?   rD   rA   zeroslenr   r   get_trifinderr   r7   )
r   r   r	   r   r8   	trifinderxsystrisdelta
             r   test_trifinderr   E  s+   ;;ryy|RYYq\2DA		A		AIy)YIy)Z[*k;|\;I 88C	N#DDJi6F$$&I	!B	!B[[ 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i0F$$&I	-B
B[[ FBRDt557 8 E	eVQQ1%A'AIy)YIy2Ii0F$$&I
B	-B[[ FBRDtr2hAAAAA!2h( )
 	AAI&Ii0F$$&I	B	BRDt^,
OOQFRDt_-r   c                  s(  aaa \         P                  ! \         P                  ! ^4      \         P                  ! ^4      4      w  rV P                  4       p VP                  4       pRV ,          RV,          ,
          p. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. RO. R O. R!O. R"O. R#O. R$O. R%O. R&O.p\         P                  ! \        V4      4      p^VR&   \        P                  ! WW44      p\        P                  ! WR4      p\        P                  ! WR4      p\        P                  ! WRRR7      p\         P                  ! RR^4      p	. R'Op
\         P                  ! W4      w  rWgV3 F,  pV! W4      p\        VRV	,          RV
,          ,
          4       K.  	  . R(Op	T	p
\         P                  ! W4      w  rWgV3 F1  pV! W4      p\        VP                  R	.^,          .^,          4       K3  	  \         P                  ! RR^4      p	. R)Op
\         P                  ! W4      w  rWgV3 Fp  pV! W4      p\        P                  ! VRV	,          RV
,          ,
          4       V	^8  V	^8*  ,          V
^8  ,          V
^8*  ,          p\        VP                  V4       Kr  	  RR*R
uoooVVV3R lpVVV3R lp\         P                  ! . R+O4      p \         P                  ! . R,O4      p\         P                  ! . R-O. R.O. R/O. R0O. R1O. R2O. R3O. R4O.4      p\        P                  ! WV4      pV! W4      pV! W4      p\         P                  ! RR^4      p	\         P                  ! RR^4      p
\         P                  ! W4      w  r\        P                  ! WRRVR7      pV! W4      p\        VV! W4      4       VP!                  W4      w  ppV! W4      w  pp\        VV4       \        VV4       ^p\         P                  ! \         P                  ! RRV^,           4      \         P                  ! RRV^,           4      4      w  rV P                  4       p VP                  4       pV! W4      p\        P                  ! W\#        V^,           4      R7      p\         P                  ! \         P                  ! RR^4      \         P                  ! RR^4      4      w  rV	P                  4       p	V
P                  4       p
\        P                  ! WR4      p\        P                  ! WR4      p\        P                  ! WRRR7      pV! W4      p\         P$                  ! V! W4      V,
          4      pWx3 F&  p\         P$                  ! V! W4      V,
          4      pK(  	  R# )5rh   Gz?)\(@r   geomkindr{         @      ?T333333?c                 s   < SV R ,
          ^,          ,          SVR ,
          ^,          ,          ,           SV ,          V,          ,           # )rb   r   r   r   r   r   r      &&r   quadZtest_triinterp.<locals>.quad  s3    !C%!|a3
l*QqSU22r   c                 s   < ^S,          V R,
          ,          SV,          ,           ^S,          VR,
          ,          SV ,          ,           3# )r$   rb   r   r   r   r   gradient_quadZ%test_triinterp.<locals>.gradient_quad  s8    !QsUac!1Q3#;1#455r   r<   r=   userr   dzr   r   r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r{   rS   r   r   )g      пr   r   r   )r{   rS   r   r   g)\()r   &jjZ? rh?r<   r=   r=   r<   )333333?HPs?X9v?r<   r<   r=   r=   r#   r&   r    rh   rh   r    r$   rh   r$   r;   r   r;   r$   rj   r;   r   rj   r   r    rj   r    r&   )r>   r?   rD   rA   r   r   r   r   LinearTriInterpolatorCubicTriInterpolatorr@   r   r   r   matestr_   gradientmeshgrid_trianglesabs)r   r   zr	   r   r8   linear_interpcubic_min_E
cubic_geomr   r   interpzsr   r   r   Z
cubic_userZ	interp_zsZinterp_dzsdxZinterp_dzsdyZdzsdxZdzsdynZdiff_linZ
diff_cubicr   r   r   s                            @@@r   test_triinterpr     s]   ;;ryy|RYYq\2DA		A		AQaAIy)YIy)Z[*k;|\;I 88C	N#DDJi6F..v9M++F6K**66BJ	T4	#B	!B[[ FB z:B^!"tBwb'8: ;
 
#B	B[[ FB z:2"277dVAXJqL1 ;
 
T4	#B	!B[[ FB z:B^((d2gR.?AaB!G$a0B!G<277D)	 ; ucIQ136 	67A
78A)Y	9#Y	9F GIi0FQ
A	q	B	RQ	B	RQ	B[[ FB**66bIJ2"Iib6#-#6#6q#< \<"1(NUElE2lE2 	A;;r{{2r1Q3/RQqS1IJDA		A		AQ
A0B1Q30GHF[[S#q12;;sC3KLFB	B	B..v9M++F6K**66BJ	bBvvmB+b01H+VVF2NR/0
 ,r   c                  sz   RR lp RRr!RRrCRRre\         P                  ! WVRR	R	R.4      p\         P                  ! W$VRRR	R	.4      p\         P                  ! . RO. RO. RO. RO. RO. RO. RO. RO.4      p	\        P                  ! WxV	4      p
\	        ^	4       EF  p\         P
                  ! ^\         P                  R
7      p\         P
                  ! ^\         P                  R
7      p\         P
                  ! ^\         P                  R
7      p\         P
                  ! ^^.\         P                  R
7      pV^,          pR	VVV^,          3&   V^ 8X  d   R	W&   M%V^8X  d   R	W^,          &   MV^8X  d   R	W^,          &   \        P                  ! WRW3R7      pV ! VW3VR,          4       V ! VW43VR,          4       V ! VWV3VR,          4       V ! VW,           R,          W$,           R,          34       V ! VW,           R,          W&,           R,          34       V ! VWS,           R,          Wd,           R,          34       V ! VW,           V,           R,          W$,           V,           R,          34       V ! VRV,          V,           V,           R,          RV,          V,           V,           R,          34       V ! VVRV,          ,           V,           R,          VRV,          ,           V,           R,          34       V ! VW,           RV,          ,           R,          W$,           RV,          ,           R,          34       EK  	  R # )Nc           	     s   ^pRpRpVw  rgWd\         P                  ! \         P                  ! R^\         P                  ,          V4      4      ,          ,           pWt\         P                  ! \         P                  ! R^\         P                  ,          V4      4      ,          ,           p	V ! V.V.4      ^ ,          p
V P                  V.V.4      w  rVeG   \        W^ ,          4       \        V^ ,          V^,          4       \        V^ ,          V^,          4       V ! W4      V
,
          pV P                  W4      w  rW,
          pW,
          p\        WV,          4       \        VWE,          4       \        VWE,          4       R# )a  
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@r<   N)r>   cosr@   pisinr   r   r   )interpolatorZlocvaluesZn_starZepsilonrd   Zloc_xZloc_yZstar_xZstar_yr   dzxdzyZdiff_zZtab_dzxZtab_dzyZdiff_dzxZdiff_dzys   &&&               r   check_continuityZ;test_triinterpcubic_C1_continuity.<locals>.check_continuity  s'    B"%%(H!IIIB"%%(H!III%5'*1-!**E7UG<
%a3%c!ffQi8%c!ffQi8f-1)226B==&!),(GI.(GI.r   r   r   r   r   r   r   r<   r=   r   r   r   rb   r         @g      @rO   r#   r   r   r   r   r   r   r   r[   r]   )r\   r$   )r>   r_   r   r   ranger   float64r   )r   rx   ayZbxZbyZcxZcyr   r   r	   r8   Zidofr   r   r   r   Zcaser   s                     r   !test_triinterpcubic_C1_continuityr     s   /> Sv
""b"b"-.A
""b"b"-.A)Y	9#Y	9F GIi0FaHHQbjj)hhq

+hhq

+1a&

3Qw!$tTAX~19AGQYCqMQYCqM**66/2j: 	"6$<8"6$<8"6$<825#+s{!;<25#+s{!;<25#+s{!;<258R-"%(B!?@2b58B;"2RU2Xb["4D!EF2be8B;"2R2Xb["4D!EF25B;"2RU2b5["4D!EF9 r   c            	      sp   R  p ^^r!\         P                  P                  ! V ! W4      !  pVP                  4        VP	                  4       p\        W,          4       F  p\        P                  ! W,          \        P                  R7      pRWe&   \         P                  P                  W6\        P                  ! W,          4      RR7      w  rx\        \        P                  ! WG4      V4       K  	  ^^1rV ! W4      w  rrV^W8  ,          ,           ^W8  ,          ,           pV^W8  ,          ,           ^W8  ,          ,           p\        P                  ! WV	^,
          W^,
          ..4      p\        P                  ! W^,
          W^,
          V
..4      p\        P                  ! V. RO.4      p\         P                  P                  WVW,          ^,           W,          ^,           34      pVP                  4        VP	                  4       p\        W,          ^,           4       F  p\        P                  ! W,          ^,           \        P                  R7      pRWe&   \         P                  P                  W6\        P                  ! W,          ^,           4      RR7      w  rx\        \        P                  ! WG4      V4       K  	  \        P                  ! ^\        P                  R7      p\        P                  ! . RO\        P                  R7      p\        P                  ! . RO\        P                  R7      pR	p\         P                  P                  WW4      pVP                  4        VP	                  4       p\        V\        P                  ! . R
O. RO. RO.\        P                  R7      4       R# )c                s.   W,          p\         P                  ! \         P                  ! V\         P                  R7      \         P                  ! V^,
          \         P                  R7      \         P                  ! ^V\         P                  R7      \         P                  ! W ,
          \         P                  R7      \         P                  ! W\         P                  R7      .4      p\         P                  ! \         P                  ! V\         P                  R7      \         P                  ! ^V\         P                  R7      \         P                  ! V^,
          \         P                  R7      \         P                  ! W\         P                  R7      \         P                  ! W ,
          \         P                  R7      .4      p\         P                  ! ^\         P                  ! V\         P
                  R7      ,          \         P                  ! V^,
          \         P
                  R7      ) \         P                  ! V^,
          \         P
                  R7      ) \         P                  ! W ,
          \         P
                  R7      ) \         P                  ! W ,
          \         P
                  R7      ) .4      pRWR^V,          ^,
           V^,
          RV1&   RV^V,          ^,
          ^V,          ^,
           V^,
          RV1&   WSW@V,          W,          33# )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<   N)r>   concatenaterD   r   onesr   )r   mZlrowscolsvalss   &&    r   poisson_sparse_matrixZ<test_triinterpcubic_cg_solver.<locals>.poisson_sparse_matrixe  s    C~~IIarxx(IIac*BIIa"((,KIIac*BIIa"((,KM N ~~IIarxx(IIa"((+RYYqs"((-KIIa"((+RYYqs"((-KM N ~~bggarzz**WWQqS

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

++bggac.L-LN O
 !#qs1uacf1f$&QqSU1Q3q5!A#&q&!4A#qs++r   r   r=   r   )ZAr   x0tolN)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$   )r&   r&   )r=   rM   r<   )rM   r=         @)r<   r  r=   )r   _triinterpolateZ_Sparse_Matrix_cooZcompress_cscZto_denser   r>   r   r   Z_cgr   Zdotr   r   r_   r   )r   r   r   ZmatZ	mat_denseZitestr   r   _Zi_zeroZj_zeror   r   r   Zdim                  r   test_triinterpcubic_cg_solverr  a  s   ,2 !



1
13H3N
OCIqsHHQS

+##''#rxx},2 ( 4!"&&"6:  BV/5D!T^$$q$.'99D!T^$$q$.'99D>>4&(F1H!EFGD>>4(F1Hf!EFGD>>4!123D



1
1$d3437AC!G2DFCIqsQwHHQS1WBJJ/##''#rwwquqy7I,2 ( 4!"&&"6:   772RZZ(D88G(($D88G(($D
C



1
1$d
HCIilL329;*E Fr   c            	      s   R Rr\         P                  ! V RV ,          R R.4      p\         P                  ! W) R R .4      p\         P                  ! ^\         P                  R7      p. R
O. RO.p\         P                  ! ^^.4      p\         P                  ! R ^\         P
                  ,          ^4       EF  p\         P                  ! V4      V,          \         P                  ! V4      V,          ,           p\         P                  ! V4      ) V,          \         P                  ! V4      V,          ,           p	\        P                  ! WV4      p
\        P                  ! WRR7      p\        P                  P                  V4      pVP                  4       p\         P                  ! V^4      ^,
          VR&   \        ^4       F<  p\         P                  ! V^4      ^VRV3,          ,          ,
          Wn^,           R3&   K>  	  \!        \         P"                  ! \         P$                  ! V4      ^ R7      \         P                  ! R R .\         P                  R7      4       EK  	  R	# )r<   gˡE?rb   r=   r   r   r   r\   rc   Nr%   r   )r    r\   )r>   r_   r   r   r@   r   r   r   r   r   r   r  Z_DOF_estimator_geomZcompute_geom_weightsrY   r   r   minr   )rx   r   r   r   r   r	   Zsum_wthetax_roty_rotr8   r   Zdof_estimatorZweightsitrir  r    test_triinterpcubic_geom_weightsr    s   
 E
"c"fb"%&A
"c2r"#A
"**%AI&IHHaVER255"-ua"&&-/1q 266%=?2##E)<..vvF
,,@@L446ffWa(1,d!HD!vvgq1Agag6F4FFEq&!) !"&&Q"?"$((B82::"F	H .r   c                  s    R p \         P                  ! . R	O4      p\         P                  ! R
^ ^ ^ ^ V ^.4      p^^ .^ ^.^^.^^.RR
.R^..pV EF;  pV^ ,          V,          V^,          V,          ,           pV^,          ) V,          V^ ,          V,          ,           pYVrRV,          RV,          ,
          p	. RO. RO. RO. RO. RO. RO. RO. RO.p
\        P                  ! WxV
4      p\         P                  ! \         P
                  ! VP                  4      \         P                  ! VP                  4      ^4      p\         P                  ! \         P
                  ! VP                  4      \         P                  ! VP                  4      ^4      p\         P                  ! W4      w  rVP                  4       pVP                  4       pVP                  4       ! W4      R
8H  p\         P                  P                  RV,          RV,          ,
          VR7      p\        P                  ! W4      p\        P                  ! W4      p\        P                  ! WRR7      pVVV3 F  pV! W4      p\        VV4       K  	  ^pVP                   V^ 3,          pVP                   V^3,          p\         P                  ! VP                  V,          VP                  V,          ^
4      p\         P                  ! VP                  V,          VP                  V,          ^
4      pRV,          RV,          ,
          pVVV3 FO  pVP#                  WV\         P$                  ! ^
\         P&                  R7      ,          R7      w  p\        VV4       KQ  	  EK>  	  R# )r<   r   r   r
   r   r   r   )Z	tri_indexNr   r!   r*   r   r   r   r   r   r   r   )r>   r_   r   r   r@   r  r   maxr   r?   rA   r   mar   r   r   r	   Z_interpolate_multikeysr   r   )r   r   y0ZtransformationsZtransformationr	  r
  r   r   r   r	   r8   r   r   Zmask_outZ	zs_targetr   r   r   r   r   r  Zpt1Zpt2s                           r   test_triinterp_colinearr    s    E	1	2B	2A1eQ/	0B 1v1v1v1vBx"aIO)q!"$~a'8';;""2%q(9"(<<AFT!VO	9i	96	##A)4[[)266&((+;R@[[)266&((+;R@R$XXZXXZ((*22b8EEKKR$r' 1KA	226=//:..vvF
$k:>FB%i4 ? tQw'tQw'[[#r:[[#r:Gd2g%	$k:>F//$rwwr'B"B 0 DCB%i4 ?A *r   c                  s   ^p ^
pRpR p\         P                  ! VRV4      p\         P                  ! ^ V ,           ^\         P                  ,          V ,           V RR7      p\         P                  ! VR\         P                  3,          V^R7      pVR;;,          \         P                  V ,          ,          uu&   V\         P
                  ! V4      ,          P                  4       pV\         P                  ! V4      ,          P                  4       p\        P                  ! Wg4      pV! Wg4      p	\         P                  ! RR^4      p
\         P                  ! RR^4      p\         P                  ! W4      w  rV
P                  4       p
VP                  4       p/ p\        ^4       EF  p^\         P                  ,          V ,          V,          p\         P
                  ! V4      V,          \         P                  ! V4      V,          ,           p\         P                  ! V4      ) V,          \         P
                  ! V4      V,          ,           p\         P
                  ! V4      V
,          \         P                  ! V4      V,          ,           p\         P                  ! V4      ) V
,          \         P
                  ! V4      V,          ,           p\        P                  ! VVVP                  4      p\        P                  ! VV	4      p\        P                  ! VV	4      p\        P                  ! VV	R	R
7      pRVRVR	V/pR FG  pVV,          pV^ 8X  d   V! W4      VV&   K   V! VV4      p\         P"                  ! VVV,          4       KI  	  EK  	  RpR F  pVR8X  d   VV,          pTpVV
,          pTpMTpVV,          pT
pVV,          p\        P                  ! VVVP                  4      p\        P                  ! VV	4      p\        P                  ! VV	4      p\        P                  ! VV	R	R
7      pRVRVR	V/pR F1  pVV,          ! VV4      p\         P"                  ! VVV,          4       K3  	  K  	  R# )   333333?c                    \         P                  ! R V ,
          R V,
          4      p\         P                  ! R V ,
          R V,
          4      p\         P                  ! V ) R,
          V) R,
          4      p\         P                  ! V ) R,
          V) R,
          4      p^\         P                  ! V^
,          ^,          4      ^,
          ,          R,          \         P                  ! RV,          4      ,          \         P                  ! V^
,          ^,          4      ^,
          R,          \         P                  ! RV,          4      ,          ,           RV ^,          V^,          ,           ,          ,           ) p\         P
                  ! V4      V,
          \         P
                  ! V4      \         P                  ! V4      ,
          ,          # rb   r   g      >@      @g      &@rR   r>   hypotarctan2Zexpr   r  r  r   r   Zr1Ztheta1Zr2Ztheta2r      &&     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?FZendpoint.rc   r=   r   r   linmin_EgZ$.Ar   Nr\   :r   Nr$         )r  r   r   r3   )r>   r@   r   repeatnewaxisr   flattenr   r   r   r?   rA   r   r	   r   r   r   r   )n_anglesn_radii
min_radiusr   radiianglesr   r  triang0z0Zxs0Zys0Z	interp_z0Zi_angler  r   r   r   r   r8   r   r   r   Z
dic_interpZ
interp_keyr   ZinterpzZscale_factorZscaled_axiss                                r   test_triinterp_transformationsr-    s    HGJ3 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
7OruuX~%O
v
	'	'	)B
v
	'	'	)B  (G	
2B ++c2r
"C
++c2r
"C{{3$HC
))+C
))+CI8"%%("W,FF5M"rvve}R//VVE]N2ub 00VVE]3s!22ffUm^C"&&-"33##Aq'*;*;<2262>//;..vrG
]{j*
 3J
+F!|(.s(8	*% R.001::1FH 3 0 L!#r!AA#BBAr!AB#B##Aq'*;*;<2262>//;..vrG
]{j*
 3J ,R4G,,Wi
6KL 3) "r   ztri_smooth_contouring.pngTg;On?)Zremove_textr  c            	      s   ^p ^
pRpR p\         P                  ! VRV4      p\         P                  ! ^ V ,           ^\         P                  ,          V ,           V RR7      p\         P                  ! VR\         P                  3,          V^R7      pVR;;,          \         P                  V ,          ,          uu&   V\         P
                  ! V4      ,          P                  4       pV\         P                  ! V4      ,          P                  4       p\        P                  ! Wg4      pV! Wg4      p	VP                  \         P                  ! WhP                  ,          P                  ^R7      WxP                  ,          P                  ^R7      4      V8  4       \        P                  ! V4      p
V
P                  V	^R7      w  r\         P                   ! R	R
R4      p\"        P$                  ! VRRR7       \"        P&                  ! WVRR7       R# )r  r  c                 r  r  r  r  r  r   r   Z%test_tri_smooth_contouring.<locals>.zk  r  r   r  Fr  .rc   subdivr<   r=   g?rb   z0.5)ZlwcolorZblack)levelsZcolorsNr!  )r>   r@   r   r#  r$  r   r%  r   r   r   r7   r  r	   rn   UniformTriRefinerrefine_fieldrD   ro   triplot
tricontour)r&  r'  r(  r   r)  r*  r   r  r+  r,  refinertri_refiz_test_refir1  s                 r   test_tri_smooth_contouringr9  d  s    HGJ3 KK
D'2E[[Xqw'9!E3FYYvc2::o.a@F
7OruuX~%O
v
	'	'	)B
v
	'	'	)B  (G	
2BRXXb!2!2388a8@ !2!2388a8@B!" #
 $$W-G#00A0>HYYr2u%FKKCu-NN8Hr   ztri_smooth_gradient.pnggZd;O?c                  s   R  p ^p^
pRp\         P                  ! VRV4      p\         P                  ! ^ ^\         P                  ,          VRR7      p\         P                  ! VR\         P                  3,          V^R7      pVR;;,          \         P                  V,          ,          uu&   V\         P
                  ! V4      ,          P                  4       pV\         P                  ! V4      ,          P                  4       pV ! Wg4      p\        P                  ! Wg4      p	V	P                  \         P                  ! WiP                  ,          P                  ^R7      WyP                  ,          P                  ^R7      4      V8  4       \        P                  ! V	4      p
V
P                  V^R7      w  r\        P                   ! W) 4      pVP#                  V	P$                  V	P&                  4      w  r\         P                  ! W4      p\(        P*                  ! 4        \(        P,                  ! 4       P/                  R4       \(        P0                  ! V	R	R
7       \         P2                  ! RRR4      p\4        P6                  R,          p\(        P8                  ! WVV. ROR7       \(        P:                  ! V	P$                  V	P&                  VV,          VV,          RR^RRRRR7       R# )c                s<   V ^,          V^,          ,           p\         P                  ! W4      p\         P                  ! V4      V,          p\         P                  ! V4      V,
          \         P                  ! V4      \         P                  ! V4      ,
          ,          # )zAn electric dipole potential V.)r>   r  r   r  r  )r   r   Zr_sqr  r      &&   r   dipole_potentialZ2test_tri_smooth_gradient.<locals>.dipole_potential  s_    !tad{

1 FF5M$q	!q	"&&) 344r   r   r  Fr  .rc   r.  Zequalz0.8)r0  r<   r=   g{Gz?Zhot)r1  cmapZ
linewidthsrU   rL   Zbluegy&1|?r   r   )ZunitsZscaleZzorderr0  ZwidthZ	headwidthZ
headlengthNr!  )rM   r=   r=   r=   )r>   r@   r   r#  r$  r   r%  r   r   r   r7   r  r	   rn   r2  r3  r   r   r   r   ro   r|   ZgcaZ
set_aspectr4  rD   mplZ	colormapsr5  Zquiver)r;  r&  r'  r(  r)  r*  r   r   ZVr8   r6  r7  r8  ZtciZExZEyZE_normr1  r<  s                      r   test_tri_smooth_gradientr>    s   5 HGJKK
D'2E[[AbeeGX>FYYvc2::o.a@F
7OruuX~%O	rvvf~	&&(A	rvvf~	&&(AA%F
OOBHHQ//05515=//05515=? ! "
 $$V,G#0010=H 
#
#FB
/C\\&((FHH-FBXXbF JJLGGI!KKe$YYr2t$F==DNN8d24 JJvxx2f9biQfbR9r   c                  s   \         P                  ! . RO4      p \         P                  ! R R R\         P                  ! R4      ,          RR.4      p\         P                  ! . RO. RO. RO.\         P                  R7      p\         P                  ! . RO\        R7      p\
        P                  ! WW#R7      p\
        P                  ! V4      p\        VP                  ^R.4       \        VP                  RR	7      \         P                  P                  RRR\         P                  ! R4      ,           ,          \         P                  .V4      4       \         P                  ! . RO4      p \         P                  ! . RO4      p\         P                  ! . RO.\         P                  R7      p\
        P                  ! WV4      p\
        P                  ! V4      p\        VP                  4       \         P                  ! R .4      4       ^	pR
 p\         P                  ! RRV^,           4      p \         P                  ! V! V R4      V! V R4      4      w  rV P!                  4       p VP!                  4       p\
        P                  ! W\#        V^,           4      R7      p\
        P                  ! V4      pVP%                  R4      p\         P&                  ! ^\        R7      p	. ROp
RW&   \)        W4       \         P&                  ! ^\        R7      pRV^P&   VP+                  V4       VP%                  R4      p. ROpRW&   \)        W4       R# )r<   r=   rb   rM   r   r   FTr
   )Zrescalec                 sr    \         P                  ! V 4      V,          \         P                  ! V 4      ,          # rO   )r>   r   Zsign)r   r   rP   r   powerZtest_tritools.<locals>.power  s!    vvay!|BGGAJ&&r   r{   r   r   Nr<   r=   rb   r<   rM   r"  r#   rg   ri   FFTgV͞^&?)r<   r=   rM   )r=   r   r  )r    r   r$   r&   r   r   r   r   i   i   i"   i#   i~   i   i   i   i   i   i   i   i   i   i   i   )i,   i-   i>   i?   iN   O   iP   iQ   iR   iS   ib   r/   it   iu   )r>   r_   sqrtr   boolr   r   TriAnalyzerr   Zscale_factorsZcircle_ratiosr  Zmasked_arraynanr@   r?   rA   r   Zget_flat_tri_maskr   r   r7   )r   r   r	   r   r8   analyserr   r?  Z	mask_flatZ
verif_maskZcorners_indexZcenter_indexs               r   test_tritoolsrH    sa    	&'A
"b#bggbk/334A)Y	:"((KI88(5Di;F'Hh44q-6HIu-
CR^!4bff=tDF
 	A
#$A)BHH5Ii0F'Hh446"G 	
A' 	CQqS!A;;uQ|U1d^4DA		A		A0B1Q30GHF'H**3/I#T*JGM $Jy- 88Ct$DDH
OOD**3/IML#Jy-r   c                  s   ^p ^p\         P                  ! RRV ^,           4      p\         P                  ! W"4      w  r#VP                  4       pVP                  4       p\         P                  ! ^V ^,          ,          \
        R7      pRW@^,          R% \        P                  ! W#\        V ^,           4      VR7      p\        P                  ! V4      pVP                  VR7      pVP                  pVP                  p	W^,          ,          p
\         P                  ! RRV
^,           4      p\         P                  ! W4      w  rVP                  4       pVP                  4       p\         P                  ! \         P                  ! VRV,           ,          ^4      \         P                  ! VRV	,           ,          ^4      4      p\        VR4       VP                   p\         P"                  ! VP                  VP$                  ,          ^R7      R	,          p\         P"                  ! VP                  VP$                  ,          ^R7      R	,          pVP'                  4       pV! VV4      pVP                   V,          p\        VV4       \         P(                  ! . RO4      p\         P(                  ! . RO4      p\        P                  ! W#. RO. RO.4      \        P                  ! W#. RO. RO.4      .p\         P*                  ! VR
,
          VR,
          4      p. p\-        ^4       F  p\        P                  ! VV,          4      pVP/                  V^R7      w  pp\         P0                  ! VP                  VP                  V34      ^ ,          pV\         P2                  ! VR,          VR,          34      ,          pVV.,          pK  	  \5        V^ ,          V^,          4       R# )r&   r=   r   TNr   r.  r   rc   r   r   r   r"  r<   r=   r<   r=   r<   r<   r=   r=   rg   r   r$   r    r&   r]   r[   )r>   r@   r?   rA   r   rD  r   r   r   r2  refine_triangulationr   r   ZisinZaroundr   r   rY   r	   r   r`   r  r   r3  ZdstackZlexsortr   )r   r/  r   r   r   r8   r6  Zrefi_triangZx_refiZy_refiZn_refiZx_verifZy_verifZind1dZ	refi_maskZrefi_tri_barycenter_xZrefi_tri_barycenter_yZ
tri_finderZrefi_tri_indicesZrefi_tri_maskr   Zxyz_dataiZrefined_triangZ	refined_zZxyzs                             r   test_trirefinerN    s   	AF
CQqS!A;;qDA		A		A88AadF$'DDAK0B1Q30G%)+F$$V,G..f.=K]]F]]F]Fkk#r6!8,G{{74G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  	9'=>  	9'=>@F
S!c'"AH1X((3$+$8$81$8$E!	ii))>+;+;YGHK"**c$iT345SE  hqk8A;7r   r   ZlinearZcubic)Zidsc                 s   \         P                  R,          w  r\         P                  ! VP                  4       ^4      p\         P                  ! VP                  4       ^4      p\         P                  ! V4      p\
        P                  ! W4      p\
        P                  ! V4      pV ! WC4      pVP                  W6^R7       R# )Nr$   N)Ztriinterpolatorr/  N)rO  rO  )	r>   Zmgridr#  r%  Z
zeros_liker   r   r2  r3  )r   r   r   r   rX   r6  r   s   &      r   test_trirefine_maskedrP  0  s     88FDA
		!))+q!A
		!))+q!A
aA


Q
"C$$S)G#!F1=r   c                s   . p\        V ^,
          4       F  p\        V ^,
          4       Fj  pW#V ,          ,           pV^,           W0,          ,           pW#^,           V ,          ,           pV^,           V^,           V ,          ,           pWWW.WGV..,          pKl  	  K  	  \        P                  ! V\        P                  R7      # )zM
Return (2*(N-1)**2, 3) array of triangles to mesh (N, N)-point np.meshgrid.
r   )r   r>   r_   r   )r   rX   rM  Zjr   r   r   Zds   &       r   r   r   B  s     C1Q3ZqsAaCA1AqS!GA11aAIay))C   88Crxx((r   c                  s    \         P                  ! 4       P                  4       p \        P                  ! . RO. RO. RO. RO.R7      pR# )r<   r   NrI  rJ  rg   r   )ro   r|   r}   r   r   )rx   r8   r4   r   test_triplot_returnrQ  Q  s4    		!	!	#B2i(*Fr   c                  s   \         P                  ! . RO. RO.4      p \         P                  ! V RRR7      p\         P                  ! . RO4      p\         P                  ! . R	O4      p\        P                  ! W#V 4      p\        P                  ! W#V4      p\        P                  ! V4      p\        P                  ! V4      pVP                  ^R7      pVP                  ^R7      p	\        VP                  V	P                  4       R# )
r$   TZF)r   Zorderr.  NrK  )r$   r   r    )g(\?gzG?gQ?g{Gz?)gQ@@gzGA@gQA@gףp=
A@)r>   r_   r   r   r2  rL  r   r	   )
Z
triangles1Z
triangles2r   r   Ztriang1Ztriang2Zrefiner1Zrefiner2Zfine_triang1Zfine_triang2r   r   ,test_trirefiner_fortran_contiguous_trianglesrR  [  s     9i01J *4s;J 	)*A
-.A  z2G  z2G%%g.H%%g.H000:L000:L|--|/E/EFr   c                  s   \         P                  ! R^^d4      p \        \         P                  \         P                  ! W 4      4      w  rW^,
          8  VR8  ,          VR8  ,          pW,          W#,          r!\         P
                  ! ^4      pV\         P                  ! V4      ,          V\         P                  ! V4      ,          ,
          pV\         P                  ! V4      ,          V\         P                  ! V4      ,          ,           p\        P                  ! WV4      pVP                  pRVn        VP                  p	\        W4       R# )r$   Nr  g333333g333333)r>   r@   ZmaprA   r?   Zradiansr   r   r   r   r6   rB   r   )
Zxir   r   Zwr  Zx1Zy1r8   Zqhull_neighborsZown_neighborsr   r   test_qhull_triangle_orientationrS  r  s    	RC	 BrxxR,-DA	
Uq5y!QX.A4qJJrNE	
266%=1RVVE]?	*B	
266%=1RVVE]?	*B 'F &&O F$$M6r   c                  s   \         P                  ! . RO4      p \         P                  ! R R R\         P                  ! R4      ,          RR.4      p\         P                  ! . R	O. R
O. RO.\         P                  R7      p\         P                  ! . RO\        R7      p\
        P                  ! WW#R7      p\
        P                  ! V4      pVP                  4        R# )r<   r=   rb   r   r   r
   Nr@  r"  r#   rg   ri   rA  )	r>   r_   rC  r   rD  r   r   rE  Z_get_compressed_triangulation)r   r   r	   r   r8   rG  r9   r   #test_trianalyzer_mismatched_indicesrT    s    
&'A
"b#bggbk/334A)Y	:"((KI88(5Di;F'H **,r   c            	      s    . ROp . ROp. ROp\         P                  ! 4        \        P                  ! \        4      ;_uu_ 4        \         P
                  ! WVRR .4       RRR4       R#   + '       g   i     R# ; i)r<   r=   N)r<   r=   r=   )r<   r<   r=   )r   r   r   )ro   r|   r'   r1   r2   tricontourf)r   r   r   r   r   "test_tricontourf_decreasing_levelsrV    sL    AAAJJL	z	"	"a#s, 
#	"	"	"s   A))A:	c                s    V ^8  d   QhRR/# )r$   ZreturnNr   )Zformats   "r   __annotate__rW    s     X= X=t X=r   c                  sV   ^ RI Hp  \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P                  4        RRR4       \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P                  \        P                  ! . 4      \        P                  ! ^.4      \        P                  ! . .4      RRRR4       RRR4       \        P                  ! . RO\        P                  R7      p\        P                  ! . RO\        P                  R7      p\        P                  ! \        RR7      ;_uu_ 4        \
        P                  P                  W\        P                  ! ^ ^..4      RRRR4       RRR4       \        P                  ! . RO.\        P                  R7      p\        P                  ! \        R	R7      ;_uu_ 4        \
        P                  P                  WV\        P                  ! ^ ^.4      RRR4       RRR4       \        P                  ! \        R
R7      ;_uu_ 4        \
        P                  P                  WVR\        P                  ! ^..4      RR4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P                  WVRR\        P                  ! R..4      R4       RRR4       \
        P                  P                  WVRRRR4      p\        P                  ! \        RR7      ;_uu_ 4        VP                  . 4       RRR4       ^ ^.R3 FA  p\        P                  ! \        R	R7      ;_uu_ 4        VP                  V4       RRR4       KC  	  VP                  \        P                  ! R.4      4       \        VP                  4       \        P                   ! R4      4       VP                  R4       \        VP                  4       ^^ .^^ .^^..4       \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P#                  4        RRR4       \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P#                  V\        P                  ! ^.4      4       RRR4       \        P                  ! . RO4      p\
        P                  P#                  WF4      p\        P                  ! \        RR7      ;_uu_ 4        VP%                  ^^ 4       RRR4       \        P                  ! \        RR7      ;_uu_ 4        \
        P                  P'                  4        RRR4       \
        P                  P'                  V4      p\        P                  ! \        RR7      ;_uu_ 4        VP)                  \        P                  ! ^ .4      \        P                  ! ^ ^.4      4       RRR4       R#   + '       g   i     EL; i  + '       g   i     ELi; i  + '       g   i     EL; i  + '       g   i     ELI; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELU; i  + '       g   i     EKd  ; i  + '       g   i     EL`; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELy; i  + '       g   i     R# ; i)r    )_triz1__init__\(\): incompatible constructor arguments.r.   Nz,x and y must be 1D arrays of the same lengthFr   z.triangles must be a 2D array of shape \(\?,3\)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 arrayzMz must be a 1D array with the same length as the triangulation x and y arraysTz?z must be a 1D array with the same length as the x and y arraysz(filled contour levels must be increasingz*x and y must be array-like with same shaper   )r    r   r   r+   r#   r!   )r    r$   )
matplotlibrX  r'   r1   rv   r=  r   r2   r>   r_   r   Zint_Zcalculate_plane_coefficientsr7   r   Z	get_edgesZemptyZTriContourGeneratorZcreate_filled_contourZTrapezoidMapTriFinderZ	find_many)	rX  r   r   r   r8   r   r   Ztcgr   rF   r   test_internal_cpp_apirZ    sE    
F
H 
H 	 
H
 
M
O 
Orxx|RXXqc]BHHbTNBPRTV$	&
O
 	"**-A
"**-A	C
E 
E 	qRXX1vh%7RUK
E
 88YKrww/D	%
& 
& 	qT288QF+;RUK	
& 
M
O 
OqT2rxx!EJ
O 
%
& 
& 	qT2r288bTF3CUK	
& XX##A$BEBF	2
3 
3 	++B/	
3 Q]])* * OOD!	* *  OOBHHdV$%v'')288F+;<
OOBv'')QFQFQF+CD 
F
H 
H 	$$&
H
 
T
V 
V 	$$VRXXqc];
V
 	A
((
&
&v
1C	I
K 
K!!!Q'
K
 
F
H 
H 	&&(
H
 ..v6I	K
M 
MBHHaSM288QF+;<
M 
Mc
H 
H 
H

O 
O 
O
E 
E 
E
& 
& 
&
O 
O 
O
& 
& 
&
3 
3 
3* * *
H 
H 
H

V 
V 
V
K 
K 
K

H 
H 
H
M 
M 
Ms   X&6A$X:<Y';Y";Y65;Z
 ZZ2[6[5[/4\>\&X7	:Y	Y	"Y3	6Z	
Z	Z/	2[[	[,	/\ 	\	\(	c                  s    \         P                  ! . RO4      p \         P                  ! . RO4      pRp\        P                  ! W4      p\        P                  ! W,           W,           4      pR# )r    g    _BN)r    r   r    r   rb   )r    r    r   r   rb   )r>   r`   r   r   )r   r   Zoffsetr8   Ztriang_offsetr   r   test_qhull_large_offsetr[    sK    


$%A


$%AF%F&&qz1:>Mr   c            
      s   . ROp . ROp\         P                  ! W4      p\        P                  ! 4        \        P
                  ! \        RR7      ;_uu_ 4        \        P                  ! V^ ^^\        P                  .4       RRR4       \        P
                  ! \        RR7      ;_uu_ 4        \        P                  ! V^ ^^\        P                  ) .4       RRR4       \        P
                  ! \        RR7      ;_uu_ 4        \        P                  ! V^ ^^\        P                  .4       RRR4       \        P
                  ! \        RR7      ;_uu_ 4        \        P                  ! V\        P                  P                  . RO. R	OR7      4       RRR4       R#   + '       g   i     EL'; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)
r    zCz array must not contain non-finite values within the triangulationr.   Nz9z must not contain masked points within the triangulationr
   r   r   )r    r   r$   r&   )r   r    r    r    )r   r   ro   r|   r'   r1   r2   rU  r>   ZinfrF  r  r_   )r   r   r8   r   r   test_tricontour_non_finite_zr\    sg   AA%FJJL	z *K 
L 
LAq"&& 12
L 
z *K 
L 
LAq266' 23
L 
z *K 
L 
LAq"&& 12
L 
z *D 
E 
EL| LM
E 
E
L 
L 
L
L 
L
L 
L
E 
E 
Es0   *F .+F4*G;G F1	4G	G	G+	c                  s    . ROp . ROp. ROp\         P                  ! 4       w  r4VP                  WV4      pVP                  WV4      pVP                  WR4      pR# )r<   N)r<   rb   r=   )r<   r=   r<   )r=   rM   r   )ro   ru   rU  r5  )r   r   r   rw   rx   Ztcs1Ztcs2Ztcs3r,   r   test_tricontourset_reuser]    sN     	AAAllnGC>>!"D==q!D==!Dr   Zpng)Z
extensionsc                 s    . ROp. ROp. RO.pV P                  4       P                  W#VRR7       VP                  4       P                  W#VRR7       R# )r    z--)Zls)Z	linestyleNr*   r+   r#   )ru   r4  )Zfig_testZfig_refr   r   datar:  r   test_triplot_with_lsr_  ,  sO    AA;Ddt4qTT:r   c                  s    . ROp . ROp. RO.p\         P                  ! 4       w  r4VP                  WVRR7      w  rVVP                  4       w  rxR# )r    label)r`  Nr*   r+   r#   )ro   ru   r4  Zget_legend_handles_labels)	r   r   r^  rw   rx   ZlinesZmarkersZhandlesZlabelsrF   r   test_triplot_labelra  5  sH    AA;DllnGCZZd'Z:NE224OGVr   c                  s   . ROp . ROp\         P                  ! W4      p\        P                  ! 4       w  r4VP	                  V. ROR.R7      pVP                  4       p^^ .^^.^ ^..p\        V^ ,          P                  V4       \        V^ ,          P                  . R	O4       \        V^ ,          P                  RR7      V.4       VP	                  V. R
OR.R7      pVP                  4       p^^.^^.^^.^^.^^..p\        V^ ,          P                  V4       \        V^ ,          P                  . RO4       \        V^ ,          P                  4       V.4       R# )r    rb   r1  F)Zclosed_onlyNr    rh   rh   r    r$   r    r    rh   rh   r$   r   r    r    r    r    r   r$   r$   r    r    r    r    r   r   r$   r$   r$   rB  )r   r   ro   ru   r5  	get_pathsr   verticesr   codesto_polygonsr   r   r8   r  rx   ZcsZpathsZexpected_verticesr,   r   test_tricontour_pathrn  A  s;   AA%FLLNEA 
vu	=BLLNEQ!Q!Q0eAh//1BCuQx~~y1a/2C1DF 
vu	=BLLNEQ!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJr   c                  sB   . ROp . ROp\         P                  ! W4      p\        P                  ! 4       w  r4VP	                  V. RORR.R7      pVP                  4       p^^.^^.^^.^^.^^..p\        V^ ,          P                  V4       \        V^ ,          P                  . RO4       \        V^ ,          P                  4       V.4       VP	                  V. R	ORR.R7      pVP                  4       p^^ .^^.^ ^.^ ^ .^^ ..p\        V^ ,          P                  V4       \        V^ ,          P                  . RO4       \        V^ ,          P                  4       V.4       VP	                  V. ROR
R.R7      pVP                  4       p^ ^ .^^ .^^.^ ^.^ ^ .^^.^^.^^.^^.^^..
p\        V^ ,          P                  V4       \        V^ ,          P                  . RO4       \        V^ ,          P                  4       \        P                  ! V^.4      4       R# )r    rb   r   rb  Nrc  rd  rg  rh  re  g      )
r   r$   r$   r$   rB  r   r$   r$   r$   rB  )r   r   ro   ru   rU  ri  r   rj  r   rk  rl  r>   Zsplitrm  r,   r   test_tricontourf_pathro  [  s   AA%FLLNEA 
c
	CBLLNEQ!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ 
c
	CBLLNEQ!Q!Q!Q!Q@eAh//1BCuQx~~'78eAh2247H6IJ 
s	DBLLNEQ!Q!Q!Q!QQ!Q!Q!Q!QAeAh//1BCuQx~~'GHeAh224bhh?PSTRU6VWr   )r   r$   r   )r;   rj   r;   rf  )r;   rj   rj   )r   r   r   r$   r   r$   )r;   r;   r;   rj   r;   rj   )DZnumpyr>   Znumpy.testingr   r   r   Znumpy.ma.testutilsr  Z	testutilsr   r'   rY  r=  Zmatplotlib.pyplotZpyplotro   Zmatplotlib.trirX   r   Zmatplotlib.pathr   Zmatplotlib.testing.decoratorsr   r   r   r-   r5   r:   rG   rK   rN   r(   r)   rQ   ra   rq   ry   r   r   r   r   r   r   r  r  r  r-  r9  r>  rH  rN  r   r   rP  r   rQ  rR  rS  rT  rV  rZ  r[  r\  r]  r_  ra  rn  ro  r   r   r   <module>rp     s(   F F # #       O' ':/(".'HTA( HS1#JVaV 		+,
" 
!
!
*FZ #$% &6*<*	=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5.p58p 44335&0  2>	2>)3G.7.
--X=vAN0> (; );	K4 Xr   