我正在编写代码来近似四分之一椭圆到贝塞尔曲线.
现在已经这样做了,我在绘制这条曲线的部分时遇到了麻烦.我需要一些选择控制点的帮助.
最初,我将控制点距离与曲线起点距离的比值设为0.51.
编辑:
pseudo code
import cairo [...]
ctx.moveto(0,y1)
ctx.curveto(0,y1/2,x1/2,0,x1,0)
Run Code Online (Sandbox Code Playgroud)
这将产生从(0,y1)到(x1,0)的近似椭圆曲线,椭圆中心在(x1,y1).
注意参数角度扫描是pi/2
.如果我想在更像虚线图案的部分中绘制它,那么我该怎么做呢?例如,从?t = pi/6
到t = pi/3
?如何选择控制点?
要使用单个立方弧来近似圆四分之一,通常要做的是使中间点正好在圆上并使用切线的起点和终点方向.
这在任何合理的度量标准中都不是正式的"最佳"近似值,但是很容易计算...例如,圆形四分之一的幻数是0.5522847498
.有关详细信息,请参阅此页面
要绘制椭圆弧,您可以只拉伸圆弧的控制点(再次不是数学上称为"最佳近似"的东西).
可以使用以下方法计算此定义下的一般角度的最佳弧(即,贝塞尔曲线的中点位于弧的中间)...
考虑到如何使用De Casteljau算法或关于贝塞尔曲线的显式计算的答案计算贝塞尔曲线的中点,这应该是清楚的.另见下图:
y_mid = ((0+H)/2 + (H+H)/2) / 2 = 3/4 H
查看任何基本几何文本以获取证据.
L
极端之间的距离,S
对称Bezier的(未知)控制臂,2*alpha
近似的圆角我们可以计算出
这是从上述等式和一些计算得出的; 请参阅下图以获取说明.