Python 用SVG椭圆弧计算?

Python 用SVG椭圆弧计算?,python,python-3.x,pyqt4,Python,Python 3.x,Pyqt4,我正在开发一个自定义pyQt SVG渲染器,需要帮助。这是纯数学的,因此不需要API 要计算SVG椭圆弧,需要两个半径rx和ry;椭圆的旋转角度x轴旋转角度;大圆弧扫描标志(1或0),用于确定圆弧的绘制角度是否大于或小于180度,以及圆弧围绕圆的方向;扫掠标志(1或0)确定圆弧是沿负方向还是正方向绘制;最后的x和y值确定弧的终点 但是,QPainterPath.arcTo(self、float x、float y、float w、float h、float startAngle、float ar

我正在开发一个自定义pyQt SVG渲染器,需要帮助。这是纯数学的,因此不需要API

要计算SVG椭圆弧,需要两个半径
rx
ry
;椭圆的旋转角度
x轴旋转角度
大圆弧扫描标志
(1或0),用于确定圆弧的绘制角度是否大于或小于180度,以及圆弧围绕圆的方向;
扫掠标志
(1或0)确定圆弧是沿负方向还是正方向绘制;最后的
x
y
值确定弧的终点

但是,
QPainterPath.arcTo(self、float x、float y、float w、float h、float startAngle、float arcLenght)
使用一个边框
x、y、w、h
;一个起始角
startAngle
;弧长/扫掠长度是弧本身的长度。如何将SVG命令转换为
arcTo()
方法可以使用的内容

资料来源: , SVG椭圆弧使用“端点参数化”

QPainterPath.arcTo
arcs使用“中心参数化”

您提供的SVG链接在标题为 它提供端点和中心之间的参数化


请注意,声明调用签名为

QPainterPath.arcTo (self, QRectF rect, float startAngle, float arcLength)
但其描述不是指弧长,而是指扫掠长度:

创建占据给定矩形的圆弧,从 指定的startAngle和扩展扫描长度度 逆时针方向

奇怪的是,它说,
扫掠长度
是以度为单位测量的,而弧长有一个传统的数学意义,它总是一个距离

尽管文档中使用了令人困惑的参数名称“arclength”,但我认为它的意思是说,
arcTo
的最后一个参数是扫描角Δθ

因此,如果使用SVG实现说明中的公式
θ1,Δθ我认为它们可以分别用于
startAngle
arcLength

感谢链接,我通过了基础代数和三角学,但这有点难理解。边界矩形
x=w-rx
y=h-ry
w=rx*2
h=ry*2
。希望下一步是找出
startAngle
arcLength
。感谢您的帮助。我只是想问一些人如何将这些方程翻译成python,但非常感谢你为我指明了正确的方向。