Ë
    ÄOíg¢  ã                  ó\   — d dl mZ d dlmZ d dlmZmZ d dlmZm	Z	 dgZ
	 d	 	 	 	 	 	 	 d	d„Zy)
é    )Úannotations)ÚIterable)ÚVec2ÚUVec)ÚConstructionRayÚParallelRaysErrorÚoffset_vertices_2dc              #  óÜ  K  — t        j                  | «      }t        |«      dk  rt        d«      ‚|r+|d   j	                  |d   «      s|j                  |d   «       t        «       }t        |dd |dd «      D ]@  \  }}||z
  j                  «       j                  |«      }|j                  ||z   ||z   f«       ŒB |r|j                  d|d   «       |s
|d   d   –— t        |«      dkD  rHt        |dd |dd «      D ]3  \  \  }}	\  }
}	 t        ||	«      j                  t        |
|«      «      –— Œ5 |s|d   d   –— yy# t        $ r |	–— |	j	                  |
«      s|
–— Y Œhw xY w­w)a6  Yields vertices of the offset line to the shape defined by `vertices`.
    The source shape consist of straight segments and is located in the xy-plane,
    the z-axis of input vertices is ignored. Takes closed shapes into account if
    argument `closed` is ``True``, which yields intersection of first and last
    offset segment as first vertex for a closed shape. For closed shapes the
    first and last vertex can be equal, else an implicit closing segment from
    last to first vertex is added. A shape  with equal first and last vertex is
    not handled automatically as closed shape.

    .. warning::

        Adjacent collinear segments in `opposite` directions, same as a turn by
        180 degree (U-turn), leads to unexpected results.

    Args:
        vertices: source shape defined by vertices
        offset: line offset perpendicular to direction of shape segments defined
            by vertices order, offset > ``0`` is 'left' of line segment,
            offset < ``0`` is 'right' of line segment
        closed: ``True`` to handle as closed shape

    é   z2 or more vertices required.r   éÿÿÿÿNé   )r   ÚlistÚlenÚ
ValueErrorÚiscloseÚappendÚzipÚ
orthogonalÚ	normalizeÚinsertr   Ú	intersectr   )ÚverticesÚoffsetÚclosedÚ	_verticesÚoffset_segmentsÚstartÚendÚ
offset_vecÚstart1Úend1Ústart2Úend2s               úX/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/math/offset2d.pyr	   r	      sŸ  è ø€ ô2 —	‘	˜(Ó#€IÜ
ˆ9ƒ~˜ÒÜÐ7Ó8Ð8ái ‘l×*Ñ*¨9°R©=Ô9à×Ñ˜ 1™Ô&ô “f€OÜ˜) C R˜.¨)°A°B¨-Ó8ò G‰
ˆˆsØ˜E‘k×-Ñ-Ó/×9Ñ9¸&ÓAˆ
Ø×Ñ ¨
Ñ 2°C¸*Ñ4DÐEÕFðGñ Ø×Ñ˜q /°"Ñ"5Ô6ñ Ø˜aÑ  Ñ#Ò#ô ˆ?Ó˜aÒÜ.1Ø˜C˜RÐ  /°!°"Ð"5ó/
ò 	!Ñ*‰NˆVT™N˜V Tð!Ü% f¨dÓ3×=Ñ=Ü# F¨DÓ1óó ð		!ñ Ø˜bÑ! !Ñ$Ó$ð øô %ò !Ø’
Ø—|‘| FÔ+à ’Lùð	!üs*   ‚D
E,Ä'EÄ4E,Å"E)Å&E,Å(E)Å)E,N)F)r   zIterable[UVec]r   Úfloatr   ÚboolÚreturnzIterable[Vec2])Ú
__future__r   Útypingr   Ú
ezdxf.mathr   r   Úezdxf.math.liner   r   Ú__all__r	   © ó    r$   ú<module>r/      sH   ðõ #Ý ß !ß >ð  Ð
 €ð =Bð?%Øð?%Ø&+ð?%Ø59ð?%àô?%r.   