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)); }
public void Rotate(Point3D.RotationType type, double angle) { this.Edges.ToList().ForEach(p => p.Rotate(type, angle)); }