HEX
Server: Apache
System: Linux opal14.opalstack.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
User: curbgloabal_opal (1234)
PHP: 8.1.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/share/inkscape/extensions/voronoi.pyo
�
��Yc@s�d�ZddlZddlZddlZdZdZdefd��YZd�Zed�Z	d	efd
��YZ
defd��YZd
efd��YZdefd��YZ
defd��YZdefd��YZd�Zd�Zedkr�y#ejejdd�\ZZWn(ejk
rSe�ejd�nXdZe�Zde_x{eD]sZeddkr�de_neddkr�de_neddkr�de_neddkrsdZqsqsWes�gZej Z!e"e�dkr'e#edd �Z!nxPe!D]HZ$e$j%�Z&e'e&d�Z(e'e&d�Z)ej*e
e(e)��q.We"e�dkr�e!j+�q�nes�e"e�dkr�e�ejd�nee�Z,ee,e�ndS(!cCs	dGHdS(Nse
voronoi - compute Voronoi diagram or Delaunay triangulation

voronoi [-t -p -d]  [filename]

Voronoi reads from filename (or standard input if no filename given) for a set 
of points in the plane and writes either the Voronoi diagram or the Delaunay 
triangulation to the standard output.  Each input line should consist of two 
real numbers, separated by white space.

If option -t is present, the Delaunay triangulation is produced. 
Each output line is a triple i j k, which are the indices of the three points
in a Delaunay triangle. Points are numbered starting at 0.

If option -t is not present, the Voronoi diagram is produced.  
There are four output record types.

s a b      indicates that an input point at coordinates a b was seen.
l a b c    indicates a line with equation ax + by = c.
v a b      indicates a vertex at a b.
e l v1 v2  indicates a Voronoi segment which is a subsegment of line number l
           with endpoints numbered v1 and v2.  If v1 or v2 is -1, the line 
           extends to infinity.

Other options include:

d    Print debugging info

p    Produce output suitable for input to plot (1), rather than the forms 
     described above.

On unsorted data uniformly distributed in the unit square, voronoi uses about 
20n+140 bytes of storage.

AUTHOR
Steve J. Fortune (1987) A Sweepline Algorithm for Voronoi Diagrams,
Algorithmica 2, 153-174.
((((s)/usr/share/inkscape/extensions/voronoi.pytusage s&i����Ng��&�.>g��*���GtContextcBsYeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
RS(	cCsLd|_d|_d|_t|_g|_g|_g|_g|_dS(Ni(	tdoPrinttdebugtplottFalsettriangulatetverticestlinestedgest	triangles(tself((s)/usr/share/inkscape/extensions/voronoi.pyt__init__is							cCsdS(N((Rtxtytrad((s)/usr/share/inkscape/extensions/voronoi.pytcirclesscCsdS(N((Rtedge((s)/usr/share/inkscape/extensions/voronoi.pyt	clip_linevscCsdS(N((Rtx0ty0tx1ty1((s)/usr/share/inkscape/extensions/voronoi.pytlineyscCs}|jr'd|j|j|jfGHnR|jr3nF|jrX|j|j|jt�n!|jryd|j|jfGHndS(Nssite (%d) at %f %fss %f %f(	RtsitenumR
RRRRtcradiusR(Rts((s)/usr/share/inkscape/extensions/voronoi.pytoutSite|s				cCs~|jj|j|jf�|jrCd|j|j|jfGHn7|jrOn+|jrz|jrzd|j|jfGHndS(Nsvertex(%d) at %f %fsv %f %f(	RtappendR
RRRRRR(RR((s)/usr/share/inkscape/extensions/voronoi.pyt	outVertex�s		cCs�|jj|j|j|jf�|jrId|j|j|jfGHn:|jr�|jr�|jr�d|j|j|jfGHndS(Ns)circle through left=%d right=%d bottom=%ds%d %d %d(R
RRRRRR(Rts1ts2ts3((s)/usr/share/inkscape/extensions/voronoi.pyt	outTriple�s
"	cCs�|jj|j|j|jf�|jrid|j|j|j|j|jdj|jdjfGHn�|j	r�|j
r�|j|jdj|jdj
|jdj|jdj
�q�n1|jr�|j
r�d|j|j|jfGHndS(Ns$line(%d) %gx+%gy=%g, bisecting %d %diis
l %f %f %f(RRtatbtcRtedgenumtregRRRRR
RR(RR((s)/usr/share/inkscape/extensions/voronoi.pytoutBisector�s"	>		DcCs�d}|jtjdk	r2|jtjj}nd}|jtjdk	rd|jtjj}n|jj|j||f�|j	s�|j
r�|j|�q�|jr�d|jGd|Gd|GHq�ndS(Ni����se %ds %d s%d(
teptEdgetLEtNoneRtRER	RR%RRRR(RRtsitenumLtsitenumR((s)/usr/share/inkscape/extensions/voronoi.pytoutEdge�s			(t__name__t
__module__RRRRRRR!R'R/(((s)/usr/share/inkscape/extensions/voronoi.pyRhs	
				
				
cCslt|j|jt|��}t|j|jt|��}|j�}|j�}|j	|�|j�}t
tt�}x�tr,|j
�s�|j�}n|r�|j
�s�t||�dkr�|j	|�|j|�}|j}	|j|�}
tj|
|�}|j|�t|tj�}|j||�|j|�}
|
dk	r�|j|�|j||
|j|
��n|}t|tj�}|j||�|j|	�}
|
dk	r�|j||
|j|
��n|j�}q�|j
�s(|j�}|j}|j}	|	j}|j |�}
|	j|�}|j|�}|j!|
||�|j"}|j#|�|j$|�|j%j&|j'|�r�|j(|j%�n|	j%j&|	j'|�r�|j(|	j%�n|j|�|j|	�|j|	�tj}|
j)|j)kr=||
}
}tj}ntj|
|�}|j|�t||�}|j||�|j&tj||�r�|j(|�n|j|�}
|
dk	r�|j|�|j||
|
j|
��n|j|�}
|
dk	r)|j||
|
j|
��q)q�Pq�W|j*j}x,||j+k	rg|j(|j%�|j}q<WdS(Ni(,tEdgeListtxmintxmaxtlent
PriorityQueuetymintymaxtiteratortnextRtSitet	BIG_FLOATtTruetisEmptytgetMinPttcmptleftbndtrighttrightregR)tbisectR'tHalfedgeR*tinsertt	intersectR+tdeletetdistanceR,tpopMinHalfedgetlefttleftregR!tvertext
setSiteNumberRRtsetEndpointtpmR/Rtleftendtrightend(tsiteListtcontexttedgeListt	priorityQtsiteItert
bottomsitetnewsitetminpttlbndtrbndtbotRtbisectortptllbndtrrbndttoptmidtvRPthe((s)/usr/share/inkscape/extensions/voronoi.pytvoronoi�s�
	'
	

				




	


"cCs?tt|�t|��}||kp>t||�||kS(N(tmaxtabs(R"R#t
relativeErrortnorm((s)/usr/share/inkscape/extensions/voronoi.pytisEqual;sR;cBs5eZdddd�Zd�Zd�Zd�ZRS(gicCs||_||_||_dS(N(R
RR(RR
RR((s)/usr/share/inkscape/extensions/voronoi.pyRBs		cCsd|j|j|jfGHdS(NsSite #%d (%g, %g)(RR
R(R((s)/usr/share/inkscape/extensions/voronoi.pytdumpGscCs`|j|jkrdS|j|jkr,dS|j|jkrBdS|j|jkrXdSdSdS(Ni����ii(RR
(Rtother((s)/usr/share/inkscape/extensions/voronoi.pyt__cmp__JscCs9|j|j}|j|j}tj||||�S(N(R
Rtmathtsqrt(RRmtdxtdy((s)/usr/share/inkscape/extensions/voronoi.pyRIVs(R0R1RRlRnRI(((s)/usr/share/inkscape/extensions/voronoi.pyR;As		R)cBsJeZdZdZdZiZd�Zd�Zd�Ze	d��Z
RS(iicCsFd|_d|_d|_ddg|_ddg|_d|_dS(Ngi(R"R#R$R+R(R&R%(R((s)/usr/share/inkscape/extensions/voronoi.pyRbs			cCs=d|j|j|j|jfGHdG|jGHdG|jGHdS(Ns(#%d a=%g, b=%g, c=%g)R(R&(R%R"R#R$R(R&(R((s)/usr/share/inkscape/extensions/voronoi.pyRljs!cCs/||j|<|jtj|dkr+tStS(N(R(R)R,R+RR=(RtlrFlagtsite((s)/usr/share/inkscape/extensions/voronoi.pyROos
cCs)t�}||jd<||jd<t|j|j�}t|j|j�}t|�}t|�}t|j||j|||||d�|_||kr�d|_|||_|j|:_n:d|_|dkr�d}n|||_|j|:_tj	|_
tj	d7_	|S(Niig�?g�?g{�G�z�?(R)R&tfloatR
RRhR$R"R#tEDGE_NUMR%(RRtnewedgeRqRrtadxtady((s)/usr/share/inkscape/extensions/voronoi.pyRDus(	

5	
		
(R0R1R*R,RvtDELETEDRRlROtstaticmethodRD(((s)/usr/share/inkscape/extensions/voronoi.pyR)\s			REcBsPeZdejd�Zd�Zd�Zd�Zd�Z	d�Z
d�ZRS(cCsCd|_d|_d|_||_||_d|_t|_dS(N(	R+RKRBtqnextRRPRMR<tystar(RRRP((s)/usr/share/inkscape/extensions/voronoi.pyR�s						cCsgdGHdG|jGHdG|jGHdG|jGHdG|jGHdG|jrR|jj�ndGHdG|jGHdS(	Ns"Halfedge--------------------------sleft: sright: sedge: spm: svertex: R+systar: (RKRBRRPRMRlR}(R((s)/usr/share/inkscape/extensions/voronoi.pyRl�s	cCsl|j|jkrdS|j|jkr,dS|jj|jjkrHdS|jj|jjkrddSdSdS(Nii����i(R}RMR
(RRm((s)/usr/share/inkscape/extensions/voronoi.pyRn�scCsE|js
|S|jtjkr0|jjtjS|jjtjSdS(N(RRPR)R*R&R,(Rtdefault((s)/usr/share/inkscape/extensions/voronoi.pyRL�s
	cCsE|js
|S|jtjkr0|jjtjS|jjtjSdS(N(RRPR)R*R&R,(RR~((s)/usr/share/inkscape/extensions/voronoi.pyRC�s
	c
Cs|j}|jd}|j|jk}|rD|jtjkrDtS|ra|jtjkratS|j	dkr�|j
|j
}|j|j}d}|r�|jdks�|r�|jdkr�||j|k}|}nH|j|j
|j|jk}|jdkr|}n|s%d}n|s�|j|jdj}	|j|||||	|dd||	|j|jk}|jdkr�|}q�q�n]|j|j	|j}
|j
|
}|j|j}|
|j
}
|||||
|
k}|jtjkr|S|SdS(Nig�?igg@(
RR&R
RPR)R*R=R,RR"RR#R$(Rtpttettopsitet
right_of_sitetdyptdxptfasttabovetdxstyltt1tt2tt3((s)/usr/share/inkscape/extensions/voronoi.pytisPointRightOf�s@	
+	 
	A

c
CsW|j}|j}|dks*|dkr.dS|jd|jdkrLdS|j|j|j|j}t|d�r}dS|j|j|j|j|}|j|j|j|j|}t|jd|jd�dkr�|}|}n|}|}||jdjk}	|	r-|j	t
jksF|	rJ|j	t
jkrJdSt
||�S(Nigi(RR+R&R"R#RkR$R@R
RPR)R*R,R;(
RRmte1te2tdtxinttyintReR�trightOfSite((s)/usr/share/inkscape/extensions/voronoi.pyRG�s*		""#	N(R0R1R+R)R*RRlRnRLRCR�RG(((s)/usr/share/inkscape/extensions/voronoi.pyRE�s					
	+R2cBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs�||kr||}}ntdtj|d��|_||_t||�|_dg|j|_t	�|_
t	�|_|j|j
_|j
|j_
|j
|jd<|j|jd<dS(Niiii����(tintRoRpthashsizeR3RutdeltaxR+thashRERQRRRBRK(RR3R4tnsites((s)/usr/share/inkscape/extensions/voronoi.pyRs 	cCs.||_|j|_||j_||_dS(N(RKRB(RRKRe((s)/usr/share/inkscape/extensions/voronoi.pyRF+s	cCs.|j|j_|j|j_tj|_dS(N(RBRKR)RzR(RRe((s)/usr/share/inkscape/extensions/voronoi.pyRH1scCs_|dks||jkrdS|j|}|dksJ|jtjk	rN|Sd|j|<dS(Ni(R�R+R�RR)Rz(RR#Re((s)/usr/share/inkscape/extensions/voronoi.pytgethash7s

cCs�t|j|j|j|j�}|dkr9d}n||jkrX|jd}n|j|�}|dkr�d}x]tr�|j||�}|dk	r�Pn|j||�}|dk	r�Pn|d7}q|Wn||jks||j	k	rI|j
|�rI|j}x+||j	k	r<|j
|�r<|j}qW|j}n8|j}x,||jk	r�|j
|�r�|j}qUW|dkr�||jdkr�||j
|<n|S(Nii(R�R
R3R�R�R�R+R=RQRRR�RBRKR�(RRtbucketReti((s)/usr/share/inkscape/extensions/voronoi.pyRABs6$		-	!
	"
(R0R1RRFRHR�RA(((s)/usr/share/inkscape/extensions/voronoi.pyR2s
				R6cBsPeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	RS(cCs~||_|||_tdtj|��|_d|_d|_g|_x*t	|j�D]}|jj
t��q]WdS(Nii(R7tdeltayR�RoRpR�tcounttminidxR�trangeRRE(RR7R8R�R�((s)/usr/share/inkscape/extensions/voronoi.pyRis	
			cCs|jS(N(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyt__len__sscCs
|jdkS(Ni(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyR>vscCs�||_|j||_|j|j|�}|j}x4|dk	rnt||�dkrn|}|j}q;W|j|_||_|jd7_dS(Nii(	RMRR}R�t	getBucketR|R+R@R�(RReRttoffsettlastR:((s)/usr/share/inkscape/extensions/voronoi.pyRFys		$
	cCso|jdk	rk|j|j|�}x|j|k	rC|j}q(W|j|_|jd8_d|_ndS(Ni(RMR+R�R�R|R�(RReR�((s)/usr/share/inkscape/extensions/voronoi.pyRH�s
cCswt|j|j|j|j�}|dkr9d}n||jkrX|jd}n||jkrs||_n|S(Nii(R�R}R7R�R�R�(RReR�((s)/usr/share/inkscape/extensions/voronoi.pyR��s$	cCsdx,|j|jjdkr.|jd7_qW|j|jj}|jj}|j}t||�S(Ni(R�R�R|R+RMR
R}R;(RReR
R((s)/usr/share/inkscape/extensions/voronoi.pyR?�s	cCs<|j|jj}|j|j|j_|jd8_|S(Ni(R�R�R|R�(Rtcurr((s)/usr/share/inkscape/extensions/voronoi.pyRJ�s(
R0R1RR�R>RFRHR�R?RJ(((s)/usr/share/inkscape/extensions/voronoi.pyR6hs	
							tSiteListcBs�eZd�Zd�Zdefd��YZd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
e	�Ze
e
�Ze
e�Ze
e�ZRS(cCs&g|_d|_|dj|_|dj|_|dj|_|dj|_x�t|�D]�\}}|jj	t
|j|j|��|j|jkr�|j|_n|j|jkr�|j|_n|j|jkr�|j|_n|j|jkr_|j|_q_q_W|jj�dS(Ni(t_SiteList__sitest_SiteList__sitenumR
t_SiteList__xminRt_SiteList__ymint_SiteList__xmaxt_SiteList__ymaxt	enumerateRR;tsort(Rt	pointListR�R((s)/usr/share/inkscape/extensions/voronoi.pyR�s"		"cCs|j|_|jd7_dS(Ni(R�R(RRt((s)/usr/share/inkscape/extensions/voronoi.pyRN�stIteratorcBs#eZd�Zd�Zd�ZRS(cCsd�|D�|_dS(Ncss|]}|VqdS(N((t.0R((s)/usr/share/inkscape/extensions/voronoi.pys	<genexpr>�s(t	generator(tthistlst((s)/usr/share/inkscape/extensions/voronoi.pyR�scCs|S(N((R�((s)/usr/share/inkscape/extensions/voronoi.pyt__iter__�scCs*y|jj�SWntk
r%dSXdS(N(R�R:t
StopIterationR+(R�((s)/usr/share/inkscape/extensions/voronoi.pyR:�s
(R0R1RR�R:(((s)/usr/share/inkscape/extensions/voronoi.pyR��s		cCstj|j�S(N(R�R�R�(R((s)/usr/share/inkscape/extensions/voronoi.pyR9�scCstj|j�S(N(R�R�R�(R((s)/usr/share/inkscape/extensions/voronoi.pyR��scCs
t|j�S(N(R5R�(R((s)/usr/share/inkscape/extensions/voronoi.pyR��scCs|jS(N(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyt_getxmin�scCs|jS(N(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyt_getymin�scCs|jS(N(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyt_getxmax�scCs|jS(N(R�(R((s)/usr/share/inkscape/extensions/voronoi.pyt_getymax�s(R0R1RRNtobjectR�R9R�R�R�R�R�R�tpropertyR3R7R4R8(((s)/usr/share/inkscape/extensions/voronoi.pyR��s										cCs8t|�}t�}t||�|j|j|jfS(sr Takes a list of point objects (which must have x and y fields).
        Returns a 3-tuple of:

           (1) a list of 2-tuples, which are the x,y coordinates of the 
               Voronoi diagram vertices
           (2) a list of 3-tuples (a,b,c) which are the equations of the
               lines in the Voronoi diagram: a*x + b*y = c
           (3) a list of 3-tuples, (l, v1, v2) representing edges of the 
               Voronoi diagram.  l is the index of the line, v1 and v2 are
               the indices of the vetices at the end of the edge.  If 
               v1 or v2 is -1, the line extends to infinity.
    (R�RRfRRR	(tpointsRSRT((s)/usr/share/inkscape/extensions/voronoi.pytcomputeVoronoiDiagram�s
	
cCs2t|�}t�}t|_t||�|jS(s� Takes a list of point objects (which must have x and y fields).
        Returns a list of 3-tuples: the indices of the points that form a
        Delaunay triangle.
    (R�RR=RRfR
(R�RSRT((s)/usr/share/inkscape/extensions/voronoi.pytcomputeDelaunayTriangulation�s
		
t__main__itthdpiis-ds-ps-ts-htr(-RRotsystgetoptt	TOLERANCER<R�RRfRkR;R)RER2R6R�R�R�R0targvtoptlisttargstGetoptErrortexittdoHelpR$RtoptRRRtptststdintfpR5topenRtsplittfldRuR
RRtclosetsl(((s)/usr/share/inkscape/extensions/voronoi.pyt<module> sf	AI	�=�M=2		#