//逐点插入法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()); }
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); } }