Ë
    £èhÜB  ã                  óà   — d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZmZ d dlmZ erd dlmZ g d¢Z eddd	«      f	 	 	 	 	 	 	 	 	 dd
„ZdZ G d„ d«      Z G d„ d«      Z G d„ de«      Zy)é    )Úannotations)ÚTYPE_CHECKINGÚSequenceÚIterableÚOptionalÚIterator)ÚVec3ÚUVecÚX_AXISÚY_AXISÚZ_AXISÚMatrix44)ÚRGB)Ú
BaseLayout)ÚOCSÚUCSÚPassTroughUCSé   é   é   c                óX   — t        ||«      D ]  \  }}| j                  ||d|i¬«       Œ y )NÚcolor)Ú
dxfattribs)ÚzipÚadd_line)ÚlayoutÚstartÚpointsÚcolorsÚpointr   s         ú.lib/python3.12/site-packages/ezdxf/math/ucs.pyÚrender_axisr"      s0   € ô ˜F FÖ+‰ˆˆuØ�‰˜˜u°'¸5Ð1AˆÕBñ ,ó    g      �?c                  óž   — e Zd ZdZefdd„Zedd„«       Zedd„«       Zedd„«       Z	dd„Z
dd„Zdd„Zdd	„Zd
 ed
dd«      f	 	 	 	 	 	 	 dd„Zy)r   zkEstablish an :ref:`OCS` for a given extrusion vector.

    Args:
        extrusion: extrusion vector.

    c                óâ  — t        |«      j                  «       }|j                  t        «       | _        | j                  r¯t        |j                  «      t        k  r2t        |j                  «      t        k  rt        j                  |«      }nt        j                  |«      }|j                  «       }|j                  |«      j                  «       }t        j                  |||«      | _        y y ©N)r	   Ú	normalizeÚiscloser   Ú	transformÚabsÚxÚ
_1_OVER_64Úyr   Úcrossr   ÚucsÚmatrix)ÚselfÚ	extrusionÚAzÚAxÚAys        r!   Ú__init__zOCS.__init__#   s£   € Ü�)‹_×&Ñ&Ó(ˆØŸZ™Z¬Ó/Ð/ˆŒØ�>Š>Ü�B—D‘D“	œJÒ&¬S°·±«Y¼Ò-CÜ—\‘\ "Ó%‘ä—\‘\ "Ó%�Ø—‘“ˆBØ—‘˜"“×'Ñ'Ó)ˆBÜ"Ÿ,™, r¨2¨rÓ2ˆD�Kð r#   c                óR   — | j                   r| j                  j                  S t        S ©zx-axis unit vector)r)   r0   Úuxr   ©r1   s    r!   r9   zOCS.ux/   ó   € ð "&§¢ˆt�{‰{�~‰~Ð;´VÐ;r#   c                óR   — | j                   r| j                  j                  S t        S ©zy-axis unit vector)r)   r0   Úuyr   r:   s    r!   r>   zOCS.uy4   r;   r#   c                óR   — | j                   r| j                  j                  S t        S ©zz-axis unit vector)r)   r0   Úuzr   r:   s    r!   rA   zOCS.uz9   r;   r#   c                ój   — t        |«      }| j                  r| j                  j                  |«      S |S )z#Returns OCS vector for WCS `point`.)r	   r)   r0   Úocs_from_wcs)r1   r    Úp3s      r!   Úfrom_wcszOCS.from_wcs>   s,   € ä�%‹[ˆØ�>Š>Ø—;‘;×+Ñ+¨BÓ/Ð/àˆIr#   c              #  ó¶   K  — t        j                  |«      }| j                  r(| j                  j                  }|D ]  } ||«      –— Œ y|E d{  –—†  y7 Œ­w)z2Returns iterable of OCS vectors from WCS `points`.N)r	   Úgenerater)   r0   rC   )r1   r   Ú_pointsrE   r    s        r!   Úpoints_from_wcszOCS.points_from_wcsF   sI   è ø€ ä—-‘- Ó'ˆØ�>Š>Ø—{‘{×/Ñ/ˆHÛ �Ù˜u“oÓ%ñ !ð ×Òúó   ‚AAÁAÁAc                óf   — | j                   r| j                  j                  |«      S t        |«      S )z#Returns WCS vector for OCS `point`.)r)   r0   Ú
ocs_to_wcsr	   ©r1   r    s     r!   Úto_wcsz
OCS.to_wcsP   s(   € à�>Š>Ø—;‘;×)Ñ)¨%Ó0Ð0ä˜“;Ðr#   c              #  ó¶   K  — t        j                  |«      }| j                  r(| j                  j                  }|D ]  } ||«      –— Œ y|E d{  –—†  y7 Œ­w)z1Returns iterable of WCS vectors for OCS `points`.N)r	   rG   r)   r0   rL   )r1   r   rH   rN   r    s        r!   Úpoints_to_wcszOCS.points_to_wcsW   sI   è ø€ ä—-‘- Ó'ˆØ�>Š>Ø—[‘[×+Ñ+ˆFÛ �Ù˜U“mÓ#ñ !ð ×ÒúrJ   r   r   r   c           
     ó¬   — t        |d| j                  t        |z  «      | j                  t        |z  «      | j                  t        |z  «      f|¬«       y)ú(Render axis as 3D lines into a `layout`.©r   r   r   ©r   r   r   N)r"   rN   r   r   r   ©r1   r   Úlengthr   s       r!   r"   zOCS.render_axisa   sL   € ô 	ØØà—‘œF V™OÓ,Ø—‘œF V™OÓ,Ø—‘œF V™OÓ,ðð
 ö		
r#   N)r2   r
   ©Úreturnr	   )r    r
   rX   r	   )r   zIterable[UVec]rX   úIterator[Vec3])r   r   rV   Úfloatr   r   rX   ÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r6   Úpropertyr9   r>   rA   rE   rI   rN   rP   r   r"   © r#   r!   r   r      sœ   „ ñð *0ô 
3ð ò<ó ð<ð ò<ó ð<ð ò<ó ð<óóóóð Ù˜!˜Q “lð	
àð
ð ð
ð ð	
ð
 
ô
r#   r   c                  ó<  — e Zd ZdZ	 	 	 	 d'	 	 	 	 	 	 	 d(d„Zed)d„«       Zed)d„«       Zed)d„«       Zed)d„«       Z	e	j                  d*d„«       Z	d+d	„Zd,d
„Zd-d„Zd.d„Zd,d„Zd-d„Zd.d„Zd,d„Zd-d„Zd/d„Zd/d„Zd0d„Zd1d„Zd2d„Zd2d„Zd2d„Zd3d„Zd4d„Zd5d„Zed6d„«       Ze	 	 	 	 	 	 	 	 d7d„«       Z e	 	 	 	 	 	 	 	 d7d„«       Z!e	 	 	 	 	 	 	 	 d7d„«       Z"e	 	 	 	 	 	 	 	 d7d „«       Z#e	 	 	 	 	 	 	 	 d7d!„«       Z$e	 	 	 	 	 	 	 	 d7d"„«       Z%d# e&d#d$d%«      f	 	 	 	 	 d8d&„Z'y)9r   aá  Establish a user coordinate system (:ref:`UCS`). The UCS is defined by
    the origin and two unit vectors for the x-, y- or z-axis, all axis in
    :ref:`WCS`. The missing axis is the cross product of the given axis.

    If x- and y-axis are ``None``: ux = ``(1, 0, 0)``, uy = ``(0, 1, 0)``,
    uz = ``(0, 0, 1)``.

    Unit vectors don't have to be normalized, normalization is done at
    initialization, this is also the reason why scaling gets lost by copying or
    rotating.

    Args:
        origin: defines the UCS origin in world coordinates
        ux: defines the UCS x-axis as vector in :ref:`WCS`
        uy: defines the UCS y-axis as vector in :ref:`WCS`
        uz: defines the UCS z-axis as vector in :ref:`WCS`

    Nc                óF  — |€|€t         }t        }t        }�nc|€\t        |«      j	                  «       }t        |«      j	                  «       }t        |«      j                  |«      j	                  «       }�n|€[t        |«      j	                  «       }t        |«      j	                  «       }t        |«      j                  |«      j	                  «       }n¨|€[t        |«      j	                  «       }t        |«      j	                  «       }t        |«      j                  |«      j	                  «       }nKt        |«      j	                  «       }t        |«      j	                  «       }t        |«      j	                  «       }t        j                  |||t        |«      «      | _        y r&   )	r   r   r   r	   r'   r.   r   r/   r0   )r1   Úoriginr9   r>   rA   Ú_uxÚ_uyÚ_uzs           r!   r6   zUCS.__init__ˆ   s8  € ð ˆ:˜"˜*ÜˆCÜˆCÜŠCØˆZÜ�r“(×$Ñ$Ó&ˆCÜ�r“(×$Ñ$Ó&ˆCÜ�r“(—.‘. Ó$×.Ñ.Ó0ŠCØˆZÜ�r“(×$Ñ$Ó&ˆCÜ�r“(×$Ñ$Ó&ˆCÜ�r“(—.‘. Ó$×.Ñ.Ó0‰CØˆZÜ�r“(×$Ñ$Ó&ˆCÜ�r“(×$Ñ$Ó&ˆCÜ�r“(—.‘. Ó$×.Ñ.Ó0‰Cä�r“(×$Ñ$Ó&ˆCÜ�r“(×$Ñ$Ó&ˆCÜ�r“(×$Ñ$Ó&ˆCä (§¡¨S°#°s¼DÀ»LÓ Iˆ�r#   c                ó.   — | j                   j                  S r8   )r0   r9   r:   s    r!   r9   zUCS.ux¦   ó   € ð �{‰{�~‰~Ðr#   c                ó.   — | j                   j                  S r=   )r0   r>   r:   s    r!   r>   zUCS.uy«   ri   r#   c                ó.   — | j                   j                  S r@   )r0   rA   r:   s    r!   rA   zUCS.uz°   ri   r#   c                ó.   — | j                   j                  S )zReturns the origin©r0   rd   r:   s    r!   rd   z
UCS.originµ   s   € ð �{‰{×!Ñ!Ð!r#   c                ó&   — || j                   _        y)zSet origin.Nrm   )r1   Úvs     r!   rd   z
UCS.originº   s   € ð ˆ�‰Õr#   c                ón   — t        | j                  | j                  | j                  | j                  «      S )zReturns a copy of this UCS.)r   rd   r9   r>   rA   r:   s    r!   ÚcopyzUCS.copy¿   s#   € ä�4—;‘; §¡¨¯©°$·'±'Ó:Ð:r#   c                ó8   — | j                   j                  |«      S )z"Returns WCS point for UCS `point`.)r0   r)   rM   s     r!   rN   z
UCS.to_wcsÃ   s   € à�{‰{×$Ñ$ UÓ+Ð+r#   c                ó8   — | j                   j                  |«      S )z1Returns iterable of WCS vectors for UCS `points`.)r0   Útransform_vertices©r1   r   s     r!   rP   zUCS.points_to_wcsÇ   s   € à�{‰{×-Ñ-¨fÓ5Ð5r#   c                ó8   — | j                   j                  |«      S )zAReturns WCS direction for UCS `vector` without origin adjustment.)r0   Útransform_direction©r1   Úvectors     r!   Údirection_to_wcszUCS.direction_to_wcsË   s   € à�{‰{×.Ñ.¨vÓ6Ð6r#   c                ó8   — | j                   j                  |«      S )z"Returns UCS point for WCS `point`.)r0   Úucs_vertex_from_wcsrM   s     r!   rE   zUCS.from_wcsÏ   s   € à�{‰{×.Ñ.¨uÓ5Ð5r#   c              #  óF   K  — | j                   }|D ]  } ||«      –— Œ y­w)z2Returns iterable of UCS vectors from WCS `points`.N)rE   )r1   r   rE   r    s       r!   rI   zUCS.points_from_wcsÓ   s#   è ø€ à—=‘=ˆÛˆEÙ˜5“/Ó!ñ ùs   ‚!c                ó8   — | j                   j                  |«      S )z>Returns UCS vector for WCS `vector` without origin adjustment.)r0   Úucs_direction_from_wcsrx   s     r!   Údirection_from_wcszUCS.direction_from_wcsÙ   s   € à�{‰{×1Ñ1°&Ó9Ð9r#   c                ól   — | j                  |«      }t        | j                  «      j                  |«      S )zuReturns OCS vector for UCS `point`.

        The :class:`OCS` is defined by the z-axis of the :class:`UCS`.

        ©rN   r   rA   rE   )r1   r    Úwpoints      r!   Úto_ocsz
UCS.to_ocsÝ   s+   € ð —‘˜UÓ#ˆÜ�4—7‘7‹|×$Ñ$ VÓ,Ð,r#   c              #  óŽ   K  — | j                   }t        | j                  «      }|D ]  }|j                   ||«      «      –— Œ y­w)z¿Returns iterable of OCS vectors for UCS `points`.

        The :class:`OCS` is defined by the z-axis of the :class:`UCS`.

        Args:
            points: iterable of UCS vertices

        Nr‚   )r1   r   ÚwcsÚocsr    s        r!   Úpoints_to_ocszUCS.points_to_ocsæ   s;   è ø€ ð �k‰kˆÜ�$—'‘'‹lˆÛˆEØ—,‘,™s 5›zÓ*Ó*ñ ùs   ‚AAc                ó^   — | j                  t        j                  |«      «      j                  S )a  Transforms `angle` from current UCS to the parent coordinate system
        (most likely the WCS) including the transformation to the OCS
        established by the extrusion vector :attr:`UCS.uz`.

        Args:
            angle: in UCS in degrees

        )Úucs_direction_to_ocs_directionr	   Úfrom_deg_angleÚ	angle_deg©r1   Úangles     r!   Úto_ocs_angle_degzUCS.to_ocs_angle_degô   s*   € ð ×2Ñ2Ü×Ñ Ó&ó
ç
‰)ð	r#   c                ó^   — | j                  t        j                  |«      «      j                  S )a  Transforms `angle` from current UCS to the parent coordinate system
        (most likely the WCS) including the transformation to the OCS
        established by the extrusion vector :attr:`UCS.uz`.

        Args:
            angle: in UCS in radians

        )rŠ   r	   Ú
from_anglerŽ   r�   s     r!   Úto_ocs_angle_radzUCS.to_ocs_angle_rad  s$   € ð ×2Ñ2´4·?±?À5Ó3IÓJ×PÑPÐPr#   c                óh   — t        | j                  «      j                  | j                  |«      «      S )z´Transforms UCS `direction` vector into OCS direction vector of the
        parent coordinate system (most likely the WCS), target OCS is defined by
        the UCS z-axis.
        )r   rA   rE   rz   )r1   Ú	directions     r!   rŠ   z"UCS.ucs_direction_to_ocs_direction  s(   € ô
 �4—7‘7‹|×$Ñ$ T×%:Ñ%:¸9Ó%EÓFÐFr#   c                óÞ   — t        j                  t        |«      |«      }|j                  | j                  | j
                  | j                  g«      \  }}}t        | j                  |||¬«      S )a[  Returns a new rotated UCS, with the same origin as the source UCS.
        The rotation vector is located in the origin and has :ref:`WCS`
        coordinates e.g. (0, 0, 1) is the WCS z-axis as rotation vector.

        Args:
            axis: arbitrary rotation axis as vector in :ref:`WCS`
            angle: rotation angle in radians

        ©rd   r9   r>   rA   )	r   Úaxis_rotater	   rt   r9   r>   rA   r   rd   )r1   ÚaxisrŽ   Útr9   r>   rA   s          r!   Úrotatez
UCS.rotate  sX   € ô × Ñ ¤ d£¨UÓ3ˆØ×)Ñ)¨4¯7©7°D·G±G¸T¿W¹WÐ*EÓF‰
ˆˆB�Ü˜$Ÿ+™+¨"°¸Ô;Ð;r#   c                óÜ   — t        j                  | j                  |«      }|j                  | j                  | j
                  g«      \  }}t        | j                  | j                  ||¬«      S )z„Returns a new rotated UCS, rotation axis is the local x-axis.

        Args:
             angle: rotation angle in radians

        r–   )r   r—   r9   rt   r>   rA   r   rd   )r1   rŽ   r™   r>   rA   s        r!   Úrotate_local_xzUCS.rotate_local_x!  sT   € ô × Ñ  §¡¨%Ó0ˆØ×%Ñ% t§w¡w°·±Ð&8Ó9‰ˆˆBÜ˜$Ÿ+™+¨$¯'©'°b¸RÔ@Ð@r#   c                óÜ   — t        j                  | j                  |«      }|j                  | j                  | j
                  g«      \  }}t        | j                  || j                  |¬«      S )z„Returns a new rotated UCS, rotation axis is the local y-axis.

        Args:
             angle: rotation angle in radians

        r–   )r   r—   r>   rt   r9   rA   r   rd   )r1   rŽ   r™   r9   rA   s        r!   Úrotate_local_yzUCS.rotate_local_y,  sT   € ô × Ñ  §¡¨%Ó0ˆØ×%Ñ% t§w¡w°·±Ð&8Ó9‰ˆˆBÜ˜$Ÿ+™+¨"°·±¸RÔ@Ð@r#   c                óÜ   — t        j                  | j                  |«      }|j                  | j                  | j
                  g«      \  }}t        | j                  ||| j                  ¬«      S )z„Returns a new rotated UCS, rotation axis is the local z-axis.

        Args:
             angle: rotation angle in radians

        r–   )r   r—   rA   rt   r9   r>   r   rd   )r1   rŽ   r™   r9   r>   s        r!   Úrotate_local_zzUCS.rotate_local_z7  sT   € ô × Ñ  §¡¨%Ó0ˆØ×%Ñ% t§w¡w°·±Ð&8Ó9‰ˆˆBÜ˜$Ÿ+™+¨"°¸¿¹Ô@Ð@r#   c                óB   — | xj                   t        |«      z  c_         | S )ztShifts current UCS by `delta` vector and returns `self`.

        Args:
            delta: shifting vector

        )rd   r	   )r1   Údeltas     r!   Úshiftz	UCS.shiftB  s   € ð 	�Š”t˜E“{Ñ"�Øˆr#   c                ó&   — t        |«      | _        | S )zPlace current UCS at new origin `location` and returns `self`.

        Args:
            location: new origin in WCS

        )r	   rd   )r1   Úlocations     r!   Úmovetoz
UCS.movetoL  s   € ô ˜8“nˆŒØˆr#   c                ó0   — | xj                   |z  c_         | S )z¸General inplace transformation interface, returns `self` (floating
        interface).

        Args:
             m: 4x4 transformation matrix (:class:`ezdxf.math.Matrix44`)

        )r0   )r1   Úms     r!   r)   zUCS.transformV  s   € ð 	�Š�qÑ�Øˆr#   c                ó.   — | j                   j                  S )z0Returns ``True`` if cartesian coordinate system.)r0   Úis_cartesianr:   s    r!   rª   zUCS.is_cartesiana  s   € ð �{‰{×'Ñ'Ð'r#   c                ón   — t        |«      }|j                  t        |«      | z
  «      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the x-axis vector
        and an arbitrary point in the xy-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: x-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the xy-plane as
                (x, y, z) tuple in :ref:`WCS`

        ©rd   r9   rA   ©r	   r.   r   )rd   r˜   r    Úx_axisÚz_axiss        r!   Úfrom_x_axis_and_point_in_xyzUCS.from_x_axis_and_point_in_xyf  ó3   € ô �d“ˆØ—‘œd 5›k¨FÑ2Ó3ˆÜ˜& V°Ô7Ð7r#   c                ór   — t        |«      }t        |«      | z
  }|j                  |«      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the x-axis vector
        and an arbitrary point in the xz-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: x-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the xz-plane as
                (x, y, z) tuple in :ref:`WCS`

        ©rd   r9   r>   r­   )rd   r˜   r    r®   Ú	xz_vectorÚy_axiss         r!   Úfrom_x_axis_and_point_in_xzzUCS.from_x_axis_and_point_in_xzx  ó8   € ô �d“ˆÜ˜“K &Ñ(ˆ	Ø—‘ Ó(ˆÜ˜& V°Ô7Ð7r#   c                ór   — t        |«      }t        |«      | z
  }|j                  |«      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the y-axis vector
        and an arbitrary point in the xy-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: y-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the xy-plane as
                (x, y, z) tuple in :ref:`WCS`

        ©rd   r>   rA   r­   )rd   r˜   r    rµ   Ú	xy_vectorr¯   s         r!   Úfrom_y_axis_and_point_in_xyzUCS.from_y_axis_and_point_in_xy‹  r·   r#   c                ór   — t        |«      }t        |«      | z
  }|j                  |«      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the y-axis vector
        and an arbitrary point in the yz-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: y-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the yz-plane as
                (x, y, z) tuple in :ref:`WCS`

        r³   r­   )rd   r˜   r    rµ   Ú	yz_vectorr®   s         r!   Úfrom_y_axis_and_point_in_yzzUCS.from_y_axis_and_point_in_yzž  r·   r#   c                ón   — t        |«      }|j                  t        |«      | z
  «      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the z-axis vector
        and an arbitrary point in the xz-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: z-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the xz-plane as
                (x, y, z) tuple in :ref:`WCS`

        r¹   r­   )rd   r˜   r    r¯   rµ   s        r!   Úfrom_z_axis_and_point_in_xzzUCS.from_z_axis_and_point_in_xz±  r±   r#   c                ór   — t        |«      }t        |«      | z
  }|j                  |«      }t        | ||¬«      S )aƒ  Returns a new :class:`UCS` defined by the origin, the z-axis vector
        and an arbitrary point in the yz-plane.

        Args:
            origin: UCS origin as (x, y, z) tuple in :ref:`WCS`
            axis: z-axis vector as (x, y, z) tuple in :ref:`WCS`
            point: arbitrary point unlike the origin in the yz-plane as
                (x, y, z) tuple in :ref:`WCS`

        r¬   r­   )rd   r˜   r    r¯   r½   r®   s         r!   Úfrom_z_axis_and_point_in_yzzUCS.from_z_axis_and_point_in_yzÃ  r·   r#   r   r   r   c           
     óÀ   — t        || j                  | j                  t        |z  «      | j                  t        |z  «      | j                  t
        |z  «      f|¬«       y)rR   rT   N)r"   rd   rN   r   r   r   rU   s       r!   r"   zUCS.render_axisÖ  sP   € ô 	ØØ—+‘+à—‘œF V™OÓ,Ø—‘œF V™OÓ,Ø—‘œF V™OÓ,ðð
 ö		
r#   )rS   NNN)rd   r
   r9   úOptional[UVec]r>   rÄ   rA   rÄ   rW   )ro   r
   rX   r[   )rX   r   ©r    r	   rX   r	   ©r   zIterable[Vec3]rX   rY   )ry   r	   rX   r	   ©rŽ   rZ   rX   rZ   )r”   r	   rX   r	   )r˜   r
   rŽ   rZ   rX   r   )rŽ   rZ   rX   r   )r¢   r
   rX   r   )r¥   r
   rX   r   )r¨   r   rX   r   )rX   Úbool)rd   r
   r˜   r
   r    r
   rX   r   )r   r   rV   rZ   r   r   )(r\   r]   r^   r_   r6   r`   r9   r>   rA   rd   Úsetterrq   rN   rP   rz   rE   rI   r€   r„   rˆ   r�   r’   rŠ   rš   rœ   rž   r    r£   r¦   r)   rª   Ústaticmethodr°   r¶   r»   r¾   rÀ   rÂ   r   r"   ra   r#   r!   r   r   t   sŽ  „ ñð* !Ø!Ø!Ø!ðJàðJð ðJð ð	Jð
 óJð< òó ðð òó ðð òó ðð ò"ó ð"ð ‡]�]òó ðó;ó,ó6ó7ó6ó"ó:ó-ó+óó	QóGó<ó	Aó	Aó	Aóóó	ð ò(ó ð(ð ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð" ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð$ ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð$ ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð$ ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð" ð8Øð8Ø ð8Ø)-ð8à	ò8ó ð8ð* Ù˜!˜Q “lð	
àð
ð ð
ð ô	
r#   r   c                  ób   ‡ — e Zd ZdZˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zˆ xZS )r   z5UCS is equal to the WCS and OCS (extrusion = 0, 0, 1)c                ó"   •— t         ‰| �  «        y r&   )Úsuperr6   )r1   Ú	__class__s    €r!   r6   zPassTroughUCS.__init__ì  s   ø€ Ü‰ÑÕr#   c                ó   — |S r&   ra   rM   s     r!   rN   zPassTroughUCS.to_wcsï  ó   € Øˆr#   c                ó   — t        |«      S r&   ©Úiterru   s     r!   rP   zPassTroughUCS.points_to_wcsò  ó   € Ü�F‹|Ðr#   c                ó   — |S r&   ra   rM   s     r!   r„   zPassTroughUCS.to_ocsõ  rÐ   r#   c                ó   — t        |«      S r&   rÒ   ru   s     r!   rˆ   zPassTroughUCS.points_to_ocsø  rÔ   r#   c                ó   — |S r&   ra   r�   s     r!   r�   zPassTroughUCS.to_ocs_angle_degû  rÐ   r#   c                ó   — |S r&   ra   r�   s     r!   r’   zPassTroughUCS.to_ocs_angle_radþ  rÐ   r#   c                ó   — |S r&   ra   rM   s     r!   rE   zPassTroughUCS.from_wcs  rÐ   r#   c                ó   — t        |«      S r&   rÒ   ru   s     r!   rI   zPassTroughUCS.points_from_wcs  rÔ   r#   rÅ   rÆ   rÇ   )r\   r]   r^   r_   r6   rN   rP   r„   rˆ   r�   r’   rE   rI   Ú__classcell__)rÎ   s   @r!   r   r   é  s3   ø„ Ù?ôóóóóóóó÷r#   r   N)
r   r   r   r
   r   zSequence[UVec]r   r   rX   r[   )Ú
__future__r   Útypingr   r   r   r   r   Ú
ezdxf.mathr	   r
   r   r   r   r   Úezdxf.colorsr   Úezdxf.layoutsr   Ú__all__r"   r,   r   r   r   ra   r#   r!   Ú<module>râ      s—   ðõ #ß HÕ Hß C× CÝ áÝ(â
)€ñ �a˜˜A“,ð	CØðCàðCð ðCð ð	Cð
 
óCð €
÷V
ñ V
÷rr
ñ r
ôj�Cõ r#   