<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答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
        主站蜘蛛池模板: 免费看国产一级片| 精品国产麻豆免费网站| 久久精品国产精品亚洲蜜月| 猫咪免费人成网站在线观看入口 | 国内精品久久久久影院免费| 2048亚洲精品国产| 两个人看的www高清免费视频| 亚洲欧洲中文日韩av乱码| GOGOGO高清免费看韩国| 亚洲老妈激情一区二区三区| 国产久爱免费精品视频 | 国产成人一区二区三区视频免费| 亚洲精品卡2卡3卡4卡5卡区| 久久永久免费人妻精品| 亚洲免费电影网站| 高清国语自产拍免费视频国产| 国产成人精品亚洲一区| 亚洲色无码一区二区三区| 免费无码一区二区三区蜜桃| 亚洲欧洲日韩综合| 国产高清在线免费视频| 国产精品成人啪精品视频免费| 久久精品国产99精品国产亚洲性色| 午夜老司机永久免费看片| 亚洲AV综合色区无码二区爱AV| 日韩在线看片免费人成视频播放| 污网站免费在线观看| 亚洲αv久久久噜噜噜噜噜| 国产免费毛不卡片| 免费大片av手机看片| 中文字幕亚洲精品| 日韩视频免费一区二区三区| 国产精品免费视频观看拍拍| 亚洲成人免费网址| 亚洲精品视频在线看| 99re6在线精品视频免费播放| 亚洲国产欧美国产综合一区 | 久久精品无码专区免费| 亚洲最大在线观看| 久久精品国产精品亚洲艾草网美妙 | 免费观看美女裸体网站|