JavaScript如何实现封闭区域布尔运算

  介绍

这篇文章将为大家详细讲解有关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如何实现封闭区域布尔运算