绘制贝塞尔曲线的截面

Ani*_*hag 1 c++ python bezier

我正在编写代码来近似四分之一椭圆到贝塞尔曲线.

现在已经这样做了,我在绘制这条曲线的部分时遇到了麻烦.我需要一些选择控制点的帮助.

最初,我将控制点距离与曲线起点距离的比值设为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/6t = pi/3?如何选择控制点?

650*_*502 5

要使用单个立方弧来近似圆四分之一,通常要做的是使中间点正好在圆上并使用切线的起点和终点方向.

这在任何合理的度量标准中都不是正式的"最佳"近似值,但是很容易计算...例如,圆形四分之一的幻数是0.5522847498.有关详细信息,请参阅此页面

要绘制椭圆弧,您可以只拉伸圆弧的控制点(再次不是数学上称为"最佳近似"的东西).

通用角度案例

可以使用以下方法计算此定义下的一般角度的最佳弧(即,贝塞尔曲线的中点位于弧的中间)...

1.对称三次贝塞尔弧的最大高度为3/4 H,其中H是控制点的高度

考虑到如何使用De Casteljau算法或关于贝塞尔曲线的显式计算的答案计算贝塞尔曲线的中点,这应该是清楚的.另见下图:

对称贝塞尔立方弧的中点高度

y_mid = ((0+H)/2 + (H+H)/2) / 2 = 3/4 H


2.圆形绳索中心的角度是底座角度的两倍

查看任何基本几何文本以获取证据.


最后命名L极端之间的距离,S对称Bezier的(未知)控制臂,2*alpha近似的圆角我们可以计算出

3. S = L(2/3)(1-cos(alpha))/(sin(alpha)**2)

这是从上述等式和一些计算得出的; 请参阅下图以获取说明.

控制点距离计算