label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 5.82 kB
Source Map (JSON)
{"version":3,"file":"bezierUtil.mjs","sources":["../../../../src/utils/bezierUtil.ts"],"sourcesContent":["export function bezier2(p0, p1, p2) {\n\n var bounds = {\n minX: Math.min(p0.x, p2.x),\n maxX: Math.max(p0.x, p2.x),\n minY: Math.min(p0.y, p2.y),\n maxY: Math.max(p0.y, p2.y)\n };\n\n // 对于二次贝塞尔曲线,我们可以通过求导并找到导数为0的点来找到最小和最大的 x 和 y 值\n var tForX = (p0.x - p1.x) / (p0.x - 2 * p1.x + p2.x);\n var tForY = (p0.y - p1.y) / (p0.y - 2 * p1.y + p2.y);\n\n // 需要确保 t 在 [0, 1] 范围内,因为贝塞尔曲线的参数范围是 [0, 1]\n if (tForX > 0 && tForX < 1) {\n var xAtT = (1 - tForX) * (1 - tForX) * p0.x + 2 * (1 - tForX) * tForX * p1.x + tForX * tForX * p2.x;\n bounds.minX = Math.min(bounds.minX, xAtT);\n bounds.maxX = Math.max(bounds.maxX, xAtT);\n }\n\n if (tForY > 0 && tForY < 1) {\n var yAtT = (1 - tForY) * (1 - tForY) * p0.y + 2 * (1 - tForY) * tForY * p1.y + tForY * tForY * p2.y;\n bounds.minY = Math.min(bounds.minY, yAtT);\n bounds.maxY = Math.max(bounds.maxY, yAtT);\n }\n\n // console.log(\"左边界: \" + bounds.minX);\n // console.log(\"右边界: \" + bounds.maxX);\n // console.log(\"上边界: \" + bounds.minY);\n // console.log(\"下边界: \" + bounds.maxY);\n return {\n x: bounds.minX,\n y: bounds.minY,\n width: bounds.maxX - bounds.minX,\n height: bounds.maxY - bounds.minY\n };\n}\n\nexport function bezier3(p0, p1, p2, p3) {\n let minX = Math.min(p0.x, p3.x);\n let minY = Math.min(p0.y, p3.y);\n let maxX = Math.max(p0.x, p3.x);\n let maxY = Math.max(p0.y, p3.y);\n\n for (let t = 0; t <= 1; t += 0.01) {\n let x = Math.pow(1 - t, 3) * p0.x + 3 * Math.pow(1 - t, 2) * t * p1.x + 3 * (1 - t) * Math.pow(t, 2) * p2.x + Math.pow(t, 3) * p3.x;\n let y = Math.pow(1 - t, 3) * p0.y + 3 * Math.pow(1 - t, 2) * t * p1.y + 3 * (1 - t) * Math.pow(t, 2) * p2.y + Math.pow(t, 3) * p3.y;\n\n minX = Math.min(minX, x);\n minY = Math.min(minY, y);\n maxX = Math.max(maxX, x);\n maxY = Math.max(maxY, y);\n }\n\n // console.log(p0, p1, p2, p3)\n // console.log(\"左边界: \" + minX);\n // console.log(\"右边界: \" + maxX);\n // console.log(\"上边界: \" + minY);\n // console.log(\"下边界: \" + maxY);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n\n}\n"],"names":[],"mappings":"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"}