15fe Rotate Mirror

(meta linear-colour-space: 1)

(define
  coords []
  colours []
  make-colour (col/build-procedural a: {[0.80 0.50 0.40] (gen/stray-3d from: [0.80 0.50 0.40] by: [0.1 0.1 0.1])}
                                    b: {[0.20 0.40 0.20] (gen/stray-3d from: [0.20 0.40 0.20] by: [0.1 0.1 0.1])}
                                    c: {[2.00 1.00 1.00] (gen/stray-3d from: [2.00 1.00 1.00] by: [0.1 0.1 0.1])}
                                    d: {[0.00 0.25 0.25] (gen/stray-3d from: [0.00 0.25 0.25] by: [0.1 0.1 0.1])})

  focalpoint ({focal/build-point (gen/select from: '(focal/build-point
                                                     focal/build-hline
                                                     focal/build-vline))}
              position: [{0 (gen/int min: -30 max: 30)}
                         {0 (gen/int min: -30 max: 30)}]
              distance: {390 (gen/int min: 340 max: 440)}))

(fence (t num: {30 (gen/int min: 25 max: 35)})
  (define
    p1 (interp/bezier t: t
                      coords: [{[0 200] (gen/stray-2d from: [0 200] by: [10 10])}
                               {[-133 100] (gen/stray-2d from: [-133 100] by: [10 10])}
                               {[266 -100] (gen/stray-2d from: [266 -100] by: [10 10])}
                               {[399 -200] (gen/stray-2d from: [399 -200] by: [10 10])}])
    p2 (interp/bezier t: t
                      coords: [{[-100 200] (gen/stray-2d from: [-100 200] by: [10 10])}
                               {[133 -300] (gen/stray-2d from: [133 -300] by: [10 10])}
                               {[66 100] (gen/stray-2d from: [66 100] by: [10 10])}
                               {[-99 200] (gen/stray-2d from: [-99 200] by: [10 10])}])
    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))

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

(fn (render)
  (on-matrix-stack
    (translate vector: [(/ canvas/width 2) (/ canvas/height 2)])
    (repeat/rotate-mirrored fn: (address-of draw)
                            copies: {5 (gen/int min: 3 max: 8)})))

(render)