Schotter on a Tek 4010

Georg Nees’ Schotter, reproduced on a simulated Tek4010 display

Georg Nees (1926–2016) was a pioneer of generative art. His piece “Schotter” (gravel) from 1968 displayed a rectangular array of squares with the position of each square becoming more random as the piece progressed.

The BASIC code for this video is based on Processing code by Jim Plaxco, http://www.artsnova.com/

The Tektronix 4010 display simulator is by Rene Richarz, https://github.com/rricharz/Tek4010

The BASIC interpreter with Tektronix graphics support is Matrix Brandy BASIC maintained by Michael McConnell, https://github.com/stardot/MatrixBrandy

(Higher-quality video at Georg Nees’ “Schotter”, reproduced on a simulated Tek4010 display at YouTube.)

  100 REM Georg Nees "Schotter" reproduction - scruss, 2019-11
  110 REM based on Processing 3 code by Jim Plaxco, www.artsnova.com
  120 :
  130 scrn_wd% = 2048: REM fixed screen size, unlike Processing
  140 scrn_ht% = 1560
  150 columns% = 12
  160 rows% = 22
  170 sqsize% = FN_min(scrn_wd% / (columns% + 4), scrn_ht% / (rows% + 4))
  180 padding% = 2 * sqsize%
  190 randstep = 0.22
  200 randsum = 0.0
  210 randval = 0.0
  220 dampen = 0.45
  230 :
  240 SYS "Brandy_TekEnabled", 1
  250 A$=GET$: REM PLOT 4, 0, 0: PLOT 5, 0, 0
  260 FOR y% = 1 TO rows%
  270   randsum = randsum + (y% * randstep)
  280   FOR x% = 1 TO columns%
  290     randval = RND(1) * (2 * randsum) - randsum
  300     PROC_square((scrn_wd% / 2) - (sqsize% * columns% / 2) + (x% * sqsize%) - (sqsize% / 2) + INT(randval * dampen), scrn_ht% - (padding% + (y% * sqsize%) - (sqsize% / 2) + INT(randval * dampen)), sqsize%, randval)
  310   NEXT x%
  320 NEXT y%
  330 PLOT 4, 0, 0: PLOT 5, 0, 0
  340 END
  350 :
  360 DEF PROC_square(cx%, cy%, side, angle)
  370 LOCAL r, i%, pm%
  380 pm% = 4: REM plot mode - move = 4, draw = 5
  390 r = (side / 2) / (SQR(2) / 2)
  400 FOR i% = 0 TO 4
  410   PLOT pm%, cx% + r * COS(RAD(angle + i% * 90 + 45)), cy% + r * SIN(RAD(angle + i% * 90 + 45))
  420   pm% = 5
  430 NEXT i%
  440 ENDPROC
  450 :
  460 DEF FN_min(a%, b%) IF a% < b% THEN =a% ELSE =b%

Leave a Reply

Your email address will not be published. Required fields are marked *