Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 23:09 20 Apr 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : CMM2: Alien Art post on Hackaday got me thinking

Author Message
Womble

Senior Member

Joined: 09/07/2020
Location: United Kingdom
Posts: 267
Posted: 05:00pm 13 Apr 2021
Copy link to clipboard 
Print this post

Read this over breakfast this morning on Hackaday: Alien Art Drawn With Surprisingly Simple Math followed the Twitter Link and ended up coding the examples on my CMM2:

' AART.BAS based on article on Hackaday and Twitter post by Martin Kleppe@aemkei
' https://hackaday.com/2021/04/13/alien-art-drawn-with-surprisingly-simple-math/
' https://twitter.com/aemkei/status/1378106731386040322
' https://twitter.com/redsteamengine/status/1378868421723623425
' https://bbcmic.ro/# post by baffinsquid / bbcmicrobot
'
' CMM2 port by Womble, 13 April 2021, v1.0
'

'Recommended Program Practice
OPTION EXPLICIT          ' Variables must be typed
OPTION DEFAULT NONE      ' Variables must be declared

MODE 1,8                 ' 800x600 default screen mode
CLS

DIM FLOAT X
DIM FLOAT Y

'---------------------------------------

PRINT "Alien Art"
FOR Y=0 TO 150
  FOR X=0 TO 300
     ' Pattern Variations
     ' IF (X XOR Y) MOD 3 = 0 THEN
     ' IF (X XOR Y) MOD 5 = 0 THEN
     IF (X XOR Y) MOD 9 = 0 THEN     'original pattern from twitter
     ' IF (X XOR Y) MOD 17 = 0 THEN
     ' IF (X XOR Y) MOD 33 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Sierpinski triangles"
FOR Y=0 TO 150
  FOR X=0 TO 300
     ' Pattern Variations
     IF (X OR Y) MOD 7 = 0 THEN
     ' IF (X OR Y) MOD 17 = 0 THEN
     ' IF (X OR Y) MOD 29 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Circular Patterns"
FOR Y=0 TO 150
  FOR X=0 TO 300
     ' Pattern Variations
     ' Enclose logical operations in ()
     ' IF ((X * Y) AND 24) = 0 THEN
     ' IF ((X * Y) AND 47) = 0 THEN
     IF ((X * Y) AND 64) = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Steps"
FOR Y=0 TO 150
  FOR X=0 TO 300
     ' Pattern Variations
     IF (X XOR Y) < 77 = 0 THEN
     ' IF (X XOR Y) < 120 = 0 THEN
     ' IF (X XOR Y) < 214 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Beams"
FOR Y=1 TO 150
  FOR X=1 TO 300
     ' Pattern Variations
     IF (X XOR 2) MOD Y = 0 THEN
     ' IF (X XOR 31) MOD Y = 0 THEN
     ' IF (X XOR 64) MOD Y = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Vanishing Point"
FOR Y=0 TO 150
  FOR X=0 TO 300
     IF (((X-128) * 64) MOD (Y-151)) = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Chequer"
FOR Y=1 TO 150
  FOR X=1 TO 300
     ' Pattern Variations
     ' IF ((X XOR Y) AND 23) = 0 THEN
     IF ((X XOR Y) AND 32) = 0 THEN
     ' IF ((X XOR Y) AND 72) = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Noise"
FOR Y=1 TO 150
  FOR X=1 TO 300
     IF ((X * Y) ^ 4) MOD 7 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Rotate"
FOR Y=1 TO 150
  FOR X=1 TO 300
     IF (X MOD Y) MOD 4 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Red Steam Engines Favourite"
FOR Y=1 TO 150
  FOR X=1 TO 300
     IF (((X * Y) AND 243) AND ((X XOR Y) AND 243)) = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

PRINT "Red Steam Engines No.2"
FOR Y=1 TO 150
  FOR X=1 TO 300
     IF (((X * Y) AND 255) AND ((X \ Y) AND 255)) = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

' (abs(x+y)^abs(x-y)+1)**37 % 7) * 255

PRINT "Foldsters Example from Python"
FOR Y=1 TO 150
  FOR X=1 TO 300
     IF (ABS(X + Y) XOR ABS(X - Y) +1) ^ 37 MOD 7) * 255 = 0 THEN
        PIXEL X*2,Y*4
     END IF
  NEXT X
NEXT Y

PRINT "Pause until ESC is pressed"
DO : LOOP UNTIL INKEY$=CHR$(27)
CLS

'---------------------------------------

' End Program
END

'---------------------------------------

AART.zip

I kept me amused today  
 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024