private static void TestDistortedPolygon(int corners, int windings, double slant, double centerX, double centerY, double shapeSize, double distortionWinding)
        {
            string testObject = string.Format(
                "DistortedOutlineShape: Polygon({0}) @ ({1:0.##}, {2:0.##}), Spiral({3:0.##})",
                corners, centerX, centerY, distortionWinding);

            MazeTestForm.MazeConfiguratorDelegate mazeConfigurator = DistortedPolygonConfiguratorDelegate(corners, windings, slant, centerX, centerY, shapeSize, distortionWinding);

            MazeTestForm form = new MazeTestForm(mazeConfigurator);

            form.Text = testObject;
            DialogResult result = form.ShowDialog();

            Assert.AreEqual(DialogResult.OK, result, testObject);
        }
        public static MazeTestForm.MazeConfiguratorDelegate DistortedPolygonConfiguratorDelegate(int corners, int windings, double slant, double centerX, double centerY, double shapeSize, double distortionWinding)
        {
            MazeTestForm.MazeConfiguratorDelegate mazeConfigurator = delegate(Maze maze)
            {
                int          xSize = maze.XSize, ySize = maze.YSize;
                OutlineShape baseShape = SWA_Ariadne_Outlines_PolygonOutlineShapeAccessor.CreatePrivate(corners, windings, slant, xSize, ySize, centerX, centerY, shapeSize);

                SWA_Ariadne_Outlines_SmoothOutlineShapeAccessor baseShapeAccessor = new SWA_Ariadne_Outlines_SmoothOutlineShapeAccessor(baseShape);

                double xCenter, yCenter, size;
                SWA_Ariadne_Outlines_OutlineShapeAccessor.ConvertParameters(xSize, ySize, centerX, centerY, shapeSize, out xCenter, out yCenter, out size);
                SWA_Ariadne_Outlines_DistortedOutlineShape_DistortionAccessor distortion = SWA_Ariadne_Outlines_DistortedOutlineShapeAccessor.SpiralDistortion(xCenter, yCenter, size, distortionWinding);

                OutlineShape targetShape = SWA_Ariadne_Outlines_DistortedOutlineShapeAccessor.CreatePrivate(xSize, ySize, baseShapeAccessor, distortion);

                maze.OutlineShape = targetShape;
            };
            return(mazeConfigurator);
        }