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 KingdomPosts: 267 |
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 |