【发布时间】:2011-04-06 08:24:04
【问题描述】:
我正在构建一个 JavaScript 模块来为 HTML5 画布元素添加便利功能。我试图提供尽可能多的不同实现来填写我的模块。要查看我的进度,请访问我的project page 和我的examples page。
我有一个使用三次贝塞尔曲线的椭圆绘制方法。我知道二次贝塞尔曲线可以转换为三次贝塞尔曲线,但我有一些问题:
- 逼近圆时的误差范围有什么不同吗?椭圆?
- 是否有任何理由同时使用这两种实现方式? (性能、准确性等)
- 我是否缺少其他绘制椭圆的方法?
附:这没有直接关系,但是在这样的模块中是否还有其他功能会很好?
注意:这不是家庭作业。
编辑:这是我的椭圆代码(xDis 是 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);
}
相关问题:
【问题讨论】:
标签: javascript html bezier