public void GenerateInternal( TilingConfig config, Polytope.Projection projection = Polytope.Projection.FaceCentered )
{
this.TilingConfig = config;
// Create a base tile.
Tile tile = CreateBaseTile( config );
// Handle edge/vertex centered projections.
if( projection == Polytope.Projection.VertexCentered )
{
Mobius mobius = config.VertexCenteredMobius();
tile.Transform( mobius );
}
else if( projection == Polytope.Projection.EdgeCentered )
{
Mobius mobius = config.EdgeMobius();
tile.Transform( mobius );
}
TransformAndAdd( tile );
List<Tile> tiles = new List<Tile>();
tiles.Add( tile );
Dictionary<Vector3D,bool> completed = new Dictionary<Vector3D,bool>();
completed[tile.Boundary.Center] = true;
ReflectRecursive( tiles, completed );
FillOutIsometries( tile, m_tiles, config.Geometry );
FillOutIncidences();
}