Example #1
0
 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));
     }
 }
Example #2
0
        /// <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));
            }
        }