{"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../../../src/chart/layout/constraint/constraint.ts"],"names":[],"mappings":"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","sourcesContent":["import { isNumber } from '@antv/util';\nimport { multiply } from './gauss';\nimport { Operator, Element } from './types';\nimport { Variable } from './variable';\n\n/**\n * 定义一个约束条件\n */\nexport class Constraint {\n /**\n * 操作符\n */\n public operator: Operator;\n\n /**\n * 方程组四则运算 + 连接的内容\n */\n public elements: Element[];\n\n constructor(operator: Operator, ...elements) {\n this.operator = operator;\n this.elements = elements;\n }\n\n /**\n * 获得表达式中所有的变量\n */\n public getVariables() {\n const vars: Variable[] = [];\n\n // todo 去重\n for (let i = 0; i < this.elements.length; i++) {\n let element = this.elements[i];\n element = Array.isArray(element) ? element : [element];\n\n // @ts-ignore\n for (let j = 0; j < element.length; j++) {\n const el = element[j];\n\n if (Variable.isVariable(el)) {\n vars.push(el);\n }\n }\n }\n\n return vars;\n }\n\n /**\n * 获得方程组的高斯矩阵数组\n * 按照指定的 variable 顺序\n * @param variableMap 变量对应的 idx\n */\n public getGaussArr(variableMap: Map) {\n const size = variableMap.size;\n // size 额外加上 b 常量\n const arr = new Array(size + 1).fill(0);\n\n this.elements.forEach((element: Element) => {\n const [a, variable] = this.parseElement(element);\n const idx = variableMap.get(variable);\n\n // 存在 -> 变量\n if (isNumber(idx)) {\n arr[idx] += a;\n } else {\n // 常数(最后一位)\n arr[size] += a;\n }\n });\n\n return arr;\n }\n\n /**\n * 解析 element,产生 [a, variable]\n * @param element\n */\n private parseElement(e: Element): [number, Variable] {\n if (isNumber(e)) {\n return [e, undefined];\n }\n\n if (Variable.isVariable(e)) {\n return [1, e];\n }\n\n if (Array.isArray(e)) {\n const mul = multiply(e.filter((i) => isNumber(i)) as number[]);\n const variable = e.find((i) => Variable.isVariable(i)) as Variable;\n return [mul, variable];\n }\n\n // 其他非法情况\n return [0, undefined];\n }\n}\n"]}