Ejemplo n.º 1
0
module.exports = function MarcinLines(area, startx, starty, width, height, style)
{

  var margins = 0
  var niceBlue = '#27D1E7'
  var paleYellow = 'rgb(255, 255, 240)'

  var colorHSL = chroma.hex(niceBlue).hsl()
  var h = Math.random() * 255
  niceBlue = chroma.hsl(h, 0.68, colorHSL[2]).hex()

  area.fill(niceBlue).rect(margins, margins, area.canvas.width - 2 * margins, area.canvas.height - 2 * margins)

  var step = area.canvas.width/30 + area.canvas.width/15 * Math.random()
  for(var i=0; i<2000; i+=step) {
    var a = { x : 0, y : area.canvas.width/30 + i }
    var b = { x : area.canvas.width/30 + i, y : 0 }

    area.save()
    area.stroke('#FFFFFF').line(a.x, a.y, b.x, b.y).stroke(false)
    var k = Math.random()
    area.fill('#FFFFFF')
      .translate(a.x + (b.x - a.x) * k + 1, a.y + (b.y - a.y) * k + 1)
      .rotate(-45)
      .rect(0, 0, area.canvas.width/30 + Math.random() * 400, area.canvas.width/100)
    area.restore()
  }
  style.mainColor = chroma.hsl(h, 0.5, 0.25).hex()
  style.fillColor = niceBlue
}
Ejemplo n.º 2
0
 hues.forEach(h => {
   const c = chroma.hsl(h, sat, lte)
   const key = keyword(c)
   colors.push({
     key,
     value: createShades('' + c.hex())
   })
 })
Ejemplo n.º 3
0
module.exports = function Hexagons (area, width, height, style) {
  var numberOfSides = 6
  var outerSize = 25 + Math.round(Math.random() * 25)
  var innerSize = outerSize / 2
  var rows = Math.round(height / outerSize)
  var cols = Math.round(width / outerSize)

  var hue = Math.round(128 + (-128 + Math.random() * 256))
  // var color =
  // console.log('hue: ' + hue)
  area.fillStyle = 'hsl(' + hue + ', 60%, 60%)'
  area.fillRect(0, 0, width, height)
  area.fill()
  style.mainColor = chroma.hsl(hue, 0.5, 0.25).hex()
  style.fillColor = 'hsl(' + hue + ', 60%, 60%)'
  var colorMatrix = coloursArray(numberOfSides)

  for (var y = 0; y < rows; y++) {
    for (var x = 0; x < cols; x++) {
      drawHexagons(area, numberOfSides, x, y, false, true, outerSize, innerSize, rows, cols, colorMatrix, hue, style)
    }
  }
}
module.exports = function FractalTreeDecentred (area, startx, starty, width, height, pageCount, style) {
  var minPageCount = 10
  var maxPageCount = 500

  var minBranch = 12
  var maxBranch = 18

  var hue = 10 + Math.random() * 100
  var margins = 0

  var niceBlue = '#27D1E7'
  var paleYellow = 'rgb(255, 255, 240)'
  var colorHSL = chroma.hex(niceBlue).hsl()
  var color = chroma.hsl(hue, 0.8, 0.2).hex()
  var lightColor = chroma.hsl(hue, 0.5, colorHSL[2] * 1.2).hex()

  area.fill(lightColor).rect(margins, margins, area.canvas.width - 2 * margins, area.canvas.height - 2 * margins)

  area.fill(false).stroke('rgba(255, 255, 255, 0.15)', 3)

  var buds = []
  area.save()

  // mapping page number to BranchMaxLevel
  if (pageCount < minPageCount) { pageCount = minPageCount }
  if (pageCount > maxPageCount) { pageCount = maxPageCount }

  var branchMaxLevel = Math.round(utils.remap(pageCount, minPageCount, maxPageCount, minBranch, maxBranch)) // 17

  var branchSchrink = 0.95
  var branchAngle = 15 + Math.random() * 15
  var branchInitLen = area.canvas.width * (0.09 + Math.random() * 0.07)
  var branchStartX = 218

  // var branchInitLen = 200 //area.canvas.width * (pageCount/250 + Math.random() * 0.08)
  // var branchStartX = 200 //area.canvas.width * (0.3 + 0.5 * Math.random())

  var branchingChance = 0.75 + Math.random() * 0.2
  function grow () {
    if (buds.length == 0) {
      return
    }

    var bud = buds.shift()
    var nx = bud.x + bud.len * Math.cos(bud.dir / 180 * Math.PI)
    var ny = bud.y + bud.len * Math.sin(bud.dir / 180 * Math.PI)
    area.line(bud.x, bud.y, nx, ny)

    if (bud.level >= branchMaxLevel) {
      return // die
    }

    var chance = Math.random()
    if (chance < 0.25) { // go forward the same way
      bud.length *= branchSchrink
      buds.push({
        x: nx,
        y: ny,
        dir: bud.dir,
        len: bud.len * branchSchrink,
        level: bud.level + 1
      })
    } else if (chance < branchingChance || bud.level <= 2) { // split
      buds.push({
        x: nx,
        y: ny,
        dir: bud.dir - branchAngle,
        len: bud.len * branchSchrink,
        level: bud.level + 1
      })
      buds.push({
        x: nx,
        y: ny,
        dir: bud.dir + branchAngle,
        len: bud.len * branchSchrink * branchSchrink,
        level: bud.level + 1
      })
    } else {
      // do nothing / die
    }

    grow()
  }

  buds.push({
    x: branchStartX,
    y: area.canvas.height,
    dir: -90,
    len: branchInitLen,
    level: 0
  })
  grow()

  while (buds.length > 0) {
    grow()
  }

  area.fill(false).stroke('#333333', 1)

  // branchAngle = 15 + Math.random() * 15
  // branchInitLen = area.canvas.width * (0.09 + Math.random() * 0.07)
  branchStartX += 10

  buds.push({
    x: branchStartX,
    y: area.canvas.height,
    dir: -90,
    len: branchInitLen,
    level: 0
  })
  grow()

  area.restore()
  area.stroke(false)
  var stack = []

  style.mainColor = chroma.hsl(hue, 0.8, 0.2).hex()// console.log('parent colour: ' + document.getElementById('child_colour').value) //= chroma.hsl(hue, 0.4, 0.4).hex()
  style.fillColor = lightColor
}
module.exports = function MarcinTilesControl (area, startx, starty, width, height, min_tile, max_tile, style) {
  var margins = 0
  var borderScale = 1 + Math.random()
  var hue = Math.random() * 360
  var numX = 2 + Math.floor(Math.random() * 10)
  var radius = (0.2 + 0.5 * Math.random())
  var radius2 = (0.1 + 0.4 * Math.random())
  var shape = Math.floor(Math.random() * 2)

  var niceBlue = '#27D1E7'
  var paleYellow = 'rgb(255, 255, 255)'
  var colorHSL = chroma.hex(niceBlue).hsl()
  var color = chroma.hsl(hue, 0.8, colorHSL[2]).hex()
  var lightColor = chroma.hsl(hue, 0.8, colorHSL[2] * 1.5).hex()

  area.fill(color).rect(startx, starty, width, height)

  // minimal 32, maximal 128 - for semi-opaque layout
  // minimal 24, maximal 64 for cornered layout

  var stepX = min_tile + Math.round(Math.random() * (max_tile - min_tile))
  var stepY = stepX // stepX
  var r = stepX * radius
  var r2 = stepX * radius2

  r2 *= 0.25 // square
  // if (shape == 1) r2 *= 0.25 //ellipse

  area.fill(lightColor).stroke(false)

  for (var x = 0; x <= area.canvas.width + stepX / 2; x += stepX) {
    for (var y = 0; y <= area.canvas.height + stepY / 2; y += stepY) {
      area.save()
      area.translate(x, y)
      area.rotate(-45)
      area.scale(borderScale, borderScale)
      area.rect(-r, -r2, r * 2, r2 * 2)
      // if (shape == 1) area.ellipse(-r, -r2, r*2, r2*2)
      area.rotate(90)
      area.rect(-r, -r2, r * 2, r2 * 2)
      // if (shape == 1) area.ellipse(-r, -r2, r*2, r2*2)
      area.restore()
    }

    style.mainColor = chroma.hsl(hue, 0.5, 0.25).hex()
    style.fillColor = color
  }

  area.fill(color).stroke(false)

  for (var x = 0; x <= area.canvas.width + stepX / 2; x += stepX) {
    for (var y = 0; y <= area.canvas.height + stepY / 2; y += stepY) {
      area.save()
      area.translate(x, y)
      area.rotate(-45)
      // area.rect(-r, -r2, r*2, r2*2)
      area.ellipse(-r, -r2, r * 2, r2 * 2)
      area.rotate(90)
      // area.rect(-r, -r2, r*2, r2*2)
      area.ellipse(-r, -r2, r * 2, r2 * 2)
      area.restore()
    }
  }
}
Ejemplo n.º 6
0
const desat = n => hex => {
  const [ h, s, l ] = chroma(hex).hsl()
  return chroma.hsl(h, n, l).hex()
}