做爰高潮a片〈毛片〉,尤物av天堂一区二区在线观看,一本久久A久久精品VR综合,添女人荫蒂全部过程av

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript實現封閉區域布爾運算的示例代碼

來源:懂視網 責編:小采 時間:2020-11-27 22:12:29
文檔

JavaScript實現封閉區域布爾運算的示例代碼

JavaScript實現封閉區域布爾運算的示例代碼:這篇文章主要介紹多段線實現布爾運算的方法 先上代碼 function getOperatedCurves(sourceCurs: Curve[], targetCus: Curve[]) { let source: Polyline | Circle = (sourceCurs[0] instanceof Circle) ?
推薦度:
導讀JavaScript實現封閉區域布爾運算的示例代碼:這篇文章主要介紹多段線實現布爾運算的方法 先上代碼 function getOperatedCurves(sourceCurs: Curve[], targetCus: Curve[]) { let source: Polyline | Circle = (sourceCurs[0] instanceof Circle) ?

這篇文章主要介紹多段線實現布爾運算的方法

先上代碼

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
 }
 }

由于一些曲線類實現方法不一,這里主要說一些實現布爾運算的思路

  1. 判斷2封閉曲線是否是被包含的關系
  2. 獲取2封閉曲線的所有交點,這里交點可能是圓和線,線和線,圓和圓的,求交點的方法網上應該很多,以后有時間也會寫寫用JavaScript實現方式
  3. 根據所有的交點把2封閉曲線分割為多個部分
  4. 對分割后的線段進行整理,其中相交部分是曲線在對方曲線內部的部分,合并是互不在對方曲線內部的部分,相減類似不想說了,具體看代碼,如果是被包含狀態則更加就簡單了

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript實現封閉區域布爾運算的示例代碼

JavaScript實現封閉區域布爾運算的示例代碼:這篇文章主要介紹多段線實現布爾運算的方法 先上代碼 function getOperatedCurves(sourceCurs: Curve[], targetCus: Curve[]) { let source: Polyline | Circle = (sourceCurs[0] instanceof Circle) ?
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 蒙自县| 泉州市| 沙河市| 洛南县| 即墨市| 许昌市| 云南省| 莫力| 黄浦区| 乐清市| 左云县| 九江市| 仪征市| 云龙县| 平凉市| 三都| 鸡东县| 安新县| 湘潭县| 桂东县| 惠安县| 新和县| 柯坪县| 灵宝市| 红桥区| 搜索| 德昌县| 重庆市| 靖远县| 宁明县| 金门县| 黄龙县| 雷波县| 新建县| 谢通门县| 炉霍县| 公主岭市| 观塘区| 道孚县| 陵川县| 蒙自县|