Python 用SVG椭圆弧计算?
我正在开发一个自定义pyQt SVG渲染器,需要帮助。这是纯数学的,因此不需要API 要计算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
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,但非常感谢你为我指明了正确的方向。