Exemple #1
0
        /*
         * Known problems:
         * Orthoscheme code may not be working out of the box for:
         *      - spherical honeycombs
         *      - honeycomb with hyperideal cells
         */

        static void Main(string[] args)
        {
            try
            {
                List <string> filenames = new List <string>();
                if (args.Length > 0 &&
                    File.Exists(args[0]))
                {
                    filenames.Add(args[0]);
                }
                else
                {
                    filenames = Directory.EnumerateFiles(".", "*.xml", SearchOption.TopDirectoryOnly).ToList();
                }

                // Go through any settings files.
                foreach (string filename in filenames)
                {
                    Settings settings = LoadSettings(filename);
                    if (settings == null)
                    {
                        continue;
                    }

                    // Boundary images.
                    if (settings.UhsBoundary != null)
                    {
                        Log("\nGenerating UHS boundary image for the following honeycomb:\n" + settings.HoneycombString);
                        Log("\nSettings...\n" + settings.UhsBoundary.DisplayString);
                        HoneycombPaper.OneImage(settings);
                    }

                    // POV-Ray definition files.
                    if (settings.PovRay != null)
                    {
                        Log("\nGenerating POV-Ray definition file for the following honeycomb:\n" + settings.HoneycombString);
                        Log("\nSettings...\n" + settings.PovRay.DisplayString);

                        if (settings.Angles.Length == 3)
                        {
                            HoneycombGen.OneHoneycombOrthoscheme(settings);
                        }
                        else if (settings.Angles.Length == 6)
                        {
                            HoneycombGen.OneHoneycombGoursat(settings);
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                Log(ex.Message + "\n" + ex.StackTrace);
            }
        }
Exemple #2
0
        public static void Test1()
        {
            Settings settings = new Settings();

            settings.Angles = new int[] { 5, 3, 3 };
            settings.PovRay = new PovRaySettings()
            {
                Active = new int[] { 0 }, NumEdges = 10000
            };

            H3.Cell.Edge[]     edges = HoneycombGen.OneHoneycombOrthoscheme(settings);
            HashSet <Vector3D> centersOfDualHonycomb = new HashSet <Vector3D>();

            foreach (var e in edges)
            {
                centersOfDualHonycomb.Add(e.Start);
                centersOfDualHonycomb.Add(e.End);
            }

            List <Circle3D> outerCircles = new List <Circle3D>();

            foreach (Vector3D p in centersOfDualHonycomb)
            {
                if (p.IsOrigin)
                {
                    continue;
                }
                Circle3D c = GetCircleForBallPoint(p);
                if (c == null)
                {
                    continue;
                }
                outerCircles.Add(c);
            }

            ProjectAndSave(outerCircles);
        }