Example #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());
        }
Example #2
0
    private void AddEdge(Vector3Int p0, Vector3Int p1, Vector3Int p2, Voxel v1, Voxel v2, EdgeSet edges)
    {
        Edge edge = edges.GetEdge(p1, p2);

        if (edge != null)
        {
            edge.blocks.Add(p0);
        }
        else
        {
            edge = new Edge();

            edge.blocks = new List <Vector3Int>();
            edge.blocks.Add(p0);
            edge.edgePos1 = p1;
            edge.edgePos2 = p2;
            edge.voxel1   = v1;
            edge.voxel2   = v2;

            edges.AddEdge(edge);
        }
    }