Comments on: Patterns
http://www.metafilter.com/192164/Patterns/
Comments on MetaFilter post PatternsTue, 27 Jul 2021 16:41:43 -0800Tue, 27 Jul 2021 16:41:43 -0800en-ushttp://blogs.law.harvard.edu/tech/rss60Patterns
http://www.metafilter.com/192164/Patterns
<a href="https://twitter.com/aemkei/status/1378106731386040322">Bit-field patterns</a> created from applying simple formulas (small subset of work available in <a href="https://threadreaderapp.com/thread/1378106731386040322?refresh=1627428184">unrolled thread</a>)post:www.metafilter.com,2021:site.192164Tue, 27 Jul 2021 16:26:07 -0800They sucked his brains out!artmathematicssciencebitbooleanmodulusprocessingobservableobservablehqBy: saturday_morning
http://www.metafilter.com/192164/Patterns#8129367
Okay, someone please help me out because this does not seem to be "x to the power of y divided by 9", but I do not understand what it actually is, other than pretty.comment:www.metafilter.com,2021:site.192164-8129367Tue, 27 Jul 2021 16:41:43 -0800saturday_morningBy: condour75
http://www.metafilter.com/192164/Patterns#8129370
Ah Tuesdays with moirécomment:www.metafilter.com,2021:site.192164-8129370Tue, 27 Jul 2021 16:44:43 -0800condour75By: cortex
http://www.metafilter.com/192164/Patterns#8129371
Yesssss. These are so neat, and it's such an elegant little form of formula to produce such interesting results. I got excited about that same thread myself a while back <a href="https://twitter.com/joshmillard/status/1382033099752570883">and went on a whole coding and plotter-drawing spree</a> trying to explore it a little myself.
For anybody who is, other than enjoying the patterns, feeling kind of "what?" about what's going on (I was when I first saw it), this is using a combination of <a href="https://en.wikipedia.org/wiki/Bitwise_operation">bitwise operators</a> and <a href="https://en.wikipedia.org/wiki/Modular_arithmetic">modulus arithmetic</a> to decide whether each pixel in a (x,y) plane should be a black or white (that is, a 1 or a 0).
So the canonical example in Martin Klepe's first tweet there is
<blockquote>(x ^ y) % 9</blockquote>
Which translates as "for every (x,y) coordinate on a plane, do a bitwise XOR of the base 2 value of x compared to y, and see if the result modulo 9 is a 0 or not". (Big note: ^ is more commonly used as an exponent value in online math shorthand, but this is *not* x to the y power, it's x XOR y. Threw me originally too.)
Which if you're not into it is still useless jargon probably, but the actual thing happening isn't too complicated. x and y are both integers, you've got a big 2D grid where x gets bigger on one axis and y gets bigger on the other, starting from 0. You take those two integers, write them out in binary as strings of 1 and 0, take those two strings and perform an Exclusive Or operation where your new binary number has a 1 wherever the original strings disagree (EITHER the top digit OR the bottom digit is a 1), and has a 0 wherever they agree.
Take THAT number, divide it by 9. Does it divide evenly, with remainder zero? Then it's a white pixel. Otherwise, it's a black pixel. Repeat for as many pixels as you care to see. It's straightforward but also very tedious, so great to make a computer do even though you could work it out on graph paper if you wanted.comment:www.metafilter.com,2021:site.192164-8129371Tue, 27 Jul 2021 16:44:56 -0800cortexBy: cortex
http://www.metafilter.com/192164/Patterns#8129374
You can see throughout that thread variations on the formula; changing out various logical operators in those tiny one liners makes a big difference in the overall kind of pattern you get, where replacing the XOR with OR or AND, or the % modulo sign with various bitwise operators, fundamentally changes the kind of pictures drawn, whereas just changing the numeric coefficient so that you've got e.g. (x ^ y) % 5 gives you a pattern that has the same general feel but is different in the details.
(In fact there's a nice little math puzzle there, to put in concrete terms why if you keep making that coefficient larger, the drawings get more and more sparse. Also, why are all the interesting patterns for (x ^ y) % n apparently using odd n? And what happens when n is 2, or 1? And what happens if instead of (x ^ y) % n you do ((x ^ y) + 1) % n? And so on. All of the things that happen with these end up making sense if you work through what's going on, but the sheer concision of the basic formula still feels magical, like some little Game Genie For Math discovery.)comment:www.metafilter.com,2021:site.192164-8129374Tue, 27 Jul 2021 16:53:50 -0800cortexBy: suetanvil
http://www.metafilter.com/192164/Patterns#8129381
BRB, gonna write a <strike>Twitter</strike> Mastodon bot that generates these at random.
(Semi-serious here; it may be a fun little <strike>afternoon</strike> multi-week hacking project.)comment:www.metafilter.com,2021:site.192164-8129381Tue, 27 Jul 2021 17:04:08 -0800suetanvilBy: wanderingmind
http://www.metafilter.com/192164/Patterns#8129385
Animating them is fun, too. Copy this into a file, save it as .html, and open it in a browser. You can change the formula inside the "test" function to give different effects based on x, y, and time (t).
https://pastebin.com/5uj34j3scomment:www.metafilter.com,2021:site.192164-8129385Tue, 27 Jul 2021 17:06:00 -0800wanderingmindBy: Nelson
http://www.metafilter.com/192164/Patterns#8129390
See also <a href="https://www.metafilter.com/111959/Todays-formulaic-music">ByteBeat</a>, which is this simple kind of math formula but for music generation.
Has someone made a good web UI for making these 2x pixel arrays? It's simple Javascript but maybe someone's hosted it nicely.comment:www.metafilter.com,2021:site.192164-8129390Tue, 27 Jul 2021 17:31:15 -0800NelsonBy: mark k
http://www.metafilter.com/192164/Patterns#8129395
These are awesome. I started trying random functions. Then quickly found one that kept me captivated for 20 minutes.
(x + x*y) % [some number Z]
Gives a rather mundane grid, if Z is prime. But when Z is not prime it adds more patterns into the squares. The complexity of the pattern seems related to the number of factors. Compare 53 (prime, gives squares) to 51 (= 3 x 17, gives squares with smaller squares inside) to 60 (= 2 x 2 x 3 x 5, gives apparent circles inside the squares well.)
I *think* it's overlaying patterns in a square shape determined by the various prime factors.comment:www.metafilter.com,2021:site.192164-8129395Tue, 27 Jul 2021 17:40:30 -0800mark kBy: biogeo
http://www.metafilter.com/192164/Patterns#8129397
Neat!
Here's a fun challenge problem: can you find two such formulas such that you can get from one to the other by treating it as a game board for Conway's Game of Life for some finite number of steps?
In formal terms, find expressions for f(x,y) and g(x,y) : Z^2 -> {0,1}, such that if C is an operator representing the application of the rules of Conway's Game of Life for one step, g = (C^k) f.
Bonus points if f = g.comment:www.metafilter.com,2021:site.192164-8129397Tue, 27 Jul 2021 17:41:06 -0800biogeoBy: biogeo
http://www.metafilter.com/192164/Patterns#8129399
Also, bonus points if k=1. More bonus points if g = (C^k) f and f = (C^m) g for some integers k and m, and maximum bonus points if k=m=1.comment:www.metafilter.com,2021:site.192164-8129399Tue, 27 Jul 2021 17:48:00 -0800biogeoBy: lalochezia
http://www.metafilter.com/192164/Patterns#8129401
<em>
Ah Tuesdays with moiré</em>
comment:www.metafilter.com,2021:site.192164-8129401Tue, 27 Jul 2021 17:55:59 -0800lalocheziaBy: kleinsteradikaleminderheit
http://www.metafilter.com/192164/Patterns#8129406
biogeo, that's crazy talk. Clearly, there should be bonus points for making k as large as possible. And more bonus points for finding a subclass of formulas that can be transformed into each other through C.comment:www.metafilter.com,2021:site.192164-8129406Tue, 27 Jul 2021 18:01:30 -0800kleinsteradikaleminderheitBy: pwnguin
http://www.metafilter.com/192164/Patterns#8129421
Well, somehow my mind immediately thought of those <a href="https://www.youtube.com/watch?v=zjQik7uwLIQ">Earthbound backgrounds</a>, and now I'm envisioning a combination of the two -- procedurally animated procedurally generated trippy graphics.comment:www.metafilter.com,2021:site.192164-8129421Tue, 27 Jul 2021 18:41:39 -0800pwnguinBy: zengargoyle
http://www.metafilter.com/192164/Patterns#8129427
Integers themselves are pretty weird.
<a href="https://www.youtube.com/watch?v=rGlpyFHfMgI">The Moessner Miracle. Why wasn't this discovered for over 2000 years?</a>
Stuff like this is why I was not terribly impressed by the graphics of the C64 disk-drive demo. You can make a whole bunch of pretty things with a simple(-ish) function.comment:www.metafilter.com,2021:site.192164-8129427Tue, 27 Jul 2021 18:50:17 -0800zengargoyleBy: Nelson
http://www.metafilter.com/192164/Patterns#8129433
Man, wait until you can see what you can do with just a stick of lead and some paper.comment:www.metafilter.com,2021:site.192164-8129433Tue, 27 Jul 2021 19:02:16 -0800NelsonBy: loquacious
http://www.metafilter.com/192164/Patterns#8129444
<em>Man, wait until you can see what you can do with just a stick of lead and some paper.</em>
I really don't think it's wise for anyone to smoke that.comment:www.metafilter.com,2021:site.192164-8129444Tue, 27 Jul 2021 19:32:30 -0800loquaciousBy: loquacious
http://www.metafilter.com/192164/Patterns#8129445
<a href="https://pbs.twimg.com/media/EyENBFtWYAIc_j6?format=png&name=medium">*HRNNNNNGGG*</a>comment:www.metafilter.com,2021:site.192164-8129445Tue, 27 Jul 2021 19:34:14 -0800loquaciousBy: polytope subirb enby-of-piano-dice
http://www.metafilter.com/192164/Patterns#8129451
Those challenges leave a lot of bonus points on the table for some very simple cases:
oh no, mefi does not like nonmatching angle brackets at all
f(x,y)=g(x,y)=0, k=m=1
f(x,y)=g(x,y)=x%2
f(x,y)=g(x,y)=y%2
f(x,y)=g(x,y)=(0<x<3)&&(0<y<3)
f(x,y)=g(x,y)=(x%4<2)&&(y%4<2)
f(x,y)=g(x,y)=(x%5<3)&&(y%5==1), k=m=2
f(x,y)=g(x,y)=(x%5==1)&&(y%5<3)
f(x,y)=(x%5<3)&&(y%5==1), g(x,y)=(x%5==1)&&(y%5<3), k=m=1
f(x,y)=x%4<2, g(x,y)=x%4>1
f(x,y)=y%4<2, g(x,y)=y%4>1comment:www.metafilter.com,2021:site.192164-8129451Tue, 27 Jul 2021 20:21:18 -0800polytope subirb enby-of-piano-diceBy: haemanu
http://www.metafilter.com/192164/Patterns#8129455
Reminded me of this <a href="https://boingboing.net/2018/01/04/a-train-station-with-walls-des.html">train station with walls designed using cellular automata "Rule 30"</a>. I think it was on metafilter before? A whole set of those patterns are described in <a href="https://writings.stephenwolfram.com/2017/05/a-new-kind-of-science-a-15-year-view/">A New Kind of Science</a>
What if you used one of those 2d patterns to prime a new one, and then stacked them to generate 3d shapes? Ummm...comment:www.metafilter.com,2021:site.192164-8129455Tue, 27 Jul 2021 20:31:25 -0800haemanuBy: polytope subirb enby-of-piano-dice
http://www.metafilter.com/192164/Patterns#8129456
also, being half-asleep on mefi produces some fun microdreams, like reading a reply on this thread saying that supermarket shopping trolleys have ocr and will print these patterns if you feed them formulae in the right way, then rushing out with a scrap of paper to give it a trycomment:www.metafilter.com,2021:site.192164-8129456Tue, 27 Jul 2021 20:32:06 -0800polytope subirb enby-of-piano-diceBy: genpfault
http://www.metafilter.com/192164/Patterns#8129463
Reminds me of <a href="https://lodev.org/cgtutor/xortexture.html">the XOR texture</a>.comment:www.metafilter.com,2021:site.192164-8129463Tue, 27 Jul 2021 20:41:48 -0800genpfaultBy: biogeo
http://www.metafilter.com/192164/Patterns#8129464
Okay, f(x,y)=g(x,y)=0 definitely doesn't count as the trivial case, but otherwise <b>pse-o-p-d</b>, claim your numerous bonus points! More bonus points on offer for a solution that doesn't use comparison operators as indicator functions.comment:www.metafilter.com,2021:site.192164-8129464Tue, 27 Jul 2021 20:43:44 -0800biogeoBy: haemanu
http://www.metafilter.com/192164/Patterns#8129467
Speaking of microdreams...
<a href="https://www.shadertoy.com/view/WljcRG">Another xor "automaton"</a>comment:www.metafilter.com,2021:site.192164-8129467Tue, 27 Jul 2021 20:56:01 -0800haemanuBy: torii hugger
http://www.metafilter.com/192164/Patterns#8129479
<em>The XOR texture</em> mentioned by genpfault uses
x ^ y
to set pixel values on a black-white spectrum. The formula is very similar to the posted link's
(x ^ y) % 9comment:www.metafilter.com,2021:site.192164-8129479Tue, 27 Jul 2021 21:24:15 -0800torii huggerBy: polytope subirb enby-of-piano-dice
http://www.metafilter.com/192164/Patterns#8129480
Couldn't find a previously, but more on youtube about the train station haemanu mentioned: <a href="https://www.youtube.com/watch?v=aeyhnrZvQBE">https://www.youtube.com/watch?v=aeyhnrZvQBE</a>comment:www.metafilter.com,2021:site.192164-8129480Tue, 27 Jul 2021 21:32:59 -0800polytope subirb enby-of-piano-diceBy: away for regrooving
http://www.metafilter.com/192164/Patterns#8129485
Oh man, I had a whole arrangement of these, animated on a frame variable, in VGA Mode X -- I wonder if I can dig the code out of an old disk image inside another old disk image or such. Trying to remember the formula structure from how it looked... it was not based on the classic (x*x + y*y)%k though I had started with that. There was clearly some harmonic-series aliasing I'm recalling in the animation. I bet it was subsampling high-frequency sawtooths by large increments mod color range.comment:www.metafilter.com,2021:site.192164-8129485Tue, 27 Jul 2021 22:00:51 -0800away for regroovingBy: They sucked his brains out!
http://www.metafilter.com/192164/Patterns#8129486
<em>more on youtube about the train station haemanu mentioned</em>
These are beautiful. More of these, please!comment:www.metafilter.com,2021:site.192164-8129486Tue, 27 Jul 2021 22:02:54 -0800They sucked his brains out!By: unearthed
http://www.metafilter.com/192164/Patterns#8129497
These are awesomesauce <strong>They sucked his brains out!</strong>, I was going to put a q up about other natural (and non-natural) patterns. Love the noise iterations!
Am currently working on a very large Voronoi that will be formed partly with a Cat. D10, these are more grist for that mill.comment:www.metafilter.com,2021:site.192164-8129497Tue, 27 Jul 2021 23:30:03 -0800unearthedBy: wanderingmind
http://www.metafilter.com/192164/Patterns#8129500
<tt>(x % y) ^ (256 % (x|y))</tt> makes a satisfyingly weird pattern of flying distorted Sierpinski triangles.comment:www.metafilter.com,2021:site.192164-8129500Wed, 28 Jul 2021 00:12:15 -0800wanderingmindBy: Merus
http://www.metafilter.com/192164/Patterns#8129508
There is something about the way these patterns fall out of mathematics that is probably the closest I will ever feel to understanding the Divine. It feels like we're glimpsing some kind of impossible cosmic beauty through a tiny pin-holecomment:www.metafilter.com,2021:site.192164-8129508Wed, 28 Jul 2021 01:38:11 -0800MerusBy: Mister_Sleight_of_Hand
http://www.metafilter.com/192164/Patterns#8129521
Oh no. I had things to do! And now I have other things to do!
Seriously though, I love stuff like this. Thanks for posting, They sucked his brains out!
Some apparently boring patterns get a whole lot more interesting if you add colour into the mix.comment:www.metafilter.com,2021:site.192164-8129521Wed, 28 Jul 2021 03:10:58 -0800Mister_Sleight_of_HandBy: Pyry
http://www.metafilter.com/192164/Patterns#8129598
<em> that doesn't use comparison operators as indicator functions.</em>
There are lots of workarounds (e.g., <code>(x>y) => Math.max(0, Math.min(1, x-y))</code>).
Note that it's possible to encode a function that's 0 (or 1) for finitely many (Xi, Yi) points like:
<pre><code>((x ^ X0) | (y ^ Y0)) &&
((x ^ X1) | (y ^ Y1)) &&
((x ^ X2) | (y ^ Y2)) &&
...
</code></pre>
(It's possible to do it with entirely binary ops (& instead of &&), but it requires a lot of bit shifting to compress each term into a single bit).
It's also possible to do it entirely with arithmetic (ignoring the problem of overflows), consider the related polynomial:
<pre><code>((x - X0) * (x - X0) + (y - Y0) * (y - Y0)) *
((x - X1) * (x - X1) + (y - Y1) * (y - Y1)) *
((x - X2) * (x - X2) + (y - Y2) * (y - Y2)) *
...
</code></pre>
Which is the product of squared distances to each of the input (Xi,Yi) points: this function is zero only exactly at the input points and positive elsewhere.
Using constructions like this you can produce (comparison-free, branch-free) expressions for any finite Game of Life boards you want, including <a href="https://www.conwaylife.com/wiki/Still_life">static patterns ("still lifes")</a>.comment:www.metafilter.com,2021:site.192164-8129598Wed, 28 Jul 2021 07:25:31 -0800PyryBy: jedicus
http://www.metafilter.com/192164/Patterns#8129635
<a href="https://jsfiddle.net/pfzm97kx/">I made a little tool that lets you easily try out arbitrary formulas</a>.comment:www.metafilter.com,2021:site.192164-8129635Wed, 28 Jul 2021 08:34:18 -0800jedicusBy: Nelson
http://www.metafilter.com/192164/Patterns#8129639
That's great jedicus! But it has a probably unintentional effect of degrading over time.. You only ever paint pixels black, never white, so iteration of formula results in less and less white until you're at Malevich Square.comment:www.metafilter.com,2021:site.192164-8129639Wed, 28 Jul 2021 08:40:02 -0800NelsonBy: jedicus
http://www.metafilter.com/192164/Patterns#8129640
Yep, I fixed that!comment:www.metafilter.com,2021:site.192164-8129640Wed, 28 Jul 2021 08:43:07 -0800jedicusBy: Nelson
http://www.metafilter.com/192164/Patterns#8129641
jsfiddle is a great idea though! Here's <a href="https://jsfiddle.net/g43Lm8du/">wanderingmind's animated version as a live demo</a>. No nice formula UI like Jedicus made but you can just edit the test function in the source code easily enough. Don't use the <i>t</i> variable if you want static images.comment:www.metafilter.com,2021:site.192164-8129641Wed, 28 Jul 2021 08:43:24 -0800NelsonBy: dkg
http://www.metafilter.com/192164/Patterns#8129681
Dave Fergemann's html explorations of arithemetic patterns goes beyond one-bit output to show some cool colored sequences: <a href="http://fergemann.com/modquilt/index.html">modquilt</a>. (That work was done while we were talking about <a href="https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange">finite-field diffie-hellman modular arithmetic</a>, which has a whole set of really useful applications, though it's largely been replaced by elliptic curve cryptography in practice these days)
These visualizations offer exciting glimpses into abstract patterns that exist in numbers themselves but are otherwise hard to think about without a lot of training. cool stuff!comment:www.metafilter.com,2021:site.192164-8129681Wed, 28 Jul 2021 10:04:51 -0800dkgBy: reventlov
http://www.metafilter.com/192164/Patterns#8129689
I modified jeddicus' JSFiddle to <a href="https://jsfiddle.net/9xg1evnp/">output a gradient</a>, which is a bit more complex but lets you see "near misses." To get the same result as the boolean version, just tack <code>== 0</code> onto the end of your formula, e.g. <code>(x ^ y) % 9 == 0</code>
Classic XOR pattern is <code>(x ^ y) / 255</code>
<code>Math.abs((x % y) / y + (y % x) / x - 1)</code> gives a neat gradient pattern
Raising a formula to a fairly high power tends to add a bit of depth without blowing out the original pattern: <code>((8 - (x ^ y) % 9) / 8) ** 6</code> is a version of the <code>(x ^ y) % 9 == 0</code> pattern with some nice background depth.comment:www.metafilter.com,2021:site.192164-8129689Wed, 28 Jul 2021 10:30:52 -0800reventlovBy: Don.Kinsayder
http://www.metafilter.com/192164/Patterns#8129756
Sometimes it's humbling to be on Metafilter.comment:www.metafilter.com,2021:site.192164-8129756Wed, 28 Jul 2021 13:32:56 -0800Don.KinsayderBy: are-coral-made
http://www.metafilter.com/192164/Patterns#8129781
Great post. Fun and games with 64-bit arithmetic. Diversion: assume we have a computer that can do ∞-trit arithmetic.
A cool expression to graph using our ∞-trit machine is
" x:0.5 > 0 "
where
":" is the tritwise-equality operator on infinite ternary sequences
x is a real number in the unit interval [0, 1]
0.5 and 0 are the usual real numbers
">" is the familiar ordering on real numbers
this evaluates to the <a href="https://en.wikipedia.org/wiki/Cantor_set">Cantor set</a>.
Our computer represents each real number in the unit interval as an infinite sequence of ternary digits. Examples:
0 is represented as the sequence (0, 0, 0, ...),
1 is represented as (2, 2, 2, ...),
1/2 is represented as (1, 1, 1...), and
1/4 is represented as (0, 2, 0, 2, 0, 2, ...)
Justification:
Think of "x" and "y" in all these pattern expressions as finite sequences of binary digits that give the "addresses" of points on the real number line. Then we can single out any real number z on the number line and ask "what is z's address as a sequence of binary digits?".
Let P_3 denote a ternary hierarchical decomposition of the unit interval [0, 1]. For the first level of the hierarchy we split the unit interval [0, 1] into a partition of three equally sized buckets: [0, 1] = [0, 1/3] union (1/3, 2/3) union [2/3, 1]. Label each bucket, from left-to-right, as "0", "1" and "2". There's a slight asymmetry here as the middle bucket labelled "1" excludes its left and right endpoints 1/3 and 2/3. Thanks Georg. We can repeat this process recursively to keep partitioning each level j bucket into three level j+1 buckets. Each level j bucket either has the form [a, b] or (a, b)
[a, b] gets split into [a, (a+b)/3] union ((a+b)/3, 2*(a+b)/3) union [2*(a+b)/3, b]
(a, b) gets split into (a, (a+b)/3] union ((a+b)/3, 2*(a+b)/3) union [2*(a+b)/3, b)
For any real number x in the unit interval, we can define its "address" with respect to to our hierarchy P_3. This is an infinite sequence of ternary digits ("trits") that says which bucket x sits in at each level of our hierarchy. The address of x with respect to P_3 is P_3(x) := (x_1, x_2, ..., x_j, ...) where each trit x_j in {0, 1, 2} indicates which of the three buckets x sits inside at layer j of the hierarchy.
If a and b are strings of bits, "a^b" denotes bitwise "exclusive or" for binary digits. For strings of bits we can compute bitwise equality by "~(a^b)" , where "~" is bitwise not operator. We want a tritwise equality operator for our sequences of trits. Let "a:b" define the infinite sequence of trits where (a:b)_j = 1 if a_j = b_j otherwise 0
Then P_3(x):P_3(0.5) > 0 defines the Cantor set. We can abuse notation a little bit and write this as "x:0.5 > 0", where we define ":" to act on real numbers x, y in [0, 1] by x:y = P_3(x):P_3(y) .
One technicality we've glossed over is that real numbers don't necessarily have unique ternary expansions. This isn't peculiar to ternary, same problem for infinite binary or infinite decimal precision. E.g. 1 = 0.99999.... in base 10, and 1 = 0.11111.... in base 2, and 2 = 0.2222... in base 3. This means that P_3 isn't well defined. We can probably repair that by defining P_3(x) to be the minimal infinite ternary sequence that addresses x, where we order the sequences lexicographically.comment:www.metafilter.com,2021:site.192164-8129781Wed, 28 Jul 2021 14:28:40 -0800are-coral-madeBy: I'm always feeling, Blue
http://www.metafilter.com/192164/Patterns#8129899
These are beautiful and nostalgic. Because of whatever quirks of its BASIC implementation and 256x192 resolution the old 8-bit ZX Spectrum could create these wonderful moire patterns just by DRAW-ing a line from the origin to the top of the screen, then another one pixel along and so forth. Similarly CIRCLEs with ever increasing radius. These images are much more varied though.
I'm also reminded of that C=64 maze effect program which popped up as a book a while back (which must have equivalents in other BASICs):
<code>10 PRINT CHR$(205.5+RND(1)); : GOTO 10</code>comment:www.metafilter.com,2021:site.192164-8129899Wed, 28 Jul 2021 19:48:44 -0800I'm always feeling, BlueBy: I'm always feeling, Blue
http://www.metafilter.com/192164/Patterns#8129900
I mean, this is just a real reminder of how pretty maths actually is!comment:www.metafilter.com,2021:site.192164-8129900Wed, 28 Jul 2021 19:51:08 -0800I'm always feeling, BlueBy: AlSweigart
http://www.metafilter.com/192164/Patterns#8131722
I'm late to this, but I wrote a Python module to create these bit fields either as text in the terminal window or as image files.
<a href="https://inventwithpython.com/blog/2021/08/02/algorithmic-art-with-the-bitfielddraw-module/">More info here.</a>comment:www.metafilter.com,2021:site.192164-8131722Mon, 02 Aug 2021 12:11:26 -0800AlSweigart