В эллиптических дугах SVG используется «параметризация конечной точки».
QPainterPath.arcTo
в дугах используется «параметризация центра».
Предоставленная вами ссылка SVG имеет ссылку в конце раздела, озаглавленную «Замечания по реализации эллиптической дуги» , которые дают формулы для преобразования между конечной точкой и параметризацией центра.
Обратите внимание, что документация QPainterPath.arcTo утверждает, что подпись вызова
QPainterPath.arcTo (self, QRectF rect, float startAngle, float arcLength)
, но вместо arcLength
ее описание относится к sweepLength
:
Создает дугу, занимающую данный прямоугольник, начиная спри указанном startAngle и расширении sweepLength градусов против часовой стрелки.
Как ни странно, это говорит о том, что sweepLength
измеряется в градусах, тогда как длина дуги имеет обычное математическое значение, которое всегда равно расстоянию.
Несмотря на то, что в документации используется запутанное имя параметра «arclength», я думаю, что это означает, что последний аргумент arcTo
is угол поворота, Δθ.
Так что, если вы используете формулы из заметок по реализации SVG для θ1, Δθ, я думаю, что они могут использоваться для startAngle
и arcLength
соответственно.