Ë
    ~ìqjÝ  ã                   óV   — d Z ddlZddlZd„ Zd„ Zd	d„Z ej                  edd¬«      Zy)
zShapely CGA algorithms.é    Nc                 óî   — t        j                  | j                  «      dd…dd…f   }t        j                  ||d   g«      j                  \  }}t        j
                  |dd |dd |dd z
  z  «      dz  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       úR/var/www/html/truck-me/venv/lib/python3.12/site-packages/shapely/algorithms/cga.pyÚsigned_arear      st   € ô
 �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                 ó  — t        j                  |«      }t        j                  |«      rt        j                  | «      } | S t        j
                  |«      r0t        j                  | «      } t        j                  | |   «      | |<   | S )zIReturn a copy of the rings potentially reversed depending on `condition`.)r   ÚasarrayÚallÚshapelyÚreverseÚanyr	   )ÚringsÚ	conditions     r   Ú_reverse_conditionedr      si   € ä—
‘
˜9Ó%€IÜ	‡v�vˆiÔÜ—‘ Ó&ˆð €Lô 
�‰�	Ô	Ü—‘˜“ˆÜ"Ÿ?™?¨5°Ñ+;Ó<ˆˆiÑØ€Lr   c           	      óê  — | €y | j                   dv r3| j                  | j                  D �cg c]  }t        ||«      ‘Œ c}«      S | j                   dk(  ršt	        j
                  | j                  g| j                  ¢«      }t        j                  |«      }|d    |d<   |rt	        j                  |«      }t	        j                  |«      r$t        ||«      }| j                  |d   |dd  «      S | S c c}w )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°DŒ_˜T ;Õ/ÒKó
ð 	
ð
 
×	Ñ	˜yÒ	(Ü—‘˜(×+Ñ+ÐA¨h×.@Ñ.@ÐAÓBˆÜ#ŸN™N¨5Ó1ÐØ#4°QÑ#7Ð7Ð˜!ÑÙÜ "§¡Ð/@Ó AÐÜ�6‰6Ð#Ô$Ü(¨Ð0AÓBˆEØ×%Ñ% e¨A¡h°°a°b°	Ó:Ð:Ø€Oùò Ls   «C0r   r   )ÚninÚnout)F)	Ú__doc__Únumpyr   r   r   r   r$   Ú
frompyfuncÚ_orient_polygons_vectorized© r   r   ú<module>r4      s4   ðÙ ã ã ò7òóð* ,˜bŸm™m¨OÀÈÔKÑ r   