我建立一個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