介绍
这篇文章将为大家详细讲解有关JavaScript如何实现封闭区域布尔运算,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
代码如下:
function getOperatedCurves (sourceCurs:曲线[],targetCus:,曲线[]) {才能 ,,,let 来源:,Polyline |, Circle =, (sourceCurs [0], instanceof 圆),?,sourceCurs [0], as Circle :, new 折线().Combine (sourceCurs) [0]; ,,,let 目标:,Polyline |, Circle =, (targetCus [0], instanceof 圆),?,targetCus [0], as Circle :, new 折线().Combine (targetCus) [0]; ,,,试一试 ,,,{ ,,,,,if (! source.IsClose | |, ! target.IsClose), throw new 错误(“不是封闭曲线“); ,,,} ,,,catch (err) ,,,{ ,,,,,console.log(错); ,,,} ,,,let interPts =, source.IntersectWith(目标,IntersectOption.OnBothOperands); ,,,let sourceContainerTarget =, isTargetCurInSourceCur(源,目标); ,,,let targetContainerSource =, isTargetCurInSourceCur(目标,,源); ,,,let isContainer =, sourceContainerTarget | |, targetContainerSource; ,,,let intersectionList:,曲线[],=,[];,//交集 ,,,let unionList:,曲线[],=,[];,//并集 ,,,let 子表:,曲线[],=,[];,//补集 ,,/* ,,,*两封闭区域有交点并且不是包含关系,则通过交点把区域分割 ,,*/,,,if (interPts.length ,,, ! isContainer) ,,,{ ,,,,,let pars1 =, interPts.map (p =祝辞,source.GetParamAtPoint (p)) .sort ((a, b),=祝辞,a 作用;b); ,,,,,let pars2 =, interPts.map (p =祝辞,target.GetParamAtPoint (p)) .sort ((a, b),=祝辞,a 作用;b); ,,,,,let cus1:, Array,=, source.GetSplitCurves (pars1); ,,,,,cus1.forEach (pl =比; ,,,,,{ ,,,,,,,if (isTargetCurInSourceCur(目标,,pl)) ,,,,,,,{ ,,,,,,,,,intersectionList.push (pl); ,,,,,,,} ,,,,,,, ,,,,,,,{ ,,,,,,,,,subList.push (pl); ,,,,,,,,,unionList.push (pl); ,,,,,,,} ,,,,,}) ,,,,,let cus2:, Array ,=, target.GetSplitCurves (pars2); ,,,,,cus2.forEach (pl =比; ,,,,,{ ,,,,,,,if (isTargetCurInSourceCur(来源,,pl)) ,,,,,,,{ ,,,,,,,,,intersectionList.push (pl); ,,,,,,,,,subList.push (pl); ,,,,,,,} ,,,,,,, ,,,,,,,{ ,,,,,,,,,unionList.push (pl); ,,,,,,,} ,,,,,}) ,,,} ,,, ,,,{ ,,,,,if (isContainer) ,,,,,{ ,,,,,,,if (sourceContainerTarget) ,,,,,,,{ ,,,,,,,,,intersectionList.push(目标); ,,,,,,,,,subList.push(源,目标); ,,,,,,,,,unionList.push(源); ,,,,,,,} ,,,,,,, ,,,,,,,{ ,,,,,,,,,unionList.push(目标); ,,,,,,,,,intersectionList.push(源); ,,,,,,,} null null null null null null null null null null null null JavaScript如何实现封闭区域布尔运算