{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../../src/geometry/shape/util/path.ts"],"names":[],"mappings":"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","sourcesContent":["import { vec2 } from '@antv/matrix-util';\nimport { each } from '@antv/util';\nimport { Coordinate, PathCommand } from '../../../dependents';\nimport { Point, Position } from '../../../interface';\nimport { getDistanceToCenter } from '../../../util/coordinate';\n\nfunction _points2path(points: Point[], isInCircle: boolean): PathCommand[] {\n const path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (let i = 1, length = points.length; i < length; i += 1) {\n const item = points[i];\n path.push(['L', item.x, item.y]);\n }\n\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n\n return path;\n}\n\nfunction _convertArr(arr: number[], coord: Coordinate): any[] {\n const tmp = [arr[0]];\n for (let i = 1, len = arr.length; i < len; i = i + 2) {\n const point = coord.convert({\n x: arr[i],\n y: arr[i + 1],\n });\n tmp.push(point.x, point.y);\n }\n return tmp;\n}\nfunction _convertArcPath(path: PathCommand, coord: Coordinate): any[] {\n const { isTransposed } = coord;\n const r = path[1];\n const x = path[6];\n const y = path[7];\n const point = coord.convert({ x, y });\n const direction = isTransposed ? 0 : 1;\n return ['A', r, r, 0, 0, direction, point.x, point.y];\n}\n\nfunction _convertPolarPath(pre: PathCommand, cur: PathCommand, coord: Coordinate): PathCommand[] {\n const { isTransposed, startAngle, endAngle } = coord;\n const prePoint =\n pre[0].toLowerCase() === 'a'\n ? {\n x: pre[6],\n y: pre[7],\n }\n : {\n x: pre[1],\n y: pre[2],\n };\n const curPoint = {\n x: cur[1],\n y: cur[2],\n };\n const rst = [];\n const xDim = isTransposed ? 'y' : 'x';\n const angleRange = Math.abs(curPoint[xDim] - prePoint[xDim]) * (endAngle - startAngle);\n const direction = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; // 圆弧的方向\n const flag = angleRange > Math.PI ? 1 : 0; // 大弧还是小弧标志位\n const convertPoint = coord.convert(curPoint);\n const r = getDistanceToCenter(coord, convertPoint);\n if (r >= 0.5) {\n // 小于1像素的圆在图像上无法识别\n if (angleRange === Math.PI * 2) {\n const middlePoint = {\n x: (curPoint.x + prePoint.x) / 2,\n y: (curPoint.y + prePoint.y) / 2,\n };\n const middleConvertPoint = coord.convert(middlePoint);\n rst.push(['A', r, r, 0, flag, direction, middleConvertPoint.x, middleConvertPoint.y]);\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n } else {\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n }\n }\n return rst;\n}\n\n// 当存在整体的圆时,去除圆前面和后面的线,防止出现直线穿过整个圆的情形\nfunction _filterFullCirleLine(path: PathCommand[]) {\n each(path, (subPath, index) => {\n const cur = subPath;\n if (cur[0].toLowerCase() === 'a') {\n const pre = path[index - 1];\n const next = path[index + 1];\n if (next && next[0].toLowerCase() === 'a') {\n if (pre && pre[0].toLowerCase() === 'l') {\n pre[0] = 'M';\n }\n } else if (pre && pre[0].toLowerCase() === 'a') {\n if (next && next[0].toLowerCase() === 'l') {\n next[0] = 'M';\n }\n }\n }\n });\n}\n\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport const smoothBezier = (\n points: Position[],\n smooth: number,\n isLoop: boolean,\n constraint: Position[]\n): Position[] => {\n const cps = [];\n const hasConstraint = !!constraint;\n\n let prevPoint: Position;\n let nextPoint: Position;\n let min: Position;\n let max: Position;\n let nextCp0: Position;\n let cp1: Position;\n let cp0: Position;\n\n if (hasConstraint) {\n [min, max] = constraint;\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i];\n min = vec2.min([0, 0], min, point) as [number, number];\n max = vec2.max([0, 0], max, point) as [number, number];\n }\n }\n\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n prevPoint = points[isLoop ? (i ? i - 1 : len - 1) : i - 1];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n\n let v: [number, number] = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint) as [number, number];\n v = vec2.scale(v, v, smooth) as [number, number];\n\n let d0 = vec2.distance(point, prevPoint);\n let d1 = vec2.distance(point, nextPoint);\n\n const sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n let v1 = vec2.scale([0, 0], v, -d0);\n let v2 = vec2.scale([0, 0], v, d1);\n\n cp1 = vec2.add([0, 0], point, v1) as Position;\n nextCp0 = vec2.add([0, 0], point, v2) as Position;\n\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point)) as Position;\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point)) as Position;\n\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1) as Position;\n\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point)) as Position;\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point)) as Position;\n\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2) as Position;\n\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min) as Position;\n cp1 = vec2.min([0, 0], cp1, max) as Position;\n nextCp0 = vec2.max([0, 0], nextCp0, min) as Position;\n nextCp0 = vec2.min([0, 0], nextCp0, max) as Position;\n }\n\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n};\n\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp: number[], z: boolean, constraint: Position[]): PathCommand[] {\n const isLoop = !!z;\n const pointList = [];\n for (let i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n\n const controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n const len = pointList.length;\n const d1 = [];\n\n let cp1: Position;\n let cp2: Position;\n let p: Position;\n\n for (let i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n\n/**\n * @ignore\n * 将点连接成路径 path\n */\nexport function getLinePath(points: Point[], isInCircle?: boolean): PathCommand[] {\n return _points2path(points, isInCircle);\n}\n\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points: Point[], isInCircle?: boolean, constaint?: Position[]): PathCommand[] {\n const data = [];\n const first = points[0];\n let prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points, isInCircle);\n }\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n const constraint = constaint || [\n // 范围\n [0, 0],\n [1, 1],\n ];\n const splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}\n\n/**\n * @ignore\n * 将归一化后的路径数据转换成坐标\n */\nexport function convertNormalPath(coord, path: PathCommand[]): PathCommand[] {\n const tmp = [];\n each(path, (subPath) => {\n const action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'l':\n case 'c':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n return tmp;\n}\n\n/**\n * @ignore\n * 将路径转换为极坐标下的真实路径\n */\nexport function convertPolarPath(coord, path: PathCommand[]): PathCommand[] {\n let tmp = [];\n let pre: PathCommand;\n let cur: PathCommand;\n let transposed: boolean;\n let equals: boolean;\n each(path, (subPath, index) => {\n const action = subPath[0];\n\n switch (action.toLowerCase()) {\n case 'm':\n case 'c':\n case 'q':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'l':\n pre = path[index - 1];\n cur = subPath;\n transposed = coord.isTransposed;\n // 是否半径相同,转换成圆弧\n equals = transposed ? pre[pre.length - 2] === cur[1] : pre[pre.length - 1] === cur[2];\n if (equals) {\n tmp = tmp.concat(_convertPolarPath(pre, cur, coord));\n } else {\n // y 不相等,所以直接转换\n tmp.push(_convertArr(subPath, coord));\n }\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n _filterFullCirleLine(tmp); // 过滤多余的直线\n return tmp;\n}\n"]}