In the last post I introduced the "dual complement" idea for polyhedral graphs. I'm not sure if it has any mathematical significance, but I've made a fun discovery: the dual complement of a spanning tree is another spanning tree.

This result is rather intuitive and I don't have a rigorous proof for it yet, but here are the main supporting ideas. First, a spanning tree over v1 vertices has v1 - 1 edges. We can then show, using basic duality relations and Euler's polyhedral formula, that the dual complement has v2 - 1 edges that connect all of its v2 vertices. The complement doesn't have any cycles, since those would "capture" parts of the original graph, which we know is a single component.

The original polyhedron here is a {3,5+}_2,1 geodesic, so the dual is a Goldberg polyhedron.

No AI, no apps, just my original Python + OpenGL code.

#graphtheory #dualpolyhedron #dualcomplement #spanningtree #geodesicpolyhedron #goldbergpolyhedron #3dgraphics #digitalsculpture #pythoncode #numpy #opengl #creativecodeart #algorithmicart #algorist #mathart #laskutaide #computerart #ittaide #kuavataide #iterati

Back in the day, I made a couple of demos where a Hamiltonian path is carved out on a polyhedron. Looking back, I started to wonder about the shape left around the path, and what it means in terms of graph theory. I call this shape the "dual complement" of the path.

The dual of a polyhedron is essentially the result of turning faces into vertices and vice versa. This is shown in the first clip with a snub dodecahedron and its dual, the pentagonal hexecontahedron; to keep the view cleaner, I'm only showing the edges of one at a time.

The duality transformation also affects the edges, but their number remains the same, and there's a 1:1 mapping between the original and dual edges. Each dual edge "cuts through" the original. To make the dual complement of a path, I remove the dual counterpart of each edge in the path, leaving only the stuff on the sides. It's like driving a snow plough along the path, leaving walls of snow on the sides.

For the final view, I combine original Hamiltonian paths with their dual complements.

#graphtheory #hamiltonianpath #hamiltoniancycle #dualpolyhedron #dualcomplement #snubdodecahedron #pentagonalhexecontahedron #3dgraphics #digitalsculpture #pythoncode #numpy #opengl #creativecodeart #algorithmicart #algorist #mathart #laskutaide #computerart #ittaide #kuavataide #iterati

It was twenty years ago today
Sam L Jackson fought the snakes in air
They've been going in and out of memes
Guess they're funny if you're in your teens
So may I just remind you of
The act you've known for all these years
Monty Python's "Hovercraft full of eels".

#snakesonaplane #myhovercraftisfullofeels

#digitaldoodle #meander #matopeli #creepycrawly #wiggle #slither #pythoncode #opengl #algorithmicart #algorist #creativecoding #artxcode #computerart #ittaide #kuavataide #iterati

I've been playing with a very simple approach to meandering paths. I'm not sure if I'm getting anywhere with these, but I thought I'd post some of the tests so far.

The problem with the 2D idea is that the paths will easily wander off the screen. So I thought I'd put them on a spherical surface to contain them. It turned out this isn't quite trivial, and I had to rethink what directions and turns actually mean there. It all came down to the Non-Euclidean nature of the sphere. A straight-line direction there means a great circle, but no two great circles can be parallel. So directions and positions are rather closely linked. This is in contrast to Euclidean geometry, where you can go from any point into any direction.

#meander #matopeli #creepycrawly #wiggle #slither #pythoncode #opengl #algorithmicart #algorist #creativecoding #artxcode #computerart #ittaide #kuavataide #iterati

More wriggling motions in the plasma-globe-inspired demo. I also added periodic resets to further mess things up.

#plasmaglobe #plasma #particlesimulation #pythoncode #opengl #vertexshader #algorithmicart #algorist #creativecoding #artxcode #computerart #ittaide #kuavataide #iterati

It's been quiet on the demo front as my musician side has recently taken over. This slow return to musicianship started last summer, with the new twist of using the Karelian language. I've also put some of my old and new demos to work for the music videos. Here's the latest piece by me and Noira, you'll find a couple more on the same Salixvelox channel:

https://youtu.be/XI9XJKDMd3k

#karelianlanguage #karelianproper #southkarelian #karjalankieli #karjalankielieläy #varzinkarjala #suvikarjala #opengl #pythoncode #algorithmicart #algorist #creativecoding #artxcode #computerart #ittaide #kuavataide #iterati

Heratyyni čuassu

YouTube

From a pile of shit, new life grows. Conway's Game of Life running independently in the 3 colour channels in 64x64 cells with wrap-around topology.

Not much new code here, just added image loading capability to my old pile-up demo of 2D cellular automata.

#cellularautomaton #gameoflife #conwaysgameoflife #pixelart #voxelart #blockart #3dgraphics #opengl #pythoncode #numpy #algorithmicart #algorist #creativecoding #artxcode #computerart #ittaide #kuavataide #iterati

Rule/Yule 30 cellular automaton with a "band-pass" filter every few iterations. Done in the Bash shell using bitwise math, so each row/state is a single number of 63 bits.

#cellularautomata #cellularautomaton #rule30 #bitwiseoperators #textmode #textmodeart #oldskool #retrocomputing #unixshell #shellprogramming #xterm #joulu6 #xmastree #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati

Another blow-up view of the Apollonian spheres, now dropping on a concave surface to gather all the jetsam together. This is what I had in mind when writing the first drop demo, and the model just needed a bit of refinement for the differently sized balls: properly scaled masses and elastic factors, as well as proper handling of these quantities in each pair collision.

As a recovering science teacher, it's fun to see such physics in action: a simple, linear elastic force is all it takes to keep each body in its place. Well, at least approximately; I've included a basic drag term to help things settle, but it seems it would take a while, as the tiniest balls are easily thrown around by the larger masses.

#apollonianspheres #apolloniangasket #particlesimulation #elasticcollision #hookeslaw #3dgraphics #pythoncode #numpy #opengl #algorithmicart #algorist #mathart #laskutaide #ittaide #kuavataide #iterati