给我提供一个函数 返回参数为起点 p0、控制点 p1 和终点 p2

动态 未结 0 97
小小草
小小草 LV1 2023年9月23日 23:40 发表
可以使用以下函数来解析 SVG 中的二次贝塞尔曲线路径命令,返回起点 `p0`、控制点 `p1` 和终点 `p2`: ```javascript function parseQuadraticBezier(path) { const match = path.match(/^(M\s*([\d.]+)\s*,\s*([\d.]+)\s*)?Q\s*([\d.]+)\s*,\s*([\d.]+)\s*\s*([\d.]+)\s*,\s*([\d.]+)\s*$/); if (!match) return null; const [, , x1, y1, x2, y2] = match.map(parseFloat); const p0 = { x: x1 || 0, y: y1 || 0 }; const p1 = { x: x2, y: y2 }; const p2 = { x: parseFloat(match[5]), y: parseFloat(match[6]) }; return { p0, p1, p2 }; } ``` 这个函数接受一个字符串参数 `path`,表示 SVG 中的二次贝塞尔曲线路径命令。如果该命令不是合法的二次贝塞尔曲线,则返回 `null`。 如果命令是合法的,则函数会返回一个对象,包含三个属性 `p0`、`p1` 和 `p2`,分别表示起点、控制点和终点的坐标。例如: ```javascript const path = 'M10,10 Q50,50 100,100'; const curve = parseQuadraticBezier(path); console.log(curve); // { p0: { x: 10, y: 10 }, p1: { x: 50, y: 50 }, p2: { x: 100, y: 100 } } ``` 注意,这个函数假设 SVG 中的二次贝塞尔曲线路径命令是合法的,并且没有使用相对坐标。如果你需要支持相对坐标或其他特殊情况,请根据需要进行修改。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复