ó
    oñ:i´  ã                   óx   • S r SSKJrJr  SSKJrJrJrJrJ	r	J
r
JrJrJrJr  S\
-  rS\
-  rS r " S S\5      rg	)
zùConvert SVG Path's elliptical arcs to Bezier curves.

The code is mostly adapted from Blink's SVGPathNormalizer::DecomposeArcToCubic
https://github.com/chromium/chromium/blob/93831f2/third_party/
blink/renderer/core/svg/svg_path_parser.cc#L169-L278
é    )ÚIdentityÚScale)
Úatan2ÚceilÚcosÚfabsÚisfiniteÚpiÚradiansÚsinÚsqrtÚtané   ç      à?c                 ól   • U R                  UR                  UR                  45      nUS   US   S-  -   $ )Nr   é   y              ð?)ÚtransformPointÚrealÚimag)ÚmatrixÚptÚrs      Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/svgLib/path/arc.pyÚ
_map_pointr      s6   € à×Ñ˜rŸw™w¨¯©Ð0Ó1€AØˆQ‰4�!�A‘$˜‘)ÑÐó    c                   ó,   • \ rS rSrS rS rS rS rSrg)ÚEllipticalArcé   c                 ó°   • Xl         X l        X0l        X@l        XPl        X`l        Xpl        [        U5      U l        S =U l	        =U l
        =U l        U l        g ©N)Úcurrent_pointÚrxÚryÚrotationÚlargeÚsweepÚtarget_pointr   ÚangleÚcenter_pointÚtheta1Útheta2Ú	theta_arc)Úselfr!   r"   r#   r$   r%   r&   r'   s           r   Ú__init__ÚEllipticalArc.__init__   sV   € Ø*ÔØŒØŒØ ŒØŒ
ØŒ
Ø(Ôô ˜XÓ&ˆŒ
ð JNÐMˆÔÐM˜DœKÐM¨$¬+¸½r   c                 ón  • [        U R                  5      n[        U R                  5      nU(       a  U(       d  gU R                  U R                  :X  a  gU R                  U R                  -
  S-  n[
        R                  " U R                  * 5      n[        XC5      nX-  nX"-  nUR                  UR                  -  nUR                  UR                  -  n	X†-  X—-  -   n
U
S:”  a*  U[        U
5      -  nU[        U
5      -  nXsU l        U l        [        SU-  SU-  5      R                  U R                  * 5      n[        X@R                  5      n[        X@R                  5      nXË-
  nUR                  UR                  -  UR                  UR                  -  -   n[        SU-  S-
  S5      n[        U5      nU R                  U R                  :X  a  U* nUU-  nX¼-   S-  nU[!        UR                  * UR                  5      -  nUU-  nUU-  n[#        UR                  UR                  5      n[#        UR                  UR                  5      nUU-
  nUS:  a  U R                  (       a
  U[$        -  nO US:”  a  U R                  (       d	  U[$        -  nUU l        UU-   U l        UU l        UU l        g)NFr   r   ç      Ð?g        r   T)r   r"   r#   r'   r!   r   Úrotater(   r   r   r   r   r   Úmaxr&   r%   Úcomplexr   ÚTWO_PIr*   r+   r,   r)   )r-   r"   r#   Úmid_point_distanceÚpoint_transformÚtransformed_mid_pointÚ	square_rxÚ	square_ryÚsquare_xÚsquare_yÚradii_scaleÚpoint1Úpoint2ÚdeltaÚdÚscale_factor_squaredÚscale_factorr)   r*   r+   r,   s                        r   Ú_parametrizeÚEllipticalArc._parametrize'   sk  € ô �$—'‘'‹]ˆÜ�$—'‘'‹]ˆÞ–rØð ×Ñ × 2Ñ 2Ó2Øà"×0Ñ0°4×3DÑ3DÑDÈÑKÐä"Ÿ/š/¨4¯:©:¨+Ó6ˆä *¨?Ó OÐØ‘Gˆ	Ø‘Gˆ	Ø(×-Ñ-Ð0E×0JÑ0JÑJˆØ(×-Ñ-Ð0E×0JÑ0JÑJˆð Ñ*¨XÑ-AÑAˆØ˜‹?Ø”$�{Ó#Ñ#ˆBØ”$�{Ó#Ñ#ˆBØ!ÐˆDŒG�T”Wä  B¡¨¨B©Ó/×6Ñ6¸¿
¹
°{ÓCˆä˜O×-?Ñ-?Ó@ˆÜ˜O×->Ñ->Ó?ˆØ‘ˆà�J‰J˜Ÿ™Ñ# e§j¡j°5·:±:Ñ&=Ñ=ˆÜ" 1 q¡5¨4¡<°Ó5ÐäÐ0Ó1ˆØ�:‰:˜Ÿ™Ó#Ø(˜=ˆLà�ÑˆØ™¨3Ñ.ˆØœ §¡ ¨U¯Z©ZÓ8Ñ8ˆØ�,ÑˆØ�,Ñˆä�v—{‘{ F§K¡KÓ0ˆÜ�v—{‘{ F§K¡KÓ0ˆà˜V‘Oˆ	Ø�q‹=˜TŸZŸZØœÑ‰IØ˜‹] 4§:§:ØœÑˆIàˆŒØ˜yÑ(ˆŒØ"ˆŒØ(ˆÔàr   c           	   #   ó|  #   • U R                   c  U R                  5       (       d  g [        R                  " U R                  5      R                  U R                  U R                  5      n[        [        [        U R                  [        S-   -  5      5      5      n[        U5       GH  nU R                  X0R                  -  U-  -   nU R                  US-   U R                  -  U-  -   nS[        SXT-
  -  5      -  n[!        U5      (       d    g [#        U5      n[%        U5      n[#        U5      n	[%        U5      n
['        X†U-  -
  XvU-  -   5      nX°R                   -  n['        X©5      nXÀR                   -  nUnU['        Xi-  U* U
-  5      -  n[)        X5      n[)        X5      n[)        X5      nX½U4v •  GM     g 7f)Ngü©ñÒMbP?r   gUUUUUUõ?r1   )r)   rD   r   r2   r(   Úscaler"   r#   Úintr   r   r,   ÚPI_OVER_TWOÚranger*   r   r	   r   r   r4   r   )r-   r7   Únum_segmentsÚiÚstart_thetaÚ	end_thetaÚtÚsin_start_thetaÚcos_start_thetaÚsin_end_thetaÚcos_end_thetar>   r'   r?   s                 r   Ú_decompose_to_cubic_curvesÚ(EllipticalArc._decompose_to_cubic_curvesm   s�  é € Ø×ÑÑ$¨T×->Ñ->×-@Ñ-@Øä"Ÿ/š/¨$¯*©*Ó5×;Ñ;¸D¿G¹GÀTÇWÁWÓMˆô
 œ4¤ T§^¡^´{ÀUÑ7JÑ%KÓ LÓMÓNˆÜ�|×$ˆAØŸ+™+¨¯N©NÑ(:¸\Ñ(IÑIˆKØŸ™ q¨1¡u°·±Ñ&>ÀÑ&MÑMˆIàœ#˜d iÑ&=Ñ>Ó?Ñ?ˆAÜ˜A—;‘;Ùä! +Ó.ˆOÜ! +Ó.ˆOÜ 	›NˆMÜ 	›NˆMäØ oÑ"5Ñ5Ø oÑ"5Ñ5óˆFð ×'Ñ'Ñ'ˆFÜ" =Ó@ˆLØ×-Ñ-Ñ-ˆLØ!ˆFØ”g˜aÑ/°!°°mÑ1CÓDÑDˆFä Ó8ˆFÜ Ó8ˆFÜ% oÓDˆLà ,Ð.Õ.ò7 %ùs   ‚F:F<c                 óâ   • U R                  5        H[  u  p#nUR                  UR                  UR                  4UR                  UR                  4UR                  UR                  45        M]     g r    )rT   ÚcurveTor   r   )r-   Úpenr>   r?   r'   s        r   ÚdrawÚEllipticalArc.draw”   s[   € Ø,0×,KÑ,KÖ,MÑ(ˆF˜LØ�K‰KØ—‘˜fŸk™kÐ*Ø—‘˜fŸk™kÐ*Ø×"Ñ" L×$5Ñ$5Ð6öò -Nr   )r(   r)   r!   r%   r$   r"   r#   r&   r'   r*   r+   r,   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r.   rD   rT   rY   Ú__static_attributes__© r   r   r   r      s   † òNò DòL%/õNr   r   N)Ú__doc__ÚfontTools.misc.transformr   r   Úmathr   r   r   r   r	   r
   r   r   r   r   r5   rI   r   Úobjectr   r`   r   r   Ú<module>re      s?   ðñ÷ 5ß N× N× Nð 
ˆR‰€Ø�B‰h€òôD�Fõ Dr   