1643 Rose

(render)

(define
  coords1 [{[153.326 66.565] (gen/stray-2d from: [153.326 66.565] by: [5 5])}
           {[-143.219 370.216] (gen/stray-2d from: [-143.219 370.216] by: [5 5])}
           {[-254.094 -214.417] (gen/stray-2d from: [-254.094 -214.417] by: [5 5])}
           {[368.038 -58.687] (gen/stray-2d from: [368.038 -58.687] by: [5 5])}]

  coords2 [{[29.449 -88.566] (gen/stray-2d from: [29.449 -88.566] by: [5 5])}
           {[-181.104 317.846] (gen/stray-2d from: [-181.104 317.846] by: [5 5])}
           {[-457.779 46.556] (gen/stray-2d from: [-457.779 46.556] by: [5 5])}
           {[461.392 -414.827] (gen/stray-2d from: [461.392 -414.827] by: [5 5])}]

  coords3 [{[-445.078 -431.034] (gen/stray-2d from: [-445.078 -431.034] by: [5 5])}
           {[-287.184 -394.192] (gen/stray-2d from: [-287.184 -394.192] by: [5 5])}
           {[225.426 -71.645] (gen/stray-2d from: [225.426 -71.645] by: [5 5])}
           {[311.633 -352.704] (gen/stray-2d from: [311.633 -352.704] by: [5 5])}]

  col-fn-1 (col/build-procedural a: {[0.224 0.120 0.710] (gen/stray-3d from: [0.224 0.120 0.710] by: [0.1 0.1 0.1])}
                                 b: {[0.589 0.819 0.879] (gen/stray-3d from: [0.589 0.819 0.879] by: [0.1 0.1 0.1])}
                                 c: {[0.622 0.476 0.884] (gen/stray-3d from: [0.622 0.476 0.884] by: [0.1 0.1 0.1])}
                                 d: {[0.822 0.732 0.425] (gen/stray-3d from: [0.822 0.732 0.425] by: [0.1 0.1 0.1])}
                                 alpha: 0.08)

  col-fn-2 (col/build-procedural a: {[0.992 0.035 0.678] (gen/stray-3d from: [0.992 0.035 0.678] by: [0.1 0.1 0.1])}
                                 b: {[0.136 0.560 0.367] (gen/stray-3d from: [0.136 0.560 0.367] by: [0.1 0.1 0.1])}
                                 c: {[0.701 0.609 0.479] (gen/stray-3d from: [0.701 0.609 0.479] by: [0.1 0.1 0.1])}
                                 d: {[0.515 0.340 0.555] (gen/stray-3d from: [0.515 0.340 0.555] by: [0.1 0.1 0.1])}
                                 alpha: 0.08)


  col-fn-3 (col/build-procedural a: {[0.212 0.128 0.661] (gen/stray-3d from: [0.212 0.128 0.661] by: [0.1 0.1 0.1])}
                                 b: {[0.714 0.956 0.862] (gen/stray-3d from: [0.714 0.956 0.862] by: [0.1 0.1 0.1])}
                                 c: {[0.789 0.114 0.110] (gen/stray-3d from: [0.789 0.114 0.110] by: [0.1 0.1 0.1])}
                                 d: {[0.203 0.858 0.592] (gen/stray-3d from: [0.203 0.858 0.592] by: [0.1 0.1 0.1])}
                                 alpha: 0.08)
  step-1 (/ 1 200))

(fn (draw)
    (fence (t num: 200)
    (poly coords: [(interp/bezier t: t coords: coords1)
                   (interp/bezier t: t coords: coords2)
                   (interp/bezier t: t coords: coords3)]
          colours: [(col/value from: col-fn-1 t: t)
                    (col/value from: col-fn-2 t: t)
                    (col/value from: col-fn-3 t: t)])))

(fn (render)
  (wash colour: {(col/rgb r: 0.548 g: 0.920 b: 0.658 alpha: 0.601) (gen/col)})
  (on-matrix-stack
    (translate vector: [(/ canvas/width 1) (/ canvas/height 2)])
    (scale scalar: 2)
    (repeat/rotate-mirrored fn: (address-of draw)
                            copies: {8 (gen/int min: 6 max: 10)})))


(fn (wash vol: 200
          line-width: 70
          line-segments: 5
          colour: (col/rgb r: 0.627 g: 0.627 b: 0.627 alpha: 0.4)
          seed: 272)
  (define
    w/3 (/ canvas/width 3)
    h/3 (/ canvas/height 3))
  (loop (d from: -20 to: 1020 inc: 20)
    (bezier tessellation: line-segments
            line-width: line-width
            coords: [[0            (wash-n x: 0            d: d seed: seed vol: vol)]
                     [w/3          (wash-n x: w/3          d: d seed: seed vol: vol)]
                     [(* w/3 2)    (wash-n x: (* w/3 2)    d: d seed: seed vol: vol)]
                     [canvas/width (wash-n x: canvas/width d: d seed: seed vol: vol)]]
            colour: colour)

    (bezier tessellation: line-segments
            line-width: line-width
            coords: [[(wash-n x: 0             d: d seed: seed vol: vol) 0]
                     [(wash-n x: h/3           d: d seed: seed vol: vol) h/3]
                     [(wash-n x: (* h/3 2)     d: d seed: seed vol: vol) (* h/3 2)]
                     [(wash-n x: canvas/height d: d seed: seed vol: vol) canvas/height]]
            colour: colour)))

(fn (wash-n x: 0 d: 0 seed: 0 vol: 1)
  (+ d (* vol (prng/perlin x: x y: d z: seed))))