public async Task <ActionResult <byte[]> > GetFractalImage( int height, int width, double realStart, double realEnd, double imagStart, double imagEnd, int maxIterations, FractalColorType colorType, string fractalName) { try { ParametersDto parameters = new ParametersDto { Height = height, Width = width, xMinimum = realStart, xMaximum = realEnd, yMinimum = imagStart, yMaximum = imagEnd, MaxIterations = maxIterations, ColorType = colorType, FractalName = fractalName, MaxValueExtent = 2d }; return(await fractalService.GetFractalByteArray(parameters)); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest(ex)); } }
/// <summary> /// Gets the fractal pixel color for a given iteration /// </summary> /// <param name="iteration">Current fractal Iteration</param> /// <param name="maxIterations">Maximum Iterations</param> /// <param name="colorType">FractalColorType</param> /// <returns>Color</returns> public static Color GetColor(int iteration, int maxIterations, FractalColorType colorType) { double hue; int color; switch (colorType) { case FractalColorType.BlueScheme: hue = 255 - iteration * 255 / maxIterations; return(GetColorFromHSV(hue, 1d, (iteration < maxIterations ? 1d : 0d))); case FractalColorType.RedScheme: hue = 255 * iteration / maxIterations; return(GetColorFromHSV(hue, 1d, (iteration < maxIterations ? 1d : 0d))); case FractalColorType.BlackAndWhite: default: hue = 255 - iteration * 255 / maxIterations; color = (int)hue; return(Color.FromArgb(color, color, color)); } }