public static List <Point2D> Construct(Point2D startPoint, int height, int width, BasicPath path, Jump jumpFunc) { List <Point2D> result = new List <Point2D>(); if (height * width == path.NumberOfSteps) { return(DoBasicMove(startPoint, path)); } int newHeight = height / path.Height; int newWidth = width / path.Width; Point2D tempPoint = startPoint; for (int i = 0; i < path.NumberOfSteps; i++) { result.AddRange(Construct(tempPoint, newHeight, newWidth, path.DoTransform(i), jumpFunc)); tempPoint = jumpFunc(result[result.Count - 1], i, height, width, path); } return(result); }
public BasicPath GetSubRegionBasicPath(int subregionIndex) { return(basicPath.DoTransform(subregionIndex)); }