Exemple #1
0
        //逐点插入法2
        public Edge[] PointByPointInsertion()
        {
            EdgeSet      sEdgeSet     = new EdgeSet();
            TriangleSet  sTriangleSet = new TriangleSet();
            MinBoundRect sMBR         = this.mPointSet.MBR;
            double       width        = sMBR.MaxX - sMBR.MinX;
            double       height       = sMBR.MaxY - sMBR.MinY;
            double       middlePointX = (sMBR.MaxX + sMBR.MinX) / 2;
            double       middlePointY = sMBR.MinY;
            DataPoint    P0           = new DataPoint(-1, "P0", middlePointX - width, middlePointY, 0);
            DataPoint    P1           = new DataPoint(-2, "P1", middlePointX + width, middlePointY, 0);
            DataPoint    P2           = new DataPoint(-3, "P2", middlePointX, middlePointY + 2 * height, 0);
            Triangle     T0           = new Triangle(P0, P1, P2, -1);

            sTriangleSet.AddTriangle(T0);
            sEdgeSet.AddEdge(new Edge(P0, P1));
            sEdgeSet.AddEdge(new Edge(P1, P2));
            sEdgeSet.AddEdge(new Edge(P1, P0));
            foreach (var point in mPointSet.PointList)
            {
                Triangle CurTri = sTriangleSet.GetPointInsidesTri(point);
                if (CurTri != null)
                {
                }
            }
            return(sEdgeSet.EdgeList.ToArray());
        }
Exemple #2
0
 public bool LoadPointSet(PointSet pointset, double frameScaling = 1.2)
 {
     try
     {
         this.PointSet     = pointset;
         this.FrameScaling = frameScaling;
         //重绘
         MinBoundRect pointMBR = pointset.MBR;
         CenterPoint = new PointF((float)(pointMBR.MaxX + pointMBR.MinX) / 2,
                                  (float)(pointMBR.MaxY + pointMBR.MinY) / 2);
         double pointSetWidth  = pointMBR.MaxX - pointMBR.MinX;
         double pointSetHeight = pointMBR.MaxY - pointMBR.MinY;
         this.ZoomScale = Math.Min(this.Height / (pointSetHeight),
                                   this.Width / (pointSetWidth)) / frameScaling;
         MBR_Origin = new MinBoundRect(CenterPoint.X - pointSetWidth * frameScaling / 2,
                                       CenterPoint.Y - pointSetHeight * frameScaling / 2,
                                       CenterPoint.X + pointSetWidth * frameScaling / 2,
                                       CenterPoint.Y + pointSetHeight * frameScaling / 2);
         OffsetX       = MBR_Origin.MinX;
         OffsetY       = MBR_Origin.MinY;
         Zoom          = ZoomScale;
         UserOperation = UserOperationType.DisplayThePointSet;
         return(true);
     }
     catch { return(false); }
 }