コード例 #1
0
ファイル: HalfEdgeGraph.cs プロジェクト: vanish87/UnityTools
        protected void CheckFace(IHalfEdge edge)
        {
            var e      = edge.Next;
            var ecount = 0;

            while (e != edge)
            {
                if (e.Face != NoneHalfEdgeObject.None)
                {
                    edge.Face = e.Face;
                    return;
                }
                e = e.Next;
                ecount++;

                if (ecount > 100000)
                {
                    LogTool.Log("Error loop for edge " + edge, LogLevel.Error);
                    return;
                }
            }
            if (ecount >= 3)
            {
                var newFace = (this.Factory as IHalfEdgeFactory).CreateFace();
                newFace.HalfEdge = edge;
                edge.Face        = newFace;
                var ret = this.faces.Add(newFace);
                LogTool.AssertIsTrue(ret);

                e = newFace.HalfEdge.Next;
                var str = " ";
                while (e != edge)
                {
                    str += " " + e.ToString();
                    e    = e.Next;
                }
                LogTool.Log("Add face " + str);
            }
        }
コード例 #2
0
ファイル: ITopology.cs プロジェクト: veggielane/OpenCAD_old
 public void Connect(IHalfEdge next, IFace face)
 {
     Next = next;
     Face = face;
 }