UNPKG

@davepagurek/flo-mat

Version:

Medial / Scale Axis Transform (MAT/SAT) Library.

39 lines (31 loc) 1.11 kB
import { LlRbTree } from 'flo-ll-rb-tree'; import { Loop } from 'flo-boolean'; import { CpNode } from '../cp-node/cp-node.js'; import { PointOnShape } from '../point-on-shape/point-on-shape.js'; import { findAndAdd2Prongs } from './find-and-add-2-prongs.js'; import { fixOrdering } from '../find-mat/fix-ordering.js'; /** * @internal * Add 2 prongs. See comments on the add2Prong function. * @param loops * @param cpGraphs * @param for2Prongss * @param extreme The maximum coordinate value used to calculate floating point * tolerances. */ function findAndAdd2ProngsOnAllPaths( cpNode: CpNode | undefined, loops: Loop[], cpGraphs: Map<Loop,LlRbTree<CpNode>>, for2Prongss: PointOnShape[][], extreme: number, for1Prongs: boolean) { for (let k=0; k<for2Prongss.length; k++) { const for2Prongs = for2Prongss[k]; const _cpNode = findAndAdd2Prongs(loops, cpGraphs, k, for2Prongs, extreme, for1Prongs); cpNode = cpNode || _cpNode; } fixOrdering(cpNode!); return cpNode; } export { findAndAdd2ProngsOnAllPaths }