code: def _parametrize(self):
      # convert from endopoint to center parametrization:
      # https://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter
  
      # If rx = 0 or ry = 0 then this arc is treated as a straight line segment (a
      # "lineto") joining the endpoints.
      # http://www.w3.org/TR/SVG/implnote.html#ArcOutOfRangeParameters
      rx = fabs(self.rx)
      ry = fabs(self.ry)
      if not (rx and ry):
          return False
  
      # If the current point and target point for the arc are identical, it should
      # be treated as a zero length path. This ensures continuity in animations.
      if self.target_point == self.current_point:
          return False
  
      mid_point_distance = (
          self.current_point - self.target_point
      ) * 0.5
  
      point_transform = Identity.rotate(-self.angle)
  
      transformed_mid_point = _map_point(
          point_transform, mid_point_distance
      )
      square_rx = rx * rx
      square_ry = ry * ry
      square_x = transformed_mid_point.real * transformed_mid_point.real
      square_y = transformed_mid_point.imag * transformed_mid_point.imag
  
      # Check if the radii are big enough to draw the arc, scale radii if not.
      # http://www.w3.org/TR/SVG/implnote.html#ArcCorrectionOutOfRangeRadii
      radii_scale = square_x / square_rx + square_y / square_ry
      if radii_scale > 1:
          rx *= sqrt(radii_scale)
          ry *= sqrt(radii_scale)
          self.rx, self.ry = rx, ry
  
      point_transform = Scale(1 / rx, 1 / ry).rotate(-self.angle)
  
      point1 = _map_point(point_transform, self.current_point)
      point2 = _map_point(point_transform, self.target_point)
      delta = point2 - point1
  
      d = delta.real * delta.real + delta.imag * delta.imag
      scale_factor_squared = max(1 / d - 0.25, 0.0)
  
      scale_factor = sqrt(scale_factor_squared)
      if self.sweep == self.large:
          scale_factor = -scale_factor
  
      delta *= scale_factor
      center_point = (point1 + point2) * 0.5
      center_point += complex(-delta.imag, delta.real)
      point1 -= center_point
      point2 -= center_point
  
      theta1 = atan2(point1.imag, point1.real)
      theta2 = atan2(point2.imag, point2.real)
  
      theta_arc = theta2 - theta1
      if theta_arc < 0 and self.sweep:
          theta_arc += TWO_PI
      elif theta_arc > 0 and not self.sweep:
          theta_arc -= TWO_PI
  
      self.theta1 = theta1
      self.theta2 = theta1 + theta_arc
      self.theta_arc = theta_arc
      self.center_point = center_point
  
      return True
  
file_path: catboost/contrib/python/fonttools/fontTools/svgLib/path/arc.py
imports: from fontTools.misc.transform import Identity, Scale
  from math import atan2, ceil, cos, fabs, isfinite, pi, radians, sin, sqrt, tan
label_desc: Use image node_id 2 for calling the EllipticalArc obj's underlying member method code with example usage: obj._parametrize() and returns: True, False, False