app/Statistics/Service/ColorService.php
public function interpolateRgb(string $startColor, string $endColor, int $steps): array
    {
        if (!$steps) {
            return [];
        }

        $s       = $this->hexToRgb($startColor);
        $e       = $this->hexToRgb($endColor);
        $colors  = [];
        $factorR = ($e[0] - $s[0]) / $steps;
        $factorG = ($e[1] - $s[1]) / $steps;
        $factorB = ($e[2] - $s[2]) / $steps;

        for ($x = 1; $x < $steps; ++$x) {
            $colors[] = $this->rgbToHex(
                (int) round($s[0] + ($factorR * $x)),
                (int) round($s[1] + ($factorG * $x)),
                (int) round($s[2] + ($factorB * $x))
            );
        }

        $colors[] = $this->rgbToHex($e[0], $e[1], $e[2]);

        return $colors;
    }
public function interpolateRgb(string $startColor, string $endColor, int $steps): array
    {
        if (!$steps) {
            return [];
        }

        $s       = $this->hexToRgb($startColor);
        $e       = $this->hexToRgb($endColor);
        $colors  = [];
        $factorR = ($e[0] - $s[0]) / $steps;
        $factorG = ($e[1] - $s[1]) / $steps;
        $factorB = ($e[2] - $s[2]) / $steps;

        for ($x = 1; $x < $steps; ++$x) {
            $colors[] = $this->rgbToHex(
                (int) round($s[0] + ($factorR * $x)),
                (int) round($s[1] + ($factorG * $x)),
                (int) round($s[2] + ($factorB * $x))
            );
        }

        $colors[] = $this->rgbToHex($e[0], $e[1], $e[2]);

        return $colors;
    }
public function interpolateRgb ( string $ startColor , string $ endColor , int $ steps ) : array { if ( ! $ steps ) { return [ ] ; } $ s = $ this -> hexToRgb ( $ startColor ) ; $ e = $ this -> hexToRgb ( $ endColor ) ; $ colors = [ ] ; $ factorR = ( $ e [ 0 ] - $ s [ 0 ] ) / $ steps ; $ factorG = ( $ e [ 1 ] - $ s [ 1 ] ) / $ steps ; $ factorB = ( $ e [ 2 ] - $ s [ 2 ] ) / $ steps ; for ( $ x = 1 ; $ x < $ steps ; ++ $ x ) { $ colors [ ] = $ this -> rgbToHex ( ( int ) round ( $ s [ 0 ] + ( $ factorR * $ x ) ) , ( int ) round ( $ s [ 1 ] + ( $ factorG * $ x ) ) , ( int ) round ( $ s [ 2 ] + ( $ factorB * $ x ) ) ) ; } $ colors [ ] = $ this -> rgbToHex ( $ e [ 0 ] , $ e [ 1 ] , $ e [ 2 ] ) ; return $ colors ; }
Interpolates the number of color steps between a given start and end color.

@param string $startColor The start color
@param string $endColor   The end color
@param int    $steps      The number of steps to interpolate

@return array
Interpolates the number of color steps between a given start and end color .