示例#1
0
                public void Remove(FrontierPt _pt)
                {
                    if (_pt == First)
                    {
                        First = m_Count == 1 ? null : First.Right;
                    }

                    m_Count--;
                }
示例#2
0
            public void Remove(FrontierPt _fPt, Delaunay.Triangle.HalfEdge _newEdgeRight)
            {
                var fpLeft  = _fPt.Left;
                var fpRight = _fPt.Right;

                fpLeft.Right = fpRight;
                fpRight.Left = fpLeft;

                fpLeft.EdgeRight = _newEdgeRight;
                CS.m_PolPos[_fPt.VertIdx].thetaGroup.Remove(_fPt);
            }
示例#3
0
            public FrontierPt Add(PolartPt _pt, FrontierPt _fLt)
            {
                var fRt       = _fLt.Right;
                var newEdgeLt = _fLt.EdgeRight.Twin.NextEdge;
                var newEdgeRt = newEdgeLt.NextEdge;
                var fNew      = new FrontierPt(newEdgeRt, CS);

                _fLt.Right     = fRt.Left = fNew;
                _fLt.EdgeRight = newEdgeLt;

                fNew.Left  = _fLt;
                fNew.Right = fRt;

                _pt.thetaGroup.Add(fNew);

                LastAddedFPt = fNew;
                return(fNew);
            }
示例#4
0
                public void Add(FrontierPt _pt)
                {
                    if (First == null)
                    {
                        First = _pt;
                        m_Count++;
                        return;
                    }

                    var newTheta   = _pt.Theta;
                    var firstTheta = First.Theta;

                    if (firstTheta > newTheta)
                    {
                        First = _pt;
                    }
                    else if (_pt.Right == First)
                    {
                        First = _pt;
                    }

                    m_Count++;
                }