精品免费久久久_亚洲VA中文字幕无码毛片_成人黄色片在线观看_变态SM天堂无码专区_亚洲视频在线观看一区二区三区_伊人色综合久久天天五月婷

技術(shù)支持 / 技術(shù)論壇 / 二次開發(fā) / 【技術(shù)分享】【C#】用clipper實(shí)現(xiàn)多邊形偏置
【技術(shù)分享】【C#】用clipper實(shí)現(xiàn)多邊形偏置
freeter
帖子
1
精華
0
積分
12
二次開發(fā) 技術(shù)分享

    Clipper庫(kù)是一個(gè)開源的C++庫(kù),專門用于線段和多邊形的裁剪以及偏置計(jì)算。它提供了一套簡(jiǎn)單易用的API,允許開發(fā)人員快速地創(chuàng)建復(fù)雜的裁剪和偏置算法。參考鏈接:https://www.cnblogs.com/zhigu/p/11943118.html

    1.導(dǎo)入clpper庫(kù)

    2.編寫相關(guān)類

    由于clipper采用的是整型數(shù)據(jù),可以通過適當(dāng)?shù)目s放數(shù)據(jù)來計(jì)算。同時(shí)指出Clipper庫(kù)能接受范圍為(4.6+18)的整數(shù)坐標(biāo)值,支持?jǐn)U展到非常高的精度。這說明我們可以放心得對(duì)極小數(shù)值進(jìn)行較大倍數(shù)的縮放,不會(huì)造成算法的問題,類里采用的精度是1000。

    /// <summary>
    /// 偏置多邊形(clipper)
    /// </summary>
    internal class OffsetPolygon
    {
        /// <summary>
        /// clipper中的路徑
        /// </summary>
        internal List<IntPoint> Path { set; get; }=new List<IntPoint>();

        /// <summary>
        /// 偏置距離
        /// </summary>
        internal double OffsetDistance { set; get; }

        /// <summary>
        /// 精度
        /// </summary>
        internal double ClipperScale { set; get; } = 1000;

        internal OffsetPolygon(List<Point3> point3S, double offsetDistance)
        {
            for (int i = 0; i < point3S.Count; i++)
            {
                var x = Math.Round(point3S[i].X, 3) * 1000;
                var y = Math.Round(point3S[i].Y, 3) * 1000;
                this.Path.Add(new IntPoint(x,y));
            }
            this.OffsetDistance = offsetDistance;
        }


        internal List<IntPoint> Commit()
        {
            int miterLimit = 2;
            ClipperOffset co = new ClipperOffset(miterLimit); //向ClipperOffset對(duì)象添加一個(gè)路徑用來準(zhǔn)備偏置
            co.AddPath(Path, JoinType.jtRound, EndType.etClosedPolygon);
            List<List<IntPoint>> paths=new List<List<IntPoint>>();
            co.Execute(ref paths,this.OffsetDistance*1000);
            var offsetPath = paths.First();
            return offsetPath;
        }

    3.使用類

                    var discretePointList = GetSelectFacePointSet(selectFace); //獲取多邊形點(diǎn)集
                    var cSys = selectFace.AskFaceData().Direction.InitializeZ(selectFace.AskFaceData().Point); 
                    discretePointList =discretePointList.Select(a => a.ToWcs(cSys)).ToList(); //點(diǎn)集轉(zhuǎn)換(轉(zhuǎn)換成所在平面的坐標(biāo))

                    OffsetPolygon offsetPolygon=new OffsetPolygon(discretePointList,2); //實(shí)例偏置類
                    var offsetIntPoints = offsetPolygon.Commit();
                    var offsetPoint3S = offsetIntPoints.Select(a => new Point3((double)a.X / 1000, (double)a.Y / 1000)).ToList();

                    //相對(duì)坐標(biāo)轉(zhuǎn)回去
                    theUfSession.Csys.SetWcs(cSys.Create().Tag);
                    int inputCSys = UFConstants.UF_CSYS_ROOT_WCS_COORDS;
                    int outputCSys = UFConstants.UF_CSYS_ROOT_COORDS;
                    List<Point3> targetPoint3S=new List<Point3>();
                    for (int i = 0; i < offsetPoint3S.Count; i++)
                    {
                        Point3 outputPoint = new Point3();
                        theUfSession.Csys.MapPoint(inputCSys,offsetPoint3S[i],outputCSys,outputPoint);
                        targetPoint3S.Add(outputPoint);
                    }

                    //臨時(shí)線繪制
                    for (int i = 0; i < targetPoint3S.Count; i++)
                    {
                        CreateTempLine(targetPoint3S[i],targetPoint3S[(i+1)%targetPoint3S.Count]); 
                    }

效果圖:


941 0 2023-12-27 17:59:26
暫時(shí)還沒有回復(fù)評(píng)論

回復(fù)加入討論

回復(fù)
請(qǐng)選擇移動(dòng)至版塊:
確認(rèn)移動(dòng)
主站蜘蛛池模板: 女明星黄网站色视频免费国产 | 99爱中文字幕高清视频 | 亚洲欧美成人精品香蕉网 | FREE性欧美媓妇喷水 | 日韩欧美在线播放 | 国产精品186在线观看在线播放 | 欧美特黄特色三级视频在线观看 | FREE性欧美人与DOOG | 欧美日韩黄色一级片 | 中文无码亚洲精品字幕 | 国产中文字幕在线视频 | 午夜精品中文字幕 | 欧美日韩国产大片 | 国产亚洲精品精品精品 | 日韩欧美久久久久 | 国产尤物av尤物在线观看 | 久久永久免费人妻精品我不卡 | 成人午夜福利视频网址 | 高清国产亚洲精品自在久久 | 中国的黄色一级片 | 国产一区中文字幕 | 桃花视频大全不卡免费观看网站 | 中文字幕在线手机播放 | 全部免费毛片在线播放网站 | 男人操女人视频网站 | 久久99热久久99精品 | 无码中文资源在线播放 | 中文字幕人妻熟女人妻 | 日本饥渴人妻欲求不满 | 成熟女人牲交片免费观看视频 | 暗夜在线观看 | 色狠狠一区二区三区香蕉 | 久久懂色精品99综一区合 | 国产精品久久久久久一区 | 偷炮少妇宾馆半推半就激情 | 伦埋琪琪深夜福利 | 一本色道无码道DVD在线观看 | www.久 | 在线日韩一区二区 | 人妻无码ΑV中文字幕久久琪琪布 | 国产综合久久精品 |