Пример #1
0
        internal void Divide(GhostTriangle2DCollection ghostTriangles)
        {
            int Count = ghostTriangles.Count;

            for (int i = 0; i < Count; i++)
            {
                if(QualityDeterminer.AreaQuality(ghostTriangles[i], firstPolygon) < AreaTolerance|| QualityDeterminer.AreaQuality(ghostTriangles[i], secondPolygon) < AreaTolerance)
                {
                    Divide(ghostTriangles[i]);

                    GhostTriangle2D ghostTriangle = new GhostTriangle2D(ghostTriangles[i].A, ghostTriangles[i].B, this.firstPolygon.PointCount - 1);

                    ghostTriangles.Add(ghostTriangle);

                    ghostTriangle = new GhostTriangle2D(ghostTriangles[i].A, this.firstPolygon.PointCount - 1, ghostTriangles[i].C);

                    ghostTriangles.Add(ghostTriangle);

                    ghostTriangles[i].A = this.firstPolygon.PointCount - 1;
                }
            }
        }
Пример #2
0
        internal void Divide(GhostTriangle2DCollection ghostTriangles)
        {
            int Count = ghostTriangles.Count;

            for (int i = 0; i < Count; i++)
            {
                if (QualityDeterminer.AreaQuality(ghostTriangles[i], firstPolygon) < AreaTolerance || QualityDeterminer.AreaQuality(ghostTriangles[i], secondPolygon) < AreaTolerance)
                {
                    Divide(ghostTriangles[i]);

                    GhostTriangle2D ghostTriangle = new GhostTriangle2D(ghostTriangles[i].A, ghostTriangles[i].B, this.firstPolygon.PointCount - 1);

                    ghostTriangles.Add(ghostTriangle);

                    ghostTriangle = new GhostTriangle2D(ghostTriangles[i].A, this.firstPolygon.PointCount - 1, ghostTriangles[i].C);

                    ghostTriangles.Add(ghostTriangle);

                    ghostTriangles[i].A = this.firstPolygon.PointCount - 1;
                }
            }
        }
Пример #3
0
        private void SplitGhostTriangle(GhostTriangle2DCollection ghostTriangles, GhostTriangle2D ghostTriangle)
        {
            int Count = ghostTriangles.Count;

            for (int i = 0; i < Count; i++)
            {
                if (isNeighbor(ghostTriangles[i], ghostTriangle))
                {
                    Map(ghostTriangles[i], ghostTriangle);

                    GhostTriangle2D triangle = new GhostTriangle2D(ghostTriangles[i].A, ghostTriangles[i].C, ghostTriangle.C);

                    ghostTriangles.Add(triangle);

                    ghostTriangles[i].A = ghostTriangle.C;
                }
            }
        }
Пример #4
0
        private void SplitGhostTriangle(GhostTriangle2DCollection ghostTriangles, GhostTriangle2D ghostTriangle)
        {
            int Count = ghostTriangles.Count;

            for (int i = 0; i < Count; i++)
            {
                if (isNeighbor(ghostTriangles[i], ghostTriangle))
                {
                    Map(ghostTriangles[i], ghostTriangle);

                    GhostTriangle2D triangle = new GhostTriangle2D(ghostTriangles[i].A, ghostTriangles[i].C, ghostTriangle.C);

                    ghostTriangles.Add(triangle);

                    ghostTriangles[i].A = ghostTriangle.C;
                }
            }
        }