ó
    gziÝ  ã                   óR   • S r SSKrSSKrS rS rS	S jr\R                  " \SSS9rg)
zShapely CGA algorithms.é    Nc                 óð   • [         R                  " U R                  5      SS2SS24   n[         R                  " XS   /5      R                  u  p#[         R
                  " USS USS USS -
  -  5      S-  $ )zžReturn the signed area enclosed by a ring in linear time.

Algorithm used: https://web.archive.org/web/20080209143651/http://cgafaq.info:80/wiki/Polygon_Area
Né   é   éÿÿÿÿéþÿÿÿg       @)ÚnpÚarrayÚcoordsÚvstackÚTÚsum)Úringr
   ÚxsÚyss       ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/shapely/algorithms/cga.pyÚsigned_arear      sp   € ô
 �XŠX�d—k‘kÓ"¢1 b q b 5Ñ)€FÜ�YŠY˜ q¡	Ð*Ó+×-Ñ-�F€BÜ�6Š6�"�Q�r�(˜b  ˜f r¨#¨2 wÑ.Ñ/Ó0°3Ñ6Ð6ó    c                 ó.  • [         R                  " U5      n[         R                  " U5      (       a  [        R                  " U 5      n U $ [         R
                  " U5      (       a0  [         R                  " U 5      n [        R                  " X   5      X'   U $ )zIReturn a copy of the rings potentially reversed depending on `condition`.)r   ÚasarrayÚallÚshapelyÚreverseÚanyr	   )ÚringsÚ	conditions     r   Ú_reverse_conditionedr      sk   € ä—
’
˜9Ó%€IÜ	‡v‚vˆi×ÑÜ—’ Ó&ˆð €Lô 
�Š�	×	Ñ	Ü—’˜“ˆÜ"Ÿ?š?¨5Ñ+;Ó<ˆÑØ€Lr   c           	      ó  • U c  g U R                   S;   a5  U R                  U R                   Vs/ s H  n[        X!5      PM     sn5      $ U R                   S:X  a«  [        R
                  " U R                  /U R                  Q5      n[        R                  " U5      nUS   (       + US'   U(       a  [        R                  " U5      n[        R                  " U5      (       a#  [        X45      nU R                  US   USS  5      $ U $ s  snf )N)ÚMultiPolygonÚGeometryCollectionÚPolygonr   r   )Ú	geom_typeÚ	__class__ÚgeomsÚ_orient_polygonr   r	   ÚexteriorÚ	interiorsr   Úis_ccwÚlogical_notr   r   )ÚgeometryÚexterior_cwÚgeomr   Úreverse_conditions        r   r$   r$      sñ   € ØÑØØ×ÑÐCÓCØ×!Ñ!Ø<D¿NºNÓKºN°DŒ_˜TÖ/¹NÑKó
ð 	
ð
 
×	Ñ	˜yÓ	(Ü—’˜(×+Ñ+ÐA¨h×.@Ñ.@ÐAÓBˆÜ#ŸNšN¨5Ó1ÐØ#4°QÑ#7Ô7Ð˜!ÑÞÜ "§¢Ð/@Ó AÐÜ�6Š6Ð#×$Ñ$Ü(¨ÓBˆEØ×%Ñ% e¨A¡h°°a°b°	Ó:Ð:Ø€Oùò Ls   ®Dr   r   )ÚninÚnout)F)	Ú__doc__Únumpyr   r   r   r   r$   Ú
frompyfuncÚ_orient_polygons_vectorized© r   r   Ú<module>r4      s2   ðÙ ã ã ò7òôð* !Ÿmšm¨OÀÈÑKÑ r   