Masthash

#Processing

@Jean_no fait du #processing, ces petits programmes artististiques qui font des choses inattendues avec des paramètres et du hasard (c’est un genre de pape de la chose, il a écrit un tas de bouquins sur cette pratique).

Cette fois, il a trituré une photo de #LouiseBrooks. C’est sur son Insta que je l’ai trouvé – ouais Jean-No, c’est un gros lâcheur des amis sur Masto, on ne l’y voit plus guère.

gostei mais da mistura de hoje...
#Processing #Python #py5 #numpy #CreativeCoding (atualização: animação comprimiu mal, vou por uma imagem estática que dá pra ter uma ideia)

import py5
import numpy as np

def setup():
global npa, R, G, B
py5.size(600, 600)
npa = np.empty((py5.width, py5.height)).T
npa.fill(100)
R = dist_to_pos(py5.width, py5.height, 300, 300)
G = dist_to_pos(py5.width, py5.height, 200, 300)
B = dist_to_pos(py5.width, py5.height, 300, 200)

def draw():
rnd_r = np.random.randint(0, 300, size=(py5.width, py5.height)).T
rnd_g = np.random.randint(0, 300, size=(py5.width, py5.height)).T
rnd_b = np.random.randint(0, 300, size=(py5.width, py5.height)).T
img = np.dstack([R < rnd_r, G < rnd_g, B < rnd_b])
py5.set_np_pixels(img * 150, 'RGB')

def dist_to_pos(width, height, cx, cy):
""" reeturns a 2D array filled with distances """
x = np.arange(width)
y = np.arange(height)
xx, yy = np.meshgrid(x, y)
return np.linalg.norm(np.array([xx - cx, yy - cy]), axis=0)

py5.run_sketch()

imagem com núvem circular de pixels coloridos em um fundo preto, gerada pelo código no toot
Sad Juno
3 days ago

高評価を3つもいただきました。ありがとうございます。
facing the underpass(feat. GUMI, VOCALOID6 AI Megpoid)
#GUMI #Megpoid #VOCALOIND #korg #m01d #music #Processing #CreativeCoding
CreativeCommons BY-NC-SA 4.0
https://www.youtube.com/watch?v=XmDRaaWupHA

Yash Gupta
4 days ago

This Processing-turned- @Raspberry_Pi sketch has a physical knob (not visible in this video), which was part of the idea behind rendering generative art on portable hardware.

Most generative sketches can be modified with a few variables. One such variable is attached to the rotary encoder that gave me this 'new' 1-bit motion graphic.

Music in Reason 12.

#design #graphicdesign #generativeart #algorithmicart #generative #processing #processing4 #p5js #1bit #digitalart #multimediaart #visualart

Il primo esperimento con #p5js non poteva che essere per il #logo del mio blog.

Avevo usato #processing alcuni anni fa per alcune visualizzazioni da inserire in alcune applicazioni... e devo dire che l'evoluzione verso #javaScript non ha fatto che bene a questo ecosistema!

È online anche su ogni pagina del mio sito... se ci cliccate sopra le palline si risparpagliano! Ci starei ore...

https://77nn.it

Sad Juno
4 days ago

新曲を公開しました。お聴きいただければ幸いです。
facing the underpass(feat. GUMI, VOCALOID6 AI Megpoid)
#GUMI #Megpoid #VOCALOIND #vocanew #vocaloPost #korg #m01d #music #Processing #CreativeCoding
CreativeCommons BY-NC-SA 4.0
https://www.youtube.com/watch?v=XmDRaaWupHA

Sad Juno
4 days ago

New movie: facing the underpass(feat. GUMI, VOCALOID6 AI Megpoid)
#GUMI #Megpoid #VOCALOIND #vocanew #vocaloPost #korg #m01d #music #Processing #CreativeCoding
CreativeCommons BY-NC-SA 4.0
https://www.youtube.com/watch?v=XmDRaaWupHA

Today I updated https://abav.lugaralgum.com/sketch-a-day that was stuck a few days behind... today's sketch...

#Processing #Python #py5 #numpy

# Animation made with the code below, random white dots on a gray background concentrated near the center.

import py5
import numpy as np

def setup():
    global npa, dst
    py5.size(600, 600)
    npa = np.empty((py5.width, py5.height)).T
    npa.fill(100)
    dst = dist_to_pos(py5.width, py5.height, 300, 300)
    
def draw():
    rnd = np.random.randint(0, 300, size=(py5.width, py5.height)).T
    img = dst < rnd
    py5.set_np_pixels(npa + img * 150, 'L')

def dist_to_pos(width, height, cx, cy):
    """ reeturns a 2D array filled with distances """
    x = np.arange(width)
    y = np.arange(height)
    xx, yy = np.meshgrid(x, y)
    return np.linalg.norm(np.array([xx - cx, yy - cy]), axis=0)

py5.run_sketch()
Samuel
5 days ago

Growth patterns in #Processing, best viewed in fullscreen.

#GenerativeArt

Black lines flowing upwards like ink in a random manner, splitting and getting smaller with age. The particle age also influences its opacity, and it adds a greenish tint to the smaller branches. The result looks like crooked trees, or satellite images from river deltas.

#NoiteDeProcessing page in the #Processing Community Catalog :D

Image of the Noite de Processing page in the Processing Community Catalog, a mosaic of many of the images used to promote the meetings since 2016.

"The digital copy of the Processing Community Catalog is OUT, check out this nearly 1000 page art+tech book that celebrates the Processing and art+tech community!💻📚💜 https://archive.org/details/processing-community-catalog-2021/page/n61/mode/2up #ProcessingCommunityCatalog #Processing"

R Richter
6 days ago

Finally! The Procesing Community Catalog arrived today -- almost two years after I taught the course about programming and vector math in my school.

It took me some minutes to find our contribution, but there it is: con 453 on page 768 shows some of the flying objects programmed by my students ... unexpectedly only as a greyscale image, so I have added the colour image to our Github page.

https://github.com/rric/Processing-Vector

#MathematikEdu #processing

Sad Juno
1 week ago

高評価を1ついただきました。ありがとうございます。
beat under blanket
#korg #DSN12 #techno #music #Processing #CreativeCoding
CreativeCommons BY-SA 4.0
https://www.youtube.com/watch?v=aJ9nQN8Pqto

Jörg Kantel
1 week ago

Retro Platformer in P5.play – Stage 3

Meine noch sehr tastenden Versuche mit P5.play, der Spiele- und Physik-Engine für P5.js haben mir erste Erfolgserlebnisse beschert. Mit wenigen Zeilen Code ist es mir gelungen, einen kleinen Ninja-Frosch mittels Tastendruck über den Bildschirm hüpfen zu lassen. Denn P5.play bietet dafür eine Reihe sehr leistungsstarker Befehle an, die die Programmierung stark vereinfachen. https://kantel.github.io/posts/2023053103_retro_platformer_3/ #P5js #P5play #Processing #GameDev

sketch_2022_05_30 #Processing #Python #py5 #numpy, same bitwise pattern strategy as yesterday's, learned from Naoki Tsutae.

#black and white patter that is reminiscent of a PCB, based on the code below
# https://twitter.com/ntsutae/status/1521190629769826304?s=20

import numpy as np
import py5

order = 500
power = 59
img = None

def setup():
    global x, y
    py5.size(1000, 1000)
    py5.no_smooth()
    x, y = np.meshgrid(np.arange(0, order), np.arange(0, order))

def draw():
    global img
    py5.background(0)
    pattern = func(x, y, py5.frame_count / 2)
    #img = py5.create_image_from_numpy(color_map[pattern], 'RGB')
    img = py5.create_image_from_numpy(pattern * 255, 'L', dst=img)
    py5.image(img, 0, 0, py5.width, py5.height)
    py5.window_title(f'{py5.get_frame_rate():.2f}')


@np.vectorize
def func(x, y, t):
    return int((t + ((x ^ y) ** (power / 10))) % 256)  > 32

def key_pressed():
    global power
    if py5.key_code == py5.UP:
        power += 1
    elif py5.key_code == py5.DOWN:
        power = max(power - 1, 1)
    elif py5.key == 's':
        py5.save_frame(f'out{order}-{power}.png')
    print(power)

py5.run_sketch(block=False)
generiyaki
1 week ago

Starting to mess around with strange attractors.

How deep does this rabbit hole go...?

#genartclub #processing

Black background with thousands of little white dots arranged in a semi-random mathematical pattern. To me it looks like ocean waves crashing into each other.

#CreativeCoding #Processing #Python # This pattern strategy I learned from Naoki Tsutae
# https://openprocessing.org/user/154720?view=sketches&o=48#sk

import numpy as np #numpy
import py5 #py5

order = 500
power = 59

def setup():
global color_map, x, y
py5.size(1000, 1000)
py5.no_smooth()

color_map = np.array([
[py5.red(hsb(i)), py5.green(hsb(i)), py5.blue(hsb(i))]
for i in range(256)])
x, y = np.meshgrid(np.arange(0, order), np.arange(0, order))

def draw():
py5.background(0)
pattern = func(x, y)
img = py5.create_image_from_numpy(color_map[pattern], 'RGB')
py5.image(img, 0, 0, py5.width, py5.height)

def hsb(h, sat=255, bri=255):
py5.color_mode(py5.HSB)
return py5.color(h, sat, bri)

@np.vectorize
def func(x, y):
return int((x ^ y) ** (power / 10)) % 256

def key_pressed():
global power
if py5.key_code == py5.UP:
power += 1
elif py5.key_code == py5.DOWN:
power = max(power - 1, 1)
elif py5.key == 's':
py5.save_frame(f'out{order}-{power}.png')
print(power)

py5.run_sketch(block=False)

A colorful symmetric pattern of pixels generated by the code in the toot. Reminds me of a Persian rug, but the colors are more saturated. One can see echoes of squares and diagonals.

I really like @bitartbot an I always wanted to try some of the patterns with #py5 (#Processing + #Python), also #numpy vectorization seemed cool to try...

"""
one-bit pattern that is produced by the code below (an the code is shown in the image on the right inside Thonny IDE
"""

# based on https://botsin.space/@bitartbot/110448213578682186

import numpy as np
import py5

order = 500

def setup():
    py5.size(1000, 1000)
    py5.no_smooth()
    x, y = np.meshgrid(np.arange(0, order), np.arange(0, order))

    pattern = func(x, y)
    #print(pattern)
    img = py5.create_image_from_numpy(pattern * 255, 'L')
    py5.image(img, 0, 0, py5.width, py5.height)
    py5.save('out.png')

@np.vectorize
def func(x, y):
    try:
        return (~(int((x & y) / (x ^ 8)) | ((y * 10) % (~x)))) % 3 > 0
    except ZeroDivisionError:
        return 0

py5.run_sketch(block=False)
Michael Marten
2 weeks ago

Has anyone any experience of using Jack's Lab for #processing especially E6 4x5 film? I have a LOT of Velvia 50 in the freezer, and want to get back to it - thanks for any advice. #BelieveInFilm https://jackslab.co.uk/

Samuel
2 weeks ago

My weird pseudo-3D sphere is now audio-reactive. I added a smoothed interpolation step to the FFT bands and an inertia-based rotation mechanism. (Everything is still completely 2D)

Where's the vibing cat gif when you need it?

#Processing #Animation #GenerativeArt

An audio spectrum visualization of white lines that appear to be wrapped around a sphere. Based on the frequency, the lines are offset outwards and pulsate with the beat of the Psytrance song. The sphere slowly rotates clockwise in front of a black background.

Name of the song:
Cosmic Flow - Spirited away

sketch_2022_05_26 #Processing #Python #py5 a "mask clipping" study

code and result

3 trapezoid forms with a red arc in the top lesft corner, overlapping, on a blue background.

sketch_2022_05_23 #Processing #Python #py5 #numpy

"""
O código abaixo a esquerda no Thonny IDE e a imagem que ele produz de círculos concêntricos com degradê de cinza no anel mais interno até cores com um ruído azul, mais azuis no canto superior esquerdo, mais magenta no canto superior direito, amarelo no inferior direito e verde no inferior esquerdo.
"""

import py5
import numpy as np

def setup():
    py5.size(900, 600)
    w, h = py5.width, py5.height
    R = np.linspace(0, 255, py5.width).reshape(1, -1)
    G = np.linspace(0, 255, py5.height).reshape(-1, 1)
    B = np.random.uniform(128, 255, (py5.height, py5.width))
    A = np.array([[128 + py5.dist(w /2, h / 2, x, y) % 128
                   for x in range(py5.width)]
                   for y in range(py5.height)])
    rgba = np.dstack(np.broadcast_arrays(R, G, B, A))
    img = py5.create_image_from_numpy(rgba, 'RGBA');
    py5.image(img, 0, 0)
    
py5.run_sketch()
David Keck
2 weeks ago

Only 10 pages into this monster and already absolutely loving the Processing Community Catalog. It has described so eloquently many views I have about FLOSS and will be a great resource for explaining how and why it is so important.

#processing
Thank you, @shiffman @benfry
and Casey Reas!

The Processing Community Catalog book. A very thick (2-3 inches) orange book. The front cover contains a table of contents with Oral History (transcript) and multiple perspectives by many folks.

sketch_2022_05_22 #Processing #Python #py5 #numpy https://abav.lugaralgum.com/sketch-a-day

Water is maybe a tiny bit faster, but still very slow. I added text for the current material and I can pickle the numpy array and load it back.

screenshot of the sandbox simulator with some pixels at the bottom of a window with black backgorund. Some yellow formations resemble piles of sand. Some blue "water" and red vertical formations of "rock" (that doesn't flow).

Desenho de 2023-05-22: "Estudo sobre Geometria 7"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

Animação de crescimento de círculos coloridos que se misturam formando uma interferência
rich
2 weeks ago

Current pastime: going through all my old #Processing sketches and re-imagining them via #stablediffusion😅 #aiart

generative art using Processing. noisy monochrome swirls, solarized
AI art of same swirls, rendered as a swirly hedge maze with some pink flowers
rich
2 weeks ago

#Processing #doodle. I really should try and get the video capture on my Ubuntu laptop working - it looks better in motion😕 #generativeart

generative art. yellow scrawls on black background

sketch_2023_05_21 #Processing #Python #py5 #numpy #creativeCoding

My naive sandbox now has, beside sand, concrete, water and rock. Water is very slow... but OK. All under 100 lines of code!

https://github.com/villares/sketch-a-day/blob/main/2023/sketch_2023_05_21/sketch_2023_05_21.py

Animated screen capture with Thonny IDE with code on the left and the sandbox simulation on the right.

A U shaped concrete recipient gets water, sand is added all around. Holes are made to the recipient, water and sand fall. More water added. Water takes a long time to settle.

Desenho de 2023-05-21: "Estudo sobre Geometria 6"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

Padrão hexagonal com círculos no centro e variação de cores

(Atrasado) Desenho de 2023-05-20: "Estudo sobre Geometria 5"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

Padrão hexagonal com circulos no centro e inclinado em 50 graus

sketch_2022_05_20 update!

I couldn't resist fiddling a bit more, and it came out more realistic!
Code at https://abav.lugaralgum.com/sketch-a-day

#Processing #Python #numpy #py5

"""
Animated capture of the sand simulator, a square window with black background where the mouse creates gray grains or square chuncks of "sand" (pixels) when dragged, those fall and accumulate at the bottom forming triangular piles.
"""

import numpy as np
import py5

def setup():
 global grid
 py5.size(500, 500)
 grid = np.zeros((py5.width, py5.height), dtype=bool)

def draw():
 py5.set_np_pixels(grid * 128, 'L')
 update_grid()

def update_grid():
 for i in reversed(range(grid.shape[0]-1)):
  row, next_row = grid[i], grid[i+1]
  sand = row == 1
  next_row_empty = next_row == 0
  falling = sand & next_row_empty
  row[falling] = 0
  next_row[falling] = 1
 for i in reversed(range(grid.shape[0]-1)):
  row, next_row = grid[i], grid[i+1]  
  sand_right = row[1:] == 1
  next_left_empty = next_row[:-1] == 0
  falling_left = sand_right & next_left_empty
  row[1:][falling_left] = 0  
  next_row[:-1][falling_left] = 1
 for i in reversed(range(grid.shape[0]-1)):
  row, next_row = grid[i], grid[i+1]    
  sand_left = row[:-1] == 1
  next_right_empty = next_row[1:] == 0
  falling_right = sand_left & next_right_empty
  row[:-1][falling_right] = 0  
  next_row[1:][falling_right] = 1

def key_pressed():
 if py5.key == ' ':
  grid[:] = np.zeros((py5.width, py5.height), dtype=bool)

def mouse_dragged():
 x = py5.mouse_x % py5.width
 y = py5.mouse_y % py5.height
 if py5.is_key_pressed:
  grid[y-4:y+5,x-4:x+5] = 1
 else:
  grid[y][x] = 1

py5.run_sketch()
David Carroll
3 weeks ago

Really impressed with this DT thesis from #entropy called p5.genzine, developed by Munus Shih and Iley Cao, “makes it easy to code and generate printable files for an 8-page #zine directly from your p5 sketch. It offers a user-friendly graphical interface tailored for interactive #zines, integrated export buttons to create print-ready layouts, and custom functions for typography and graphic design” #p5 #processing
https://parsons.edu/dt-2023/p5-genzine/

Animation of screencast of editing a zine on the left side and the rendered printable product on the right side

sketch_2022_05_20 (see next toot for the most recent version)
Naive sand simulator… #Processing #Python #numpy #py5

import numpy as np
import py5

def setup():
global grid
py5.size(500, 500)
grid = np.zeros((py5.width, py5.height), dtype=bool)

def draw():
py5.set_np_pixels(grid * 128, 'L')
update_grid()

def update_grid():
for i in reversed(range(grid.shape[0]-1)):
row, next_row = grid[i], grid[i+1]
sand = row == 1
next_row_empty = next_row == 0
falling = sand & next_row_empty
row[falling] = 0
next_row[falling] = 1
sand_right = row[1:] == 1
next_left_empty = next_row[:-1] == 0
falling_left = sand_right & next_left_empty
row[1:][falling_left] = 0
next_row[:-1][falling_left] = 1
sand_left = row[:-1] == 1
next_right_empty = next_row[1:] == 0
falling_right = sand_left & next_right_empty
row[:-1][falling_right] = 0
next_row[1:][falling_right] = 1

def key_pressed():
if py5.key == ' ':
grid[:] = np.zeros((py5.width, py5.height), dtype=bool)

def mouse_dragged():
x = py5.mouse_x % py5.width
y = py5.mouse_y % py5.height
if py5.is_key_pressed:
grid[y-4:y+5,x-4:x+5] = 1
else:
grid[y,x] = 1

py5.run_sketch()

animated capture of the sand simulator, a square window with black background where the mouse creates gray grains or square chuncks of "sand" (pixels) when dragged, those fall and accumulate at the bottom forming triangular piles.

#numpy feels a bit like another, harder, language to learn beyond #python :(

A first attempt at a "sand simulator" but it seems too hard...
#py5 #Processing #creativeCoding

import numpy as np
import py5

def setup():
global grid
py5.size(500, 500)
grid = np.zeros((py5.width, py5.height), dtype=bool)

def draw():
py5.set_np_pixels(grid * 255, 'L')
update_grid()

def update_grid():
for i in reversed(range(grid.shape[0]-1)):
row, next_row = grid[i], grid[i+1]
sand = row == 1
next_row_empty = next_row == 0
falling = sand & next_row_empty
row[falling] = 0
next_row[falling] = 1

def mouse_dragged():
x = py5.mouse_x % py5.width
y = py5.mouse_y % py5.height
if py5.is_key_pressed:
grid[y-2:y+3,
x-2:x+3] = 1
else:
#grid[y, x] = 1
grid[y][x] = 1

py5.run_sketch()

Samuel
3 weeks ago

Projecting lines onto a 2D semisphere and offsetting them based on mouse position and animated noise.

#Processing #GenerativeArt #Animation

A grid of white lines on a black canvas. The lines are wrapped around a semisphere and move in the direction of the mouse based on random noise, which looks like moving mountains on the sphere.

#numpy feels a bit like another, harder, language to learn beyond #python :(

A first attempt at a "sand simulator" but it seems too hard...
#py5 #Processing #creativeCoding

import numpy as np
import py5

def setup():
global grid
py5.size(500, 500)
grid = np.zeros((py5.width, py5.height), dtype=bool)

def draw():
py5.set_np_pixels(grid * 255, 'L')
update_grid()

def update_grid():
for i in reversed(range(grid.shape[0]-1)):
row, next_row = grid[i], grid[i+1]
sand = row == 1
next_row_empty = next_row == 0
falling = sand & next_row_empty
row[falling] = 0
next_row[falling] = 1

def mouse_dragged():
x = py5.mouse_x % py5.width
y = py5.mouse_y % py5.height
if py5.is_key_pressed:
grid[y-2:y+3,
x-2:x+3] = 1
else:
#grid[y, x] = 1
grid[y][x] = 1

py5.run_sketch()

code and a black window with white pixels accumulated in the lower part a bit like an histogram or a landscape with a mountain and some spikes (towers?) on top

Desenho de 2023-05-19: "Estudo sobre Geometria 4"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

Duas metades de um retângulo dourado, em aparente simetria, inclinados
Somē
3 weeks ago

The p5.cljs editor is live! It's a really barebones editor, but you can now try writing P5 in ClojureScript! Link: https://p5cljs-editor.onrender.com/

Not affilliated with P5 or the Processing foundation.

#p5 #processing #clojurescript #cljs #p5js #js #creativecoding

Somē
3 weeks ago

Building a web editor for P5 but using ClojureScript!

This is a really ugly proof of concept, but I'm really happy to have learned how to create this.

#p5 #p5js #clojure #clojurescript #processing #webdev

A random walker x3 (rotational simetry)
#Processing #Python #py5 #RandomWalker

"""
colorful random paths made of circles in a black background made with the code below
"""

import py5

rotations = 3
margin = 100
vx, vy = 2, 3
brush_x, brush_y = 200, 200

def setup():
    py5.size(600, 600)
    py5.no_stroke()
    py5.color_mode(py5.HSB)  # Hue, Saturation, Brightness
    py5.background(0)


def draw():
    global brush_x, brush_y, vx, vy
    angle = py5.radians(360 / rotations)
    # moves 0, 0 to the center of the canvas
    py5.translate(py5.width / 2, py5.height / 2)
    for i in range(rotations):  # repeats "rotations" times
        py5.rotate(angle)
        py5.fill((py5.frame_count / 10) % 255, 200, 200)
        py5.circle(brush_x - py5.width / 2, brush_y - py5.height / 2, 5)

    vx = vx + py5.random(-0.5, 0.5)
    vy = vy + py5.random(-0.5, 0.5)

    if abs(vx) > 5:
        vx = 0
    if abs(vy) > 5:
        vy = 0

    brush_x = brush_x + vx
    brush_y = brush_y + vy

    if brush_x > (py5.width - margin) or brush_x < margin:
        vx = -vx
    if brush_y > (py5.height - margin) or brush_y < margin:
        vy = -vy

py5.run_sketch()

Desenho de 2023-05-17: "Estudo sobre Geometria 2"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

sketch_2022_05_16 #Processing #Python #numpy #py5 inspired by a py5 "planet" made by @ericof

"""
A sphere in a black background, the texture is dynamic, made of Perlin Noise with bands. Made with the code below
"""
import numpy as np
from random import shuffle

noise_increment = 0.005
img_txt = None

def setup():
    global mesh_x, mesh_y, rgb_map, s
    size(500, 500, P3D)
    no_stroke()
    s = create_shape(SPHERE, 100)
    s.set_ambient("#FF0000")

    color_mode(HSB)
    cs = [color(h / 2 + 64, 128 + h / 2, 255)
           for h in range(256)]
    color_mode(RGB)
    shuffle(cs)
    rgb_map =  np.dstack((
        [c >> 16 & 0xFF for c in cs],
        [c >> 8 & 0xFF for c in cs],
        [c & 0xFF for c in cs]
        ))[0]

    mesh_x, mesh_y = np.meshgrid(
        np.arange(0, width * noise_increment, noise_increment),
        np.arange(0, height * noise_increment, noise_increment)
    )

def draw():
    global img_txt
    background(0)
    lights()
    point_light(255, 255, 255, 0, 0, 500 * sin(frame_count / 20))
    h = remap(os_noise(mesh_x, mesh_y, frame_count * noise_increment),
              -1, 1, 0, 255).astype(np.uint8)
    npa = rgb_map[h]
    img_txt = create_image_from_numpy(npa, bands="RGB", dst=img_txt)
    #image(img_txt, 0, 0)
    
    s.set_texture(img_txt)
    shape(s, 350, 350)

Desenho de 2023-05-14: "Estudo sobre Geometria"
#py5 #desenhandocomcodigo #arte #processing #creativeCoding

A partir de um ponto central, criamos círculos e quadrados em uma sub-sequencia de distâncias a partir de Fibonacci