我建立一个JavaScript模块来增加便利功能HTML5画布元素。我正在尝试尽可能多的不同实现来填写我的模块。要查看我的进度,请访问我的project page和我的examples page。绘制椭圆与二次贝塞尔曲线和三次贝塞尔曲线
我有一个椭圆形绘制使用三次贝塞尔曲线的方法。我知道,二次Bezier曲线可以转化为三次Bezier曲线,但我有一些问题:
- 是否有误差余量任何区别近似于圆时?椭圆?
- 是否有任何理由有两个实现? (性能,准确性等)
- 我是否缺少绘制椭圆的其他方法?
P.S.这不是直接相关的,但是有没有其他的功能可以在这样的模块中使用?
注:这是不是一个家庭作业。
编辑:这是我的一个椭圆码(d是在X半径,YDIS是Y半径):
function ellipse(x, y, xDis, yDis) {
var kappa = 0.5522848, // 4 * ((√(2) - 1)/3)
ox = xDis * kappa, // control point offset horizontal
oy = yDis * kappa, // control point offset vertical
xe = x + xDis, // x-end
ye = y + yDis; // y-end
this.moveTo(x - xDis, y);
this.bezierCurveTo(x - xDis, y - oy, x - ox, y - yDis, x, y - yDis);
this.bezierCurveTo(x + ox, y - yDis, xe, y - oy, xe, y);
this.bezierCurveTo(xe, y + oy, x + ox, ye, x, ye);
this.bezierCurveTo(x - ox, ye, x - xDis, y + oy, x - xDis, y);
}
相关问题:
Convert a quadratic bezier to a cubic?
+1对于B样条建议。我想我已经在做你说的话了。我会在这里发布我的代码以防万一。 – tjameson 2011-04-06 16:22:24