Exemplo n.º 1
0
            public void Subdivide(out MengerCube[] cubes)
            {
                cubes = new MengerCube[20]; // 8 + 4 + 8
                double NewLength = this.SideLength / 3.0;
                double six       = this.SideLength * 2.0 / 3.0;

                // we got 3x3x3 cubes. All center cubes who touch the XYZ-Axis are removed.

                // front
                cubes[0] = new MengerCube(new Vector3d(Center.X - six, Center.Y + six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Top }, this.VisibilityToInherit);
                cubes[1] = new MengerCube(new Vector3d(Center.X + 0.0, Center.Y + six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Bottom, eSides.Back, eSides.Top }, this.VisibilityToInherit);
                cubes[2] = new MengerCube(new Vector3d(Center.X + six, Center.Y + six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Top }, this.VisibilityToInherit);
                cubes[3] = new MengerCube(new Vector3d(Center.X - six, Center.Y + 0.0, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit);
                cubes[4] = new MengerCube(new Vector3d(Center.X + six, Center.Y + 0.0, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit);
                cubes[5] = new MengerCube(new Vector3d(Center.X - six, Center.Y - six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Bottom }, this.VisibilityToInherit);
                cubes[6] = new MengerCube(new Vector3d(Center.X + 0.0, Center.Y - six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Top, eSides.Back, eSides.Bottom }, this.VisibilityToInherit);
                cubes[7] = new MengerCube(new Vector3d(Center.X + six, Center.Y - six, Center.Z + six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Bottom }, this.VisibilityToInherit);
                // center
                cubes[8]  = new MengerCube(new Vector3d(Center.X - six, Center.Y + six, Center.Z + 0.0), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit);
                cubes[9]  = new MengerCube(new Vector3d(Center.X + six, Center.Y + six, Center.Z + 0.0), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit);
                cubes[10] = new MengerCube(new Vector3d(Center.X - six, Center.Y - six, Center.Z + 0.0), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit);
                cubes[11] = new MengerCube(new Vector3d(Center.X + six, Center.Y - six, Center.Z + 0.0), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit);
                // back
                cubes[12] = new MengerCube(new Vector3d(Center.X - six, Center.Y + six, Center.Z - six), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Left }, this.VisibilityToInherit);
                cubes[13] = new MengerCube(new Vector3d(Center.X + 0.0, Center.Y + six, Center.Z - six), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit);
                cubes[14] = new MengerCube(new Vector3d(Center.X + six, Center.Y + six, Center.Z - six), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Right }, this.VisibilityToInherit);
                cubes[15] = new MengerCube(new Vector3d(Center.X - six, Center.Y + 0.0, Center.Z - six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit);
                cubes[16] = new MengerCube(new Vector3d(Center.X + six, Center.Y + 0.0, Center.Z - six), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit);
                cubes[17] = new MengerCube(new Vector3d(Center.X - six, Center.Y - six, Center.Z - six), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Left }, this.VisibilityToInherit);
                cubes[18] = new MengerCube(new Vector3d(Center.X + 0.0, Center.Y - six, Center.Z - six), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit);
                cubes[19] = new MengerCube(new Vector3d(Center.X + six, Center.Y - six, Center.Z - six), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Right }, this.VisibilityToInherit);
            }
Exemplo n.º 2
0
            public void Subdivide( out MengerCube[] cubes )
            {
                cubes = new MengerCube[20]; // 8 + 4 + 8

                double NewLength = this.SideLength / 3.0;
                double six = this.SideLength * 2.0 / 3.0;
                // we got 3x3x3 cubes. All center cubes who touch the XYZ-Axis are removed.

                // front
                cubes[0] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Top }, this.VisibilityToInherit );
                cubes[1] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Bottom, eSides.Back, eSides.Top }, this.VisibilityToInherit );
                cubes[2] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Top }, this.VisibilityToInherit );

                cubes[3] = new MengerCube( new Vector3d( Center.X - six, Center.Y + 0.0, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit );
                cubes[4] = new MengerCube( new Vector3d( Center.X + six, Center.Y + 0.0, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left }, this.VisibilityToInherit );

                cubes[5] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Left, eSides.Bottom } , this.VisibilityToInherit );
                cubes[6] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Top, eSides.Back, eSides.Bottom }, this.VisibilityToInherit );
                cubes[7] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z + six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Bottom }, this.VisibilityToInherit );

                // center
                cubes[8] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit );

                cubes[9] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit );

                cubes[10] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit );

                cubes[11] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z + 0.0 ), NewLength, new eSides[] { eSides.Top, eSides.Right, eSides.Bottom, eSides.Left }, this.VisibilityToInherit );

                // back
                cubes[12] = new MengerCube( new Vector3d( Center.X - six, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Left }, this.VisibilityToInherit );
                cubes[13] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit );
                cubes[14] = new MengerCube( new Vector3d( Center.X + six, Center.Y + six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Right }, this.VisibilityToInherit );

                cubes[15] = new MengerCube( new Vector3d( Center.X - six, Center.Y + 0.0, Center.Z - six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left } , this.VisibilityToInherit );
                cubes[16] = new MengerCube( new Vector3d( Center.X + six, Center.Y + 0.0, Center.Z - six ), NewLength, new eSides[] { eSides.Front, eSides.Right, eSides.Back, eSides.Left } , this.VisibilityToInherit );

                cubes[17] = new MengerCube( new Vector3d( Center.X - six, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Left } , this.VisibilityToInherit );
                cubes[18] = new MengerCube( new Vector3d( Center.X + 0.0, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Top, eSides.Back, eSides.Bottom, eSides.Front }, this.VisibilityToInherit );
                cubes[19] = new MengerCube( new Vector3d( Center.X + six, Center.Y - six, Center.Z - six ), NewLength, new eSides[] { eSides.Back, eSides.Bottom, eSides.Right }, this.VisibilityToInherit );

            }