这篇文章主要介绍多段线实现布尔运算的方法
先上代码
function getoperatedcurves(sourcecurs: curve[], targetcus: curve[]) { let source: polyline | circle = (sourcecurs[0] instanceof circle) ? sourcecurs[0] as circle : new polyline().combine(sourcecurs)[0]; let target: polyline | circle = (targetcus[0] instanceof circle) ? targetcus[0] as circle : new polyline().combine(targetcus)[0]; try { if (!source.isclose || !target.isclose) throw new error("不是封闭曲线"); } catch (err) { console.log(err); } let interpts = source.intersectwith(target, intersectoption.onbothoperands); let sourcecontainertarget = istargetcurinsourcecur(source, target); let targetcontainersource = istargetcurinsourcecur(target, source); let iscontainer = sourcecontainertarget || targetcontainersource; let intersectionlist: curve[] = []; //交集 let unionlist: curve[] = []; //并集 let sublist: curve[] = []; //补集 /* *两封闭区域有交点并且不是包含关系,则通过交点把区域分割 */ 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<polyline | arc> = source.getsplitcurves(pars1); cus1.foreach(pl => { if (istargetcurinsourcecur(target, pl)) { intersectionlist.push(pl); } else { sublist.push(pl); unionlist.push(pl); } }) let cus2: array<polyline | arc> = target.getsplitcurves(pars2); cus2.foreach(pl => { if (istargetcurinsourcecur(source, pl)) { intersectionlist.push(pl); sublist.push(pl); } else { unionlist.push(pl); } }) } else { if (iscontainer) { if (sourcecontainertarget) { intersectionlist.push(target); sublist.push(source, target); unionlist.push(source); } else { unionlist.push(target); intersectionlist.push(source); } } else { unionlist.push(source, target) sublist.push(source); } } return { intersectionlist, unionlist, sublist } }
由于一些曲线类实现方法不一,这里主要说一些实现布尔运算的思路
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
selenium + ajax抓取英雄联盟全部英雄的详细信息及多线程保存全部皮肤图片到本地
网友评论