Ground
by mvasilkov
HTML
<canvas id=paint></canvas>
JavaScript
/* HERE BE COLORS: */
var baseColor = '#feefdc'
var lineColor = '#303030' // '#fa2906'
var patternColors = [baseColor, baseColor, '#ffd7be', '#6fa5d4', '#5579ad', '#2c5f8c']
/* THE REST OF THE CODE IS SHIT, PLEASE DISREGARD IT */
function ParkMiller() {
this.a = 1
}
ParkMiller.prototype.seed = function seed(a) {
if (a > 1) (this.a = a % 2147483647)
else (this.a = 1)
return this
}
ParkMiller.prototype.iuniform = function iuniform() {
return (this.a = this.a * 48271 % 2147483647)
}
ParkMiller.prototype.uniform = function uniform() {
return this.iuniform() / 2147483647
}
var random = new ParkMiller
random.seed(944)
function _makeGround(canvas, size, anticlockwise) {
var middle = 0.5 * size
//canvas.beginPath()
canvas.arc(middle, middle, middle - 3, 0, 2 * Math.PI, anticlockwise)
return middle
}
function paintGround(canvas, size) {
var middle = 0.5 * size
/*
canvas.translate(middle, middle)
canvas.rotate(-0.1 * Math.PI)
canvas.translate(-middle, -middle)
*/
canvas.beginPath()
var middle = _makeGround(canvas, size)
var r = middle - 3
canvas.fillStyle = baseColor
canvas.fill()
var r2 = 3 * r
canvas.globalCompositeOperation = 'source-atop'
for (var i = 0; i < 66; ++i) {
var color = patternColors[0|patternColors.length * random.uniform()]
var offset = size * random.uniform()
var width = 12 + 12 * random.uniform()
canvas.beginPath()
canvas.arc(middle, offset - r2, r2, 0, 2 * Math.PI)
canvas.lineWidth = width
canvas.strokeStyle = color
canvas.stroke()
}
var lightingOffset = 30
canvas.save()
canvas.beginPath()
_makeGround(canvas, size)
canvas.clip()
canvas.globalCompositeOperation = 'overlay'
canvas.translate(lightingOffset, lightingOffset)
canvas.beginPath()
canvas.moveTo(-lightingOffset,...