+
    i                         R t ^ RIHtHt ^ RIHtHtHtHtH	t	H
t
HtHtHtHt ^]
,          tR]
,          tR t ! R R]4      tR# )zConvert 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                     V P                  VP                  VP                  34      pV^ ,          V^,          R,          ,           # )    y              ?)transformPointrealimag)matrixptrs   && y/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/svgLib/path/arc.py
_map_pointr      s6    rww01AQ4!A$)    c                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )EllipticalArcc                    Wn         W n        W0n        W@n        WPn        W`n        Wpn        \        V4      V n        R ;V n	        ;V n
        ;V n        V n        R # 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MDKM$+r   c                n   \        V P                  4      p\        V P                  4      pV'       d	   V'       g   R # V P                  V P                  8X  d   R # V P                  V P                  ,
          R,          p\
        P                  ! V P                  ) 4      p\        WC4      pW,          pW",          pVP                  VP                  ,          pVP                  VP                  ,          p	W,          W,          ,           p
V
^8  d3   V\        V
4      ,          pV\        V
4      ,          pWuV n        V n        \        ^V,          ^V,          4      P                  V P                  ) 4      p\        W@P                  4      p\        W@P                  4      pW,
          pVP                  VP                  ,          VP                  VP                  ,          ,           p\        ^V,          R,
          R4      p\        V4      pV P                  V P                  8X  d   V) pVV,          pW,           R,          pV\!        VP                  ) VP                  4      ,          pVV,          pVV,          p\#        VP                  VP                  4      p\#        VP                  VP                  4      pVV,
          pV^ 8  d!   V P                  '       d   V\$        ,          pM&V^ 8  d    V P                  '       g   V\$        ,          pVV n        VV,           V n        VV n        VV n        R# )Fr         ?g        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'   so    $'']$'']r  2 22"0043D3DDK"//4::+6 *? OG	G	(--0E0J0JJ(--0E0J0JJ *X-AA?${##B${##B!DGTWBB/66

{CO-?-?@O->->?JJ#ejj5::&=="1q54<501::#(=L3.UZZ88,,v{{FKK0v{{FKK0VO	q=TZZZI]4:::Iy("(r   c           	   #  0  "   V P                   f   V P                  4       '       g   R # \        P                  ! V P                  4      P                  V P                  V P                  4      p\        \        \        V P                  \        R,           ,          4      4      4      p\        V4       EF^  pV P                  W0P                  ,          V,          ,           pV P                  V^,           V P                  ,          V,          ,           pR\        RWT,
          ,          4      ,          p\!        V4      '       g    R # \#        V4      p\%        V4      p\#        V4      p	\%        V4      p
\'        WV,          ,
          WvV,          ,           4      pWP                   ,          p\'        W4      pWP                   ,          pTpV\'        Wi,          V) V
,          4      ,          p\)        W4      p\)        W4      p\)        W4      pWV3x  EKa  	  R # 5i)NgMbP?r.   gUUUUUU?)r&   rA   r   r/   r%   scaler   r    intr   r   r)   PI_OVER_TWOranger'   r   r   r   r   r1   r   )r*   r4   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;;DGGTWWM
 4T^^{U7J%K LMN|$A++NN(:\(IIKq1u&>&MMI#di&=>??AA;;!+.O!+.O	NM	NMo"55o"55F '''F"=@L---L!Fga/!m1CDDF8F8F%oDL,..7 %s   $HG/Hc                    V P                  4        F[  w  r#pVP                  VP                  VP                  3VP                  VP                  3VP                  VP                  34       K]  	  R # r   )rQ   curveTor   r   )r*   penr;   r<   r$   s   &&   r   drawEllipticalArc.draw   s[    ,0,K,K,M(FLKKfkk*fkk*""L$5$56 -Nr   )r%   r&   r   r"   r!   r   r    r#   r$   r'   r(   r)   N)
__name__
__module____qualname____firstlineno__r+   rA   rQ   rV   __static_attributes____classdictcell__)__classdict__s   @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   r2   rF   r   objectr    r   r   <module>rd      s?    5 N N N 
RBhDF Dr   