Alexander Deplov

Color linear interpolation

Color linear interpolation

Code

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Paper.js</title>
<link rel="stylesheet" href="./../PaperJSEngine/style.css" />
<script type="text/javascript" src="./../PaperJSEngine/paper-full.js"></script>
<script type="text/paperscript" canvas="canvas">

var amount = 100 
var group = new Group()

var path = new Path()
path.strokeColor = 'blue'
path.strokeWidth = 0
path.selected = true
path.add(new Point(view.center.x - 120, view.center.y))
path.add(new Point(view.center.x - 0, view.center.y + 100))
path.add(new Point(view.center.x + 60, view.center.y + 30))
path.add(new Point(view.center.x - 100, view.center.y + 60))
path.smooth({ type: 'geometric', factor: 0.2 })


function lerpRGB(color1, color2, t){
    
    var c1R = color1.components[0]
    var c1G = color1.components[1]
    var c1B = color1.components[2]

    var c2R = color2.components[0]
    var c2G = color2.components[1]
    var c2B = color2.components[2]

    var colorR = c1R + ((c2R - c1R) * t)
    var colorG = c1G + ((c2G - c1G) * t)
    var colorB = c1B + ((c2B - c1B) * t)

    var color = new Color(colorR, colorG, colorB)
    return color
}


var color1 = new Color(49, 132, 84)/255
var color2 = new Color(224, 211, 0)/255
var group = new Group()

for (var i = 1; i < amount; i++){
    var step = path.length / i
    var circle5 = new Path.Circle({
        radius: 35,
        fillColor: 'blue',
        center: path.getLocationAt(i * (path.length/amount)).point,
        // selected: true,
        parent: group,
    })
    circle5.sendToBack()
    var fillColor = lerpRGB(color1, color2, i/amount)
    circle5.fillColor = fillColor

}



</script>
</head>
<body>
<canvas id="canvas" resize>

<svg id="svg" width="598" height="363" viewBox="0 0 598 363" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M220 362C405 358.5 486.5 342 597 180C429 268.4 188.667 97.8333 89.5 1.5C74.6667 13.6667 36.1 70.4 0.5 200" stroke="black"/>
</svg>

</canvas>
</body>
</html>