private static IterationValue[,] CalculateIterationDepths(Size imageSize, ComplexNumber topLeft, ComplexNumber bottomRight, int maxIterationDepth, double threshold) { IterationValue[,] iterations = new IterationValue[imageSize.Width, imageSize.Height]; double realRange = bottomRight.RealPart - topLeft.RealPart; double imaginaryRange = topLeft.ImaginaryPart - bottomRight.ImaginaryPart; var mandelbrotComputer = new MandelbrotComputer(maxIterationDepth, threshold); double realResolution = realRange / imageSize.Width; double imaginaryResolution = imaginaryRange / imageSize.Height; Action<int> computeIteration = x => { double xResolution = x * realResolution; for (int y = 0; y < imageSize.Height; y++) { double realPart = topLeft.RealPart + xResolution; double imaginaryPart = topLeft.ImaginaryPart - y * imaginaryResolution; var z = new ComplexNumber(realPart, imaginaryPart); iterations[x, y] = mandelbrotComputer.ComputeIterationDepthFor(z); } }; Parallel.For(0, imageSize.Width, computeIteration); return iterations; }
private static IterationValue[,] CalculateIterationDepths(Size imageSize, ComplexNumber topLeft, ComplexNumber bottomRight, int maxIterationDepth, double threshold) { IterationValue[,] iterations = new IterationValue[imageSize.Width, imageSize.Height]; double realRange = bottomRight.RealPart - topLeft.RealPart; double imaginaryRange = topLeft.ImaginaryPart - bottomRight.ImaginaryPart; var mandelbrotComputer = new MandelbrotComputer(maxIterationDepth, threshold); double realResolution = realRange / imageSize.Width; double imaginaryResolution = imaginaryRange / imageSize.Height; Action <int> computeIteration = x => { double xResolution = x * realResolution; for (int y = 0; y < imageSize.Height; y++) { double realPart = topLeft.RealPart + xResolution; double imaginaryPart = topLeft.ImaginaryPart - y * imaginaryResolution; var z = new ComplexNumber(realPart, imaginaryPart); iterations[x, y] = mandelbrotComputer.ComputeIterationDepthFor(z); } }; Parallel.For(0, imageSize.Width, computeIteration); return(iterations); }