![]() |
||
---|---|---|
.github | ||
2018 | ||
2019 | ||
2020 | ||
_layouts | ||
admin_scripts | ||
assets/css | ||
.gitignore | ||
2018.md | ||
2019.md | ||
README.md | ||
_config.yml |
README.md
sketch-a-day
one visual idea a day
Hi! I'm Alexandre, welcome! I try to make one small program (sketch) a day, and I usually put the code here: github.com/villares/sketch-a-day.
Feel free to contact me regarding licenses to use my work, teaching opportunities, consulting or other projects.
Get updates from my newsletter: [sketch-mail].
You may also support my artistic work, open educational resources and research using Gumroad.com/villares or PayPal
2018
2019
2020
sketch_2020_07_18b [Py.Processing]
sketch_2020_07_16a [Py.Processing]
sketch_2020_07_15a [Py.Processing]
sketch_2020_07_14a | sketch_2020_07_14b | sketch_2020_07_14c
sketch_2020_07_13a [Py.Processing]
sketch_2020_07_12a [Py.Processing]
sketch_2020_07_11a [Py.Processing]
sketch_2020_07_10a [Py.Processing]
Based on work by André Burnier, ported from Processing Java to Python by Thiago Bellotti and Alexandre Villares. Playing with the Tomorrow font by Tony de Marco e Monica Rizzolli. Using geomerative, a library by Ricard Marxer.
sketch_2020_07_09a [Py.Processing]
sketch_2020_07_08a [Py.Processing]
sketch_2020_07_07a [Py.Processing]
sketch_2020_07_06a [Py.Processing]
sketch_2020_07_05a [Py.Processing]
sketch_2020_07_04a [Py.Processing]
sketch_2020_07_03a [Py.Processing]
sketch_2020_07_02a [Py.Processing]
sketch_2020_06_30a [Py.Processing]
sketch_2020_06_29a [Py.Processing]
sketch_2020_06_28a [Py.Processing]
sketch_2020_06_27a [Py.Processing]
sketch_2020_06_26a [Py.Processing]
sketch_2020_06_25b [Py.Processing]
sketch_2020_06_24a [Py.Processing]
sketch_2020_06_23a [Py.Processing]
sketch_2020_06_21c [Py.Processing]
Animation for teaching atan2()
in material-aulas
sketch_2020_06_20a [Py.Processing]
Invitation for Noite de Processing :)
sketch_2020_06_19a [Py.Processing]
Animation for teaching an alternative to input()
in material-aulas
def input(message=''):
from javax.swing import JOptionPane
return JOptionPane.showInputDialog(frame, message)
sketch_2020_06_18a [Py.Processing]
sketch_2020_06_17a [Py.Processing]
sketch_2020_06_16a [Py.Processing]
sketch_2020_06_15a [Py.Processing]
sketch_2020_06_14a [Py.Processing]
First aproximation of 'lerp recursive grid'.
sketch_2020_06_13a [Py.Processing]
Recrusive grid
sketch_2020_06_12a [Py.Processing]
sketch_2020_06_11a [Py.Processing]
sketch_2020_06_11b [Py.Processing]
sketch_2020_06_10a [Py.Processing]
sketch_2020_06_10b [Py.Processing]
sketch_2020_06_09a [Py.Processing]
sketch_2020_06_08b [Py.Processing]
Recreating a classic in class today: Georg Nees' Schotter https://collections.vam.ac.uk/item/O221321/s
sketch_2020_06_07a [Py.Processing]
Diagonal serpinsky-like
(-t + abs((x + y) | (x - y + t * 2)) ** a) % b < c
sketch_2020_06_06a [Py.Processing]
Removed the scaling.
Now walking +.1 on the 'a' of:
(t + abs((x + y - t) ^ (x - y + t)) ** a) % b < c
sketch_2020_06_05a [Py.Processing]
Adding some HSB color :) (still the @nstutae pattern)
sketch_2020_06_04a [Py.Processing]
Most wonderful pattern generator copied from @ntsutae
sketch_2020_06_03a [Py.Processing]
Based on tweets by @ntsutae
sketch_2020_06_02a [Py.Processing]
Based on tweets by @ntsutae
sketch_2020_06_01a [Py.Processing]
More easing gif examples for 'material-aulas' (there is version a and b with different functions)
sketch_2020_05_31a [Py.Processing]
John´s sigmoid as easing + Golan Levin's sigmoid
sketch_2020_05_30a [Py.Processing]
John's sigmoidMap()
sketch_2020_05_29a [Py.Processing]
lerpColor()
sketch_2020_05_28b [Py.Processing]
PVector.lerp()
sketch_2020_05_27a [Py.Processing]
Explaining lerp()
in Processing
sketch_2020_05_26a [Py.Processing]
Explaining map()
in Processing
sketch_2020_05_25a [Py.Processing]
sketch_2020_05_24a [Py.Processing]
Easing
See also https://easings.net/ and https://gist.github.com/zeffii/c1e14dd6620ad855d81ec2e89a859719
sketch_2020_05_23a [Py.Processing]
map()
, lerp()
and lerpColor()
example
sketch_2020_05_22a [Py.Processing]
lerp()
and lerpColor()
example
sketch_2020_05_21a [Py.Processing]
Another simultaneous keys example
sketch_2020_05_20a [Py.Processing]
Simultaneous keys example
sketch_2020_05_19a [Py.Processing]
sketch_2020_05_18a [Py.Processing]
sketch_2020_05_17a [Py.Processing]
sketch_2020_05_16a [Py.Processing]
sketch_2020_05_15a [Py.Processing]
sketch_2020_05_14a [Py.Processing]
sketch_2020_05_13a [Py.Processing]
sketch_2020_05_12a [Py.Processing]
sketch_2020_05_11a [Py.Processing]
Made this as an example for http://abav.lugaralgum.com/material-aulas
I started capturing the examples with peek, it's great!
sketch_2020_05_10a [Py.Processing]
More noise
sketch_2020_05_09a [Py.Processing]
Looping now :)
sketch_2020_05_08a [Py.Processing]
sketch_2020_05_07a [Py.Processing]
sketch_2020_05_06a [Py.Processing]
Noise 1D, 2D (& 3D with time)
sketch_2020_05_05a [Py.Processing]
Simetric drawing revisited
sketch_2020_05_04a [Py.Processing]
Loading images from a folder! Example medieval images collected by Daniel Seda
sketch_2020_05_03a [Py.Processing]
Saving a text file example
sketch_2020_05_02a [Py.Processing]
File selection example
sketch_2020_05_01a [Py.Processing]
Text file reading example
sketch_2020_04_30a [Py.Processing]
Basic circle packing
sketch_2020_04_29a [Py.Processing]
Variation of 28a
sketch_2020_04_28a [Py.Processing]
Inspired by this https://discourse.processing.org/t/porting-a-3d-brownian-motion-to-python-mode/20144
sketch_2020_04_27a [Py.Processing]
sketch_2020_04_26b [Py.Processing]
sketch_2020_04_25a [Py.Processing]
sketch_2020_04_24a sketch_2020_04_24b [Py.Processing]
sketch_2020_04_23a [Py.Processing]
sketch_2020_04_22a [Py.Processing]
sketch_2020_04_21d [Py.Processing]
sketch_2020_04_20d [Py.Processing]
sketch_2020_04_19a [Py.Processing]
sketch_2020_04_18a [Py.Processing]
sketch_2020_04_17b [Py.Processing]
Working on "Caneta automatica" a very simple Logo/turtle/pen for Processing Python Mode https://github.com/villares/material-aulas/tree/master/caneta_automatica
sketch_2020_04_16a [Py.Processing]
Rewriting the previous sketch with a dictionary based grid in order to try some neighbour finding tricks later...
sketch_2020_04_15a [Py.Processing]
"Based on traditional Japanese stitching, this is a riff on hitomezashi patterns." -- Annie Perikins @anniek_p https://twitter.com/anniek_p/status/1244220881347502080?s=20
sketch_2020_04_14a [Py.Processing]
sketch_2020_04_13a
sketch_2020_04_13b
[Py.Processing]
sketch_2020_04_12a [Py.Processing]
sketch_2020_04_11a [Py.Processing]
https://abav.lugaralgum.com/sketch-a-day/2020/sketch_2020_04_11a/pyp5js/ pyp5j
sketch_2020_04_10a [Py.Processing]
sketch_2020_04_09a
sketch_2020_04_09b
[Py.Processing]
sketch_2020_04_08a [Py.Processing]
sketch_2020_04_07a [Py.Processing]
sketch_2020_04_06a [Py.Processing]
2020_04_04a revisited
axiom = 'L'
rules = {
'L': '-RF[-L]',
'R': '+LF[+R]',
}
sketch_2020_04_05a [Py.Processing]
Added the gif export code and brought back the 'auto-center and zoom' shortcut
axiom = 'L'
rules = {
'L': '[-RF[-LF+]]',
'R': '[+LF[+RF-]]',
}
sketch_2020_04_04a [Py.Processing]
axiom = 'L'
rules = {
'L': '-RF[-L]',
'R': '+LF[+R]',
}
sketch_2020_04_03a [Py.Processing]
sketch_2020_04_02a [Py.Processing]
sketch_2020_04_01a [Py.Processing]
sketch_2020_03_31a [Py.Processing]
sketch_2020_03_30a [Py.Processing]
sketch_2020_03_29a [Py.Processing]
axiom = 'L'
rules = {
'L': '+FR-LFL+',
'R': '-FL+RFR-',
}
...
for c in sentence:
if c == 'F':
stroke(255)
line(0, 0, 0, -stroke_len) # draw white line
translate(0, -stroke_len) # move
elif c == 'L':
stroke(255, 0, 0)
line(0, 0, 0, -stroke_len) # red does not move!
elif c == 'R':
stroke(0, 0, 255)
line(0, 0, 0, -stroke_len) # blue does not move!
elif c == '+':
rotate(angle)
elif c == '-':
rotate(-angle)
sketch_2020_03_28a [Py.Processing]
iterations = 7
stroke_len = 2600
angle_deg = 45
axiom = 'L'
sentence = axiom
rules = {
'L': '+RF-LFL+',
'R': '-LF+RFR-',
}
sketch_2020_03_27a [Py.Processing]
iterations = 7
stroke_len = 2600
angle_deg = 45
axiom = 'L'
sentence = axiom
rules = {
'L': '+RF[-RFR]-FR+',
'R': '-LF[+LFL]+FL-',
}
sketch_2020_03_26a [Py.Processing]
axiom = 'L'
sentence = axiom
rules = {
'L': '+RF-LFL-FR+',
'R': '-LF+RFR+FFL-', # broken Hilbert (added L)
}
sketch_2020_03_25a [Py.Processing]
Based on www.openprocessing.org/sketch/862451 by @takawo
sketch_2020_03_24a [Py.Processing]
L-System with rules for a Hilbert Curve. Studies for Rosetta Code.
axiom = "L"
rules = {
'L': '+RF-LFL-FR+',
'R': '-LF+RFR+FL-',
}
sketch_2020_03_23a [Py.Processing]
sketch_2020_03_22a & sketch_2020_03_22b [Py.Processing]
sketch_2020_03_21a [Py.Processing]
sketch_2020_03_20a [Py.Processing]
Not shuffled, my shuffled, shoebot shuffled
sketch_2020_03_19a [Py.Processing]
Studies for a shuffled grid (I don't like/undertand the shoebot shuffled grid)
def shuffled_grid(cols, rows, colSize=1, rowSize=1):
from random import shuffle
sg = list(grid(cols, rows, colSize, rowSize))
shuffle(sg)
return sg
def grid(cols, rows, colSize=1, rowSize=1):
"""
Returns an iterator that contains coordinate tuples.
As seen in Shoebot & Nodebox (minus 'shuffled mode')
A common way to use is:
# for x, y in grid(10, 10, 12, 12):
# rect(x, y, 10, 10)
"""
rowRange = range(int(rows))
colRange = range(int(cols))
for y in rowRange:
for x in colRange:
yield (x * colSize, y * rowSize)
sketch_2020_03_18a [Py.Processing]
Sin color diagonal made on my live coding streaming session :)
sketch_2020_03_17a [Py.Processing]
PythagorasTree for Rosetta Code project https://rosettacode.org/wiki/Pythagoras_tree#Processing
sketch_2020_03_16a [Py.Processing]
Draw a clock for Rosetta Code project https://rosettacode.org/wiki/Draw_a_clock#Processing
sketch_2020_03_15a [Py.Processing]
ImageNoise for Rosetta Code project https://rosettacode.org/wiki/Image_noise#Processing
sketch_2020_03_14a [Py.Processing]
Archimedean spiral for Rosetta Code project https://rosettacode.org/wiki/Archimedean_spiral#Processing
sketch_2020_03_13a [Py.Processing]
Zoomable Mandelbrot set for Rosetta Code project https://www.rosettacode.org/wiki/Mandelbrot_set#Processing
sketch_2020_03_12a [Py.Processing]
Koch curve for Rosetta Code project https://www.rosettacode.org/wiki/Koch_curve#Processing
sketch_2020_03_11a [Py.Processing]
Animation for Rosetta Code project https://rosettacode.org/wiki/Animation#Processing
sketch_2020_03_10a [Py.Processing]
Dragon curve for Rosetta Code project https://rosettacode.org/wiki/Dragon_curve#Processing
sketch_2020_03_09b [Py.Processing]
sketch_2020_03_08b [Py.Processing]
sketch_2020_03_07b [Py.Processing]
sketch_2020_03_06a [Py.Processing]
sketch_2020_03_05a [Py.Processing]
sketch_2020_03_04a [Py.Processing]
sketch_2020_03_03a [Py.Processing]
sketch_2020_03_02a [Py.Processing]
sketch_2020_03_01a [Py.Processing]
sketch_2020_02_29a [Py.Processing]
sketch_2020_02_28a [Py.Processing]
sketch_2020_02_27a [Py.Processing]
Maybe this will be a game! Arrow hunter?
sketch_2020_02_26a [Py.Processing]
sketch_2020_02_25a [Py.Processing]
sketch_2020_02_24a [Py.Processing]
sketch_2020_02_23a [Py.Processing]
sketch_2020_02_22a [Py.Processing]
sketch_2020_02_21a [Py.Processing]
sketch_2020_02_20a [Py.Processing]
sketch_2020_02_19a [Py.Processing]
sketch_2020_02_18a [Py.Processing]
sketch_2020_02_17b [Py.Processing]
sketch_2020_02_16b [Py.Processing]
sketch_2020_02_15a [Py.Processing]
sketch_2020_02_14a [Py.Processing]
sketch_2020_02_13a [Py.Processing]
sketch_2020_02_12a [Py.Processing]
sketch_2020_02_11a [Py.Processing]
sketch_2020_02_10a [Py.Processing]
sketch_2020_02_09a [Py.Processing]
sketch_2020_02_08a [Py.Processing]
sketch_2020_02_07a [Py.Processing]
sketch_2020_02_06a [Py.Processing]
sketch_2020_02_05b [Py.Processing]
sketch_2020_02_04c [Py.Processing]
sketch_2020_02_03a [Py.Processing]
sketch_2020_02_02a [Py.Processing]
sketch_2020_02_01a [Py.Processing]
- Number of possible triangles on 3x3 grid: 76
- Number of 2-triangle combinations: 2850
- Combinations without overlapping points: 686
- Each position then has 2 additional interpolated triangles (between the chosen 2-triangle combination)
- Cols: 49 Rows: 14
sketch_2020_01_31a [Py.Processing]
- Number of possible triangles on a 4x4 grid: 516
- Cols: 43 Rows: 12
sketch_2020_01_30a [Py.Processing]
sketch_2020_01_29a [Py.Processing]
sketch_2020_01_28a [Py.Processing]
sketch_2020_01_27a [Py.Processing]
sketch_2020_01_26a [Py.Processing]
sketch_2020_01_25a [Py.Processing]
sketch_2020_01_24a [Py.Processing]
sketch_2020_01_23a [Py.Processing]
sketch_2020_01_22a [Py.Processing]
sketch_2020_01_21a [Py.Processing]
sketch_2020_01_20a [Py.Processing]
sketch_2020_01_19a [Py.Processing]
sketch_2020_01_18c [Py.Processing]
sketch_2020_01_17b [Py.Processing]
sketch_2020_01_16b [Py.Processing]
sketch_2020_01_15a [Py.Processing]
sketch_2020_01_14a [Py.Processing]
sketch_2020_01_13a [Py.Processing]
sketch_2020_01_12a [Py.Processing]
sketch_2020_01_11a [Py.Processing]
sketch_2020_01_10a [Py.Processing]
sketch_2020_01_09a [Py.Processing]
sketch_2020_01_08f [Py.Processing]
sketch_2020_01_07c [Py.Processing]
sketch_2020_01_06b [Py.Processing]
sketch_200105a [Py.Processing]
sketch_200104b [Py.Processing]
sketch_200103b [Py.Processing]
sketch_200102a [Py.Processing]
sketch_200101a [Py.Processing]