Ë
    ~ìqj?   ã                   ód   — d Z ddlmZmZmZmZ ddlZddlZg d¢Z	d„ Z
d„ Zdd„Zdd„Zdd	„Zdd
„Zy)zBAffine transforms, both in general and specific, named transforms.é    )ÚcosÚpiÚsinÚtanN)Úaffine_transformÚrotateÚscaleÚskewÚ	translatec                 óN  ‡‡‡‡‡‡‡	‡
‡‡‡‡‡— t        |«      dk(  r&dŠ|\  ŠŠŠŠŠŠ| j                  rHdŠdŠdxŠxŠxŠ	xŠ
Šn9t        |«      dk(  r dŠ|\  ŠŠŠŠŠŠŠ	Š
ŠŠŠŠ| j                  sdŠnt        d«      ‚ˆˆˆˆˆˆˆ	ˆ
ˆˆˆˆˆfd„}t        j                  | |‰dk(  ¬	«      S )
a$  Return a transformed geometry using an affine transformation matrix.

    The coefficient matrix is provided as a list or tuple with 6 or 12 items
    for 2D or 3D transformations, respectively.

    For 2D affine transformations, the 6 parameter matrix is::

        [a, b, d, e, xoff, yoff]

    which represents the augmented matrix::

        [x']   / a  b xoff \ [x]
        [y'] = | d  e yoff | [y]
        [1 ]   \ 0  0   1  / [1]

    or the equations for the transformed coordinates::

        x' = a * x + b * y + xoff
        y' = d * x + e * y + yoff

    For 3D affine transformations, the 12 parameter matrix is::

        [a, b, c, d, e, f, g, h, i, xoff, yoff, zoff]

    which represents the augmented matrix::

        [x']   / a  b  c xoff \ [x]
        [y'] = | d  e  f yoff | [y]
        [z']   | g  h  i zoff | [z]
        [1 ]   \ 0  0  0   1  / [1]

    or the equations for the transformed coordinates::

        x' = a * x + b * y + c * z + xoff
        y' = d * x + e * y + f * z + yoff
        z' = g * x + h * y + i * z + zoff
    é   é   é   ç      ð?ç        é   z,'matrix' expects either 6 or 12 coefficientsc                 ó”  •— ‰dk(  rN| j                   \  }}‰|z  ‰	|z  z   ‰z   }‰|z  ‰|z  z   ‰z   }t        j                  ||g«      j                   }|S ‰dk(  rn| j                   \  }}}‰|z  ‰	|z  z   ‰
|z  z   ‰z   }‰|z  ‰|z  z   ‰|z  z   ‰z   }‰|z  ‰|z  z   ‰|z  z   ‰z   }t        j                  |||g«      j                   }S )Nr   r   )ÚTÚnpÚstack)ÚcoordsÚxÚyÚxpÚypÚresultÚzÚzpÚaÚbÚcÚdÚeÚfÚgÚhÚiÚndimÚxoffÚyoffÚzoffs           €€€€€€€€€€€€€úL/var/www/html/truck-me/venv/lib/python3.12/site-packages/shapely/affinity.pyÚ_affine_coordsz(affine_transform.<locals>._affine_coordsH   sø   ø€ ð
 �1Š9Ø—8‘8‰DˆAˆqØ�Q‘˜˜Q™‘ Ñ%ˆBØ�Q‘˜˜Q™‘ Ñ%ˆBÜ—X‘X˜r 2˜hÓ'×)Ñ)ˆFð ˆð �QŠYØ—h‘h‰GˆAˆq�!Ø�Q‘˜˜Q™‘  Q¡Ñ&¨Ñ-ˆBØ�Q‘˜˜Q™‘  Q¡Ñ&¨Ñ-ˆBØ�Q‘˜˜Q™‘  Q¡Ñ&¨Ñ-ˆBÜ—X‘X˜r 2 r˜lÓ+×-Ñ-ˆFØˆó    )Ú	include_z)ÚlenÚhas_zÚ
ValueErrorÚshapelyÚ	transform)ÚgeomÚmatrixr-   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   s      @@@@@@@@@@@@@r,   r   r      sÅ   ÿü€ ôL ˆ6ƒ{�aÒØˆØ!'Ñˆˆ1ˆa��D˜$Ø�:Š:ØˆDØˆAØ#&Ð&ˆAÐ&�Ð&�AÐ&˜™DÜ	ˆV‹˜Ò	ØˆØ6<Ñ3ˆˆ1ˆa��A�q˜!˜Q  4¨¨tØ�zŠzØ‰DäÐGÓHÐH÷÷ ð ô$ ×Ñ˜T >¸TÀQ¹YÔGÐGr.   c                 óx  — |dk(  r"| j                   \  }}}}||z   dz  ||z   dz  f}n]|dk(  r| j                  j                  d   }n>t        |t        «      rt        d|›d�«      ‚t        |dd«      d	k(  r|j                  d   }t        |«      d
vrt        d«      ‚|dk(  r|dd S t        |«      dk(  r|dz   S |S )a5  Return interpreted coordinate tuple for origin parameter.

    This is a helper function for other transform functions.

    The point of origin can be a keyword 'center' for the 2D bounding box
    center, 'centroid' for the geometry's 2D centroid, a Point object or a
    coordinate tuple (x0, y0, z0).
    Úcenterg       @Úcentroidr   z'origin' keyword z is not recognizedÚ	geom_typeNÚPoint)r   r   z8Expected number of items in 'origin' to be either 2 or 3r   )r   )Úboundsr9   r   Ú
isinstanceÚstrr2   Úgetattrr0   )r5   Úoriginr(   ÚminxÚminyÚmaxxÚmaxys          r,   Úinterpret_originrE   ]   sÝ   € ð �Òà!%§¡Ñˆˆd�D˜$Ø˜$‘; #Ñ%¨¨t©°sÑ':Ð;‰Ø	�:Ò	Ø—‘×%Ñ% aÑ(‰Ü	�FœCÔ	 ÜÐ,¨V¨JÐ6HÐIÓJÐJÜ	�˜ dÓ	+¨wÒ	6Ø—‘˜qÑ!ˆô ˆ6ƒ{˜&Ñ ÜÐSÓTÐTØˆq‚yØ�a˜ˆ{Ðäˆv‹;˜!ÒØ˜F‘?Ð"àˆMr.   c                 ó,  — | j                   r| S |s|t        z  dz  }t        |«      }t        |«      }t	        |«      dk  rd}t	        |«      dk  rd}t        | |d«      \  }}|| d||dddd|||z  z
  ||z  z   |||z  z
  ||z  z
  df}t        | |«      S )aå  Return a rotated geometry on a 2D plane.

    The angle of rotation can be specified in either degrees (default) or
    radians by setting ``use_radians=True``. Positive angles are
    counter-clockwise and negative are clockwise rotations.

    The point of origin can be a keyword 'center' for the bounding box
    center (default), 'centroid' for the geometry's centroid, a Point object
    or a coordinate tuple (x0, y0).

    The affine transformation matrix for 2D rotation is:

      / cos(r) -sin(r) xoff \
      | sin(r)  cos(r) yoff |
      \   0       0      1  /

    where the offsets are calculated from the origin Point(x0, y0):

        xoff = x0 - x0 * cos(r) + y0 * sin(r)
        yoff = y0 - x0 * sin(r) - y0 * cos(r)
    ç     €f@çVçž¯²<r   r   r   )Úis_emptyr   r   r   ÚabsrE   r   )	r5   Úangler@   Úuse_radiansÚcospÚsinpÚx0Úy0r6   s	            r,   r   r   ~   sÀ   € ð, ‡}‚}ØˆÙØœ‘
˜UÑ"ˆÜˆu‹:€DÜˆu‹:€DÜ
ˆ4ƒy�7ÒØˆÜ
ˆ4ƒy�7ÒØˆÜ˜d F¨AÓ.�F€Bˆð �T�E˜3Ø�D˜#Ø�3˜Ø�2˜‘9‰n˜r D™yÑ(¨"¨r°D©y©.¸2À¹9Ñ*DÀcðK€Fô
 ˜D &Ó)Ð)r.   c                 ó˜   — | j                   r| S t        | |d«      \  }}}|ddd|ddd||||z  z
  |||z  z
  |||z  z
  f}t        | |«      S )a¶  Return a scaled geometry, scaled by factors along each dimension.

    The point of origin can be a keyword 'center' for the 2D bounding box
    center (default), 'centroid' for the geometry's 2D centroid, a Point
    object or a coordinate tuple (x0, y0, z0).

    Negative scale factors will mirror or reflect coordinates.

    The general 3D affine transformation matrix for scaling is:

        / xfact  0    0   xoff \
        |   0  yfact  0   yoff |
        |   0    0  zfact zoff |
        \   0    0    0     1  /

    where the offsets are calculated from the origin Point(x0, y0, z0):

        xoff = x0 - x0 * xfact
        yoff = y0 - y0 * yfact
        zoff = z0 - z0 * zfact
    r   r   )rI   rE   r   )	r5   ÚxfactÚyfactÚzfactr@   rO   rP   Úz0r6   s	            r,   r	   r	   ©   sq   € ð, ‡}‚}ØˆÜ! $¨°Ó2�J€BˆˆBð �S˜#Ø�5˜#Ø�3˜Ø�2˜‘:‰o˜r B¨¡J™°°R¸%±Z±ðA€Fô
 ˜D &Ó)Ð)r.   c                 ó"  — | j                   r| S |s|t        z  dz  }|t        z  dz  }t        |«      }t        |«      }t        |«      dk  rd}t        |«      dk  rd}t	        | |d«      \  }}d|d|ddddd| |z  | |z  df}	t        | |	«      S )a—  Return a skewed geometry, sheared by angles along x and y dimensions.

    The shear angle can be specified in either degrees (default) or radians
    by setting ``use_radians=True``.

    The point of origin can be a keyword 'center' for the bounding box
    center (default), 'centroid' for the geometry's centroid, a Point object
    or a coordinate tuple (x0, y0).

    The general 2D affine transformation matrix for skewing is:

        /   1    tan(xs) xoff \
        | tan(ys)  1     yoff |
        \   0      0       1  /

    where the offsets are calculated from the origin Point(x0, y0):

        xoff = -y0 * tan(xs)
        yoff = -x0 * tan(ys)
    rG   rH   r   r   r   )rI   r   r   rJ   rE   r   )
r5   ÚxsÚysr@   rL   ÚtanxÚtanyrO   rP   r6   s
             r,   r
   r
   Ì   s³   € ð* ‡}‚}ØˆÙØ”"‰W�u‰_ˆØ”"‰W�u‰_ˆÜˆr‹7€DÜˆr‹7€DÜ
ˆ4ƒy�7ÒØˆÜ
ˆ4ƒy�7ÒØˆÜ˜d F¨AÓ.�F€Bˆð �4˜Ø�C˜Ø�3˜Øˆc�D‰j˜2˜# ™* cð+€Fô
 ˜D &Ó)Ð)r.   c                 óR   — | j                   r| S ddddddddd|||f}t        | |«      S )zôReturn a translated geometry shifted by offsets along each dimension.

    The general 3D affine transformation matrix for translation is:

        / 1  0  0 xoff \
        | 0  1  0 yoff |
        | 0  0  1 zoff |
        \ 0  0  0   1  /
    r   r   )rI   r   )r5   r)   r*   r+   r6   s        r,   r   r   ÷   sD   € ð ‡}‚}Øˆð �3˜Ø�3˜Ø�3˜Ø�D˜$ð €Fô
 ˜D &Ó)Ð)r.   )r8   F)r   r   r   r8   )r   r   r8   F)r   r   r   )Ú__doc__Úmathr   r   r   r   Únumpyr   r3   Ú__all__r   rE   r   r	   r
   r   © r.   r,   ú<module>ra      s>   ðÙ Hç "Ó "ã ã â
F€òNHòbóB(*óV *óF(*ôV*r.   