static void AddPeriodicCorners(PeriodicMap map, VoronoiBoundary boundary)
        {
            IDictionary <Corner, int> periodicCornerCorrelation = ExtractPeriodicCornerMap(
                boundary.EdgeTags.Length,
                map.PeriodicBoundaryCorrelation);

            map.PeriodicCornerCorrelation = periodicCornerCorrelation;
            AddPeriodicCornerTransformations(periodicCornerCorrelation, map.PeriodicBoundaryTransformations);
            AddPeriodicCornerBoundaryCorrelation(periodicCornerCorrelation, map.PeriodicBoundaryCorrelation);
        }
        public static PeriodicMap GeneratePeriodicMap(MeshingAlgorithm.State settings, VoronoiBoundary boundary)
        {
            PeriodicMap map = null;

            IDictionary <int, int> periodicBoundaryMap = ExtractPeriodicBoundaryMap(boundary.EdgeTags);

            if (periodicBoundaryMap.Count > 0)
            {
                IDictionary <int, Transformation> periodicBoundaryTransformationMap = CreatePeriodicTransformationsFrom(
                    settings.Boundary,
                    periodicBoundaryMap);
                map = new PeriodicMap
                {
                    PeriodicBoundaryCorrelation     = periodicBoundaryMap,
                    PeriodicBoundaryTransformations = periodicBoundaryTransformationMap,
                };
                AddPeriodicCorners(map, boundary);
            }
            return(map);
        }