Meet me in the middle
made with code
#digitalart · #generativeart · #creativecoding · #abstractart · #art
Meet me in the middle
made with code
#digitalart · #generativeart · #creativecoding · #abstractart · #art
```
library(tidyverse)
z = function(n) {
bb = function(i) {
x = y = 0
for (k in 0:(n - 1)) {
x = x + ((floor(i/2^(2 * k))) %% 2) * 2^k
y = y + ((floor(i/2^(2 * k + 1))) %% 2) * 2^k
}
c(x, y)
}
as.data.frame(t(sapply(0:(4^n - 1), bb)))
}
ggplot(z(6)) +
geom_path(aes(x=V1, y=V2, col=sin(V1/4)+cos(V2/4)), show.legend=F) +
scale_colour_gradient(low='orange', high='blue') +
theme_void()
```
https://en.wikipedia.org/wiki/Z-order_curve
#rstats #generativeart #tilingtuesday #rtistry #fractal
dailycoding - 20250414 / graphic
#p5js #javascript #Processing #generativeart #creativecoding #dailycoding
code : https://openprocessing.org/sketch/2613311
#GenerativeArt interlude
More fun with integer sequences
Triangular Truchet tiling with integer sequences driving things
Flip sequence determines whether hypoteneuse runs down from left or up; swap sequence determines whether the pattern lays out from left or right.
Colour sequences determine colour advancement horizontally and vertically.
Loops
Mapping -diff(y) to linewidth = "light on the upstroke, heavy on the downstroke" = calligraphy
```
library(tidyverse)
library(pracma)
tibble(s = seq(pi, -pi, len = 5000),
x = fresnelS(s), y = fresnelC(s),
wd = c(0, -diff(y))) |>
ggplot() +
geom_path(aes(x=x,y=y, lwd=wd), show.legend=FALSE) +
scale_linewidth_continuous(range=c(.1,2.5)) +
theme_void()
```
#GenerativeArt interlude
More fun with OEIS integer sequences.
Today we'll make some pseudospirals: a sequence of arcs with 90 degree turns in between, where the radii are driven off a sequence. Arcs may have a gain function applied. Negative radii flip direction.
A200437: Number of -n..n arrays x(0..9) of 10 elements with zero sum and no two or three adjacent elements summing to zero
Sequence negation (every 17th), no gain
```
library(tidyverse)
library(interp)
x = c(runif(500), 0,0,1,1)
y = c(runif(500), 0,1,0,1)
triangles(tri.mesh(x = x,y = y)) |>
as_tibble() |>
mutate(i=1:n()) |>
rowwise() |>
mutate(tri = list(
tibble(x=x[c(node1,node2,node3,node1)],
y=y[c(node1,node2,node3,node1)]))) |>
unnest('tri') |>
ggplot() +
geom_polygon(aes(x=x,y=y,group=i,fill=i), show.legend=FALSE) +
scale_fill_viridis_c(option='F') +
theme_void()
```
#GenerativeArt interlude
Loops
1. Download sequence data from OEIS.org
2. Pick a random one
3. Take seq mod k to determine a turning angle from -90 to 90
4. Walk the sequence
Here we have k=5
A111569: a(n) = a(n-1)+a(n-3)+a(n-4) for n>3, a(0)=-1, a(1)=1, a(2)= 2 a(3)=1
5 angles
#GenerativeArt for the evening, for your consideration.
Title: Shattered Peace
Date: 2025-04-07
Series: #WindsweptInfinity
Yes, I did a similar drawing recently. But I'm playing with a new ink in today's #inkyDays drawing.
I've added a bunch of photos and more words than usual to this month's post for my supporters on Patreon and Ko-fi:
https://www.patreon.com/posts/125704345 https://ko-fi.com/Post/InkyDays-April-2025-L3L51CTWHJ
```
library(tidyverse)
crossing(x=0:10, y=x) |>
mutate(dx = rnorm(n(), 0, (y/20)^1.5),
dy = rnorm(n(), 0, (y/20)^1.5)) |>
ggplot() +
geom_tile(aes(x=x+dx, y=y+dy, fill=y), colour='black',
lwd=2, width=1, height=1, alpha=0.8, show.legend=FALSE) +
scale_fill_gradient(high='#9f025e', low='#f9c929') +
scale_y_reverse() + theme_void()
```
#rstats #tidyverse #generativeart
𝙎𝙚𝙣𝙩𝙞𝙚𝙣𝙘𝙚 𝙎𝙚𝙩𝙨 𝙐𝙨 𝘼𝙥𝙖𝙧𝙩 #10
Acrylic on paper, 12.5 x 19 in.
2025
When does an abstract arrangement of lines begin to resemble a memory? When does a collection of brain cells begin to form an opinion about the world? When does a series of neural networks and machine learning algorithms become self-aware? I asked myself these questions a lot while working on this series.
𝙎𝙚𝙣𝙩𝙞𝙚𝙣𝙘𝙚 𝙎𝙚𝙩𝙨 𝙐𝙨 𝘼𝙥𝙖𝙧𝙩 is a long-form series of paintings created with a robotic pen plotter. The robot follows instructions produced by a generative algorithm that creates a unique output each time it runs.
Multiple sine wave oscillation functions, combined with procedurally generated noise, alter the size and orientation of hundreds of paint strokes, using one of seven color palettes.