如果你说你在哪里找到它会有所帮助 - 任意角度的公式(显然包括八分圆,只需插入 PI/4 作为你的角度)与你显示的有很大不同。在https://pomax.github.io/bezierinfo/#circles上找到真正的公式和解释。
二次曲线非常简单,因为控制点是端点切线的线性交点。因此,给定具有垂直切线的起点(1,0)(因为它是一个圆,这就是圆的工作方式)和某个角度 phi 的终点(cos(phi),sin(phi)),切线(sin(phi) , -cos(phi)),我们可以将这条曲线的控制点确定为:
Cx = cos(phi) - b * sin(phi)
Cy = sin(phi) + b * cos(phi)
在哪里:
cos(phi) - 1
b = ------------
sin(phi)
(这里的实际数学在上面的链接中进行了解释)。
插入 PI/4 来计算第一个八分圆意味着我们得到:
Cx = 1 (obviously; it's a vertical tangent, so the x coordinate is fixed)
Cy = sqrt(2) - 1
你就完成了:你不需要派生任何其他值,因为所有其他八分圆只是这些值的反映,你只需在纸上画一个圆圈,画线以显示八分圆,标记第一个八分圆及其坐标值,然后转到“哦,显然其他坐标是:...”——上面的公式也适用于半径为 1 的圆,但你知道如何乘法,所以你知道如何缩放值使它们与您想要的圈子相匹配。
不过,我很好奇为什么要使用二次曲线,因为与三次曲线相比,它们在客观上非常糟糕。例如:你需要 16 个点来模拟一个具有二次八分圆的圆,而你只需要 12 个点来模拟一个具有更高精度的立方四分之一。
此外,即使您只使用二次方程,您的软件用户也可能会转向其他软件。如果您的软件的其余部分值得使用,他们希望可以使用cubics 来请求您使用它们。为此做好计划,或者理想情况下从一开始就支持二次和三次。毕竟,SVG 等已经做到了。