public List <IFSFormula> ReplicateList(List <IFSFormula> originalList) { List <IFSFormula> newList = new List <IFSFormula>(); foreach (IFSFormula f in originalList) { IFSFormula formulaCopy = new IFSFormula(f.a, f.b, f.c, f.d, f.e, f.f, f.p); newList.Add(formulaCopy); } return(newList); }
//In this case, "lastPoint" only tracks which pixels are being painted on the bitmap, but the actual point generated by the last iteration is saved in "lastIfsPoint". private Point DoNextIFSIteration() { int chosenIndex = GetChosenFormula((float)rng.NextDouble() * ifsWeight); IFSFormula f = IfsFormulas[chosenIndex]; F_Point p = lastIfsPoint; double realX = (f.a * p.X) + (f.b * p.Y) + f.e; double realY = (f.c * p.X) + (f.d * p.Y) + f.f; lastIfsPoint = new F_Point(realX, realY); int x = (int)Math.Round(realX * IfsMagnificationX) + CenterPoint.X; int y = -(int)Math.Round(realY * IfsMagnificationY) + CenterPoint.Y; return(new Point(x, y)); }