Ejemplo n.º 1
0
        public Cube3D Rotate(Point3D.RotationType type, double angle, Point3D center)
        {
            //Deep Clone
            List <Face3D> faces = new List <Face3D>();

            foreach (Face3D f in Faces)
            {
                List <Point3D> edges = new List <Point3D>();
                foreach (Point3D p in f.Edges)
                {
                    edges.Add(new Point3D(p.X, p.Y, p.Z));
                }
                Face3D f2 = new Face3D(edges, f.Color, f.Position, f.MasterPosition, f.Selection);
                f2.Edges.ToList().ForEach(e => { e.X -= center.X; e.Y -= center.Y; e.Z -= center.Z; });
                f2.Rotate(type, angle);
                f2.Edges.ToList().ForEach(e => { e.X += center.X; e.Y += center.Y; e.Z += center.Z; });
                faces.Add(f2);
            }
            return(new Cube3D(faces, Position));
        }
Ejemplo n.º 2
0
 public void Rotate(Point3D.RotationType type, double angle)
 {
     this.Edges.ToList().ForEach(p => p.Rotate(type, angle));
 }