15h4 Rotate Mirror

(meta linear-colour-space: 1)

;; a variation of 15fe-rotate-mirror with wash added as a background

(define
  coords []
  colours []
  make-colour (col/build-procedural a: {[0.062 0.117 0.209] (gen/stray-3d from: [0.062 0.117 0.209] by: [0.1 0.1 0.1])}
                                    b: {[0.764 0.639 0.638] (gen/stray-3d from: [0.764 0.639 0.638] by: [0.1 0.1 0.1])}
                                    c: {[0.613 0.181 0.155] (gen/stray-3d from: [0.613 0.181 0.155] by: [0.1 0.1 0.1])}
                                    d: {[0.695 0.726 0.761] (gen/stray-3d from: [0.695 0.726 0.761] by: [0.1 0.1 0.1])})

  focalpoint ({focal/build-point (gen/select from: '(focal/build-point
                                                     focal/build-hline
                                                     focal/build-vline))}
              position: [{82 (gen/stray-int from: 82 by: 50)}
                         {268 (gen/stray-int from: 268 by: 50)}]
              distance: {488 (gen/stray-int from: 488 by: 100)}))

(fence (t num: {63 (gen/int min: 50 max: 70)})
      (define
        p1 (interp/bezier t: t
                          coords: [{[26.352 71.412] (gen/stray-2d from: [26.352 71.412] by: [25 25])}
                                   {[23.830 24.871] (gen/stray-2d from: [23.830 24.871] by: [25 25])}
                                   {[-133.484 -181.749] (gen/stray-2d from: [-133.484 -181.749] by: [25 25])}
                                   {[267.624 -253.808] (gen/stray-2d from: [267.624 -253.808] by: [25 25])}])
        p2 (interp/bezier t: t
                          coords: [{[-8.177 249.445] (gen/stray-2d from: [-8.177 249.445] by: [25 25])}
                                   {[102.280 -277.847] (gen/stray-2d from: [102.280 -277.847] by: [25 25])}
                                   {[-45.873 -253.028] (gen/stray-2d from: [-45.873 -253.028] by: [25 25])}
                                   {[180.791 -209.762] (gen/stray-2d from: [180.791 -209.762] by: [25 25])}])
        c1 (col/value from: make-colour t: (focal/value from: focalpoint position: p1))
        c2 (col/value from: make-colour t: (focal/value from: focalpoint position: p2)))
      (++ coords p1)
      (++ coords p2)
      (++ colours c1)
      (++ colours c2))

(wash colour: (col/rgb r: 0.184 g: 0.605 b: 0.804 alpha: 0.163))

(on-matrix-stack
 (translate vector: [(/ canvas/width 2) (/ canvas/height 2)])
 (scale scalar: {0.996 (gen/scalar min: 0.8 max: 2)})
 (rotate angle: {88.202 (gen/scalar min: 0 max: 360)})
 (repeat/rotate-mirrored fn: (address-of draw)
                         copies: {28 (gen/int min: 23 max: 30)}))

(fn (draw)
    (poly coords: coords colours: colours))

(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))))