R3.Geometry.Tiling.FillOutIncidences C# (CSharp) Метод

FillOutIncidences() приватный Метод

Fill out all the incidence information. If performance became an issue, we could do some of this at tile generation time.
private FillOutIncidences ( ) : void
Результат void
        private void FillOutIncidences()
        {
            Dictionary<Vector3D, List<Tile>> Edges = new Dictionary<Vector3D, List<Tile>>();
            Dictionary<Vector3D, List<Tile>> Vertices = new Dictionary<Vector3D, List<Tile>>();

            foreach( Tile t in m_tiles )
            {
                foreach( Vector3D edge in t.Boundary.EdgeMidpoints )
                {
                    List<Tile> list;
                    if( !Edges.TryGetValue( edge, out list ) )
                    {
                        list = new List<Tile>();
                        Edges[edge] = list;
                    }

                    list.Add( t );
                }

                foreach( Vector3D vertex in t.Boundary.Vertices )
                {
                    List<Tile> list;
                    if( !Vertices.TryGetValue( vertex, out list ) )
                    {
                        list = new List<Tile>();
                        Vertices[vertex] = list;
                    }

                    list.Add( t );
                }
            }

            foreach( List<Tile> list in Edges.Values )
                foreach( Tile t in list )
                    t.EdgeIncidences.AddRange( list );

            foreach( List<Tile> list in Vertices.Values )
                foreach( Tile t in list )
                    t.VertexIndicences.AddRange( list );

            foreach( Tile t in m_tiles )
            {
                // Remove duplicates and ourselves from lists.
                t.EdgeIncidences = t.EdgeIncidences.Distinct().Except( new Tile[] { t } ).ToList();
                t.VertexIndicences = t.VertexIndicences.Distinct().Except( new Tile[] { t } ).ToList();

                // Also, make sure we only track vertex incidences that do not have edge incidences too.
                t.VertexIndicences = t.VertexIndicences.Except( t.EdgeIncidences ).ToList();
            }
        }