From f86faba3a96a5b682863f3c55666949b38fb5517 Mon Sep 17 00:00:00 2001 From: be5invis Date: Tue, 13 Oct 2015 19:41:22 +0800 Subject: [PATCH] Removed toquad.js --- support/toquad.js | 95 ----------------------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 support/toquad.js diff --git a/support/toquad.js b/support/toquad.js deleted file mode 100644 index 4cfa378..0000000 --- a/support/toquad.js +++ /dev/null @@ -1,95 +0,0 @@ -function toQuad(p1, c1, c2, p2) { - // Quad control point is (3*c2 - p2 + 3*c1 - p1)/4 - var x = (3 * c2.x - p2.x + 3 * c1.x - p1.x) / 4; - var y = (3 * c2.y - p2.y + 3 * c1.y - p1.y) / 4; - if(Math.abs(c1.x - p1.x) < 0.25) x = p1.x; - if(Math.abs(c2.x - p2.x) < 0.25) x = p2.x; - if(Math.abs(c1.y - p1.y) < 0.25) y = p1.y; - if(Math.abs(c2.y - p2.y) < 0.25) y = p2.y; - return [ - p1, - { - x: x, - y: y - - }, - p2 - ]; -} - - -/** - * 三次贝塞尔转二次贝塞尔 - * - * @param {Object} p1 开始点 - * @param {Object} c1 控制点1 - * @param {Object} c2 控制点2 - * @param {Object} p2 结束点 - * @return {Array} 二次贝塞尔控制点 - */ -function bezierCubic2Q2(p1, c1, c2, p2, level) { - level = level || 0; - - // 判断极端情况,控制点和起止点一样 - if (p1.x === c1.x && p1.y === c1.y && c2.x === p2.x && c2.y === p2.y) { - return [ - [ - p1, - { - x: (p1.x + p2.x) / 2, - y: (p1.y + p2.y) / 2 - }, - p2 - ] - ]; - } - - - var mx = p2.x - 3 * c2.x + 3 * c1.x - p1.x; - var my = p2.y - 3 * c2.y + 3 * c1.y - p1.y; - - // control points near - if (mx * mx + my * my <= 4 || level > 5) { - return [ - toQuad(p1, c1, c2, p2) - ]; - } - - // Split to 2 qubic beziers by midpoints - // (p2 + 3*c2 + 3*c1 + p1)/8 - var mp = { - x: (p2.x + 3 * c2.x + 3 * c1.x + p1.x) / 8, - y: (p2.y + 3 * c2.y + 3 * c1.y + p1.y) / 8 - - }; - - return bezierCubic2Q2( - p1, - { - x: (p1.x + c1.x) / 2, - y: (p1.y + c1.y) / 2 - - }, - { - x: (p1.x + 2 * c1.x + c2.x) / 4, - y: (p1.y + 2 * c1.y + c2.y) / 4 - }, - mp, - level + 1 - ).concat(bezierCubic2Q2( - mp, - { - x: (p2.x + c1.x + 2 * c2.x) / 4, - y: (p2.y + c1.y + 2 * c2.y) / 4 - - }, - { - x: (p2.x + c2.x) / 2, - y: (p2.y + c2.y) / 2 - }, - p2, - level + 1 - )) -} - -module.exports = bezierCubic2Q2; \ No newline at end of file