Geometria i composició
Explora totes les formes geomètriques bàsiques, controla'n la posició i la mida amb precisió, i descobreix com crear composicions equilibrades i expressives.
Recordatori: el llenç i draw()
Seguim utilitzant setup() per definir la mida del llenç i draw() per dibuixar.
Ara ampliem el vocabulari de formes i aprenem a controlar amb exactitud on i com apareixen.
function setup() {
createCanvas(500, 400);
background(245);
}
function draw() {
// aquí aniran les nostres formes
}
Catàleg de formes 2D
A més de ellipse() i rect(), p5.js ofereix altres primitives geomètriques. Vegem-les amb exemples interactius:
ellipse(x, y, ample, alt)
El·lipse centrada a (x,y). Si ample = alt, tenim un cercle.
rect(x, y, ample, alt)
Rectangle. Per defecte, (x,y) és el centre (mode CENTER).
triangle(x1,y1, x2,y2, x3,y3)
Triangle definit per tres vèrtexs. Molt útil per a muntanyes o teulades.
line(x1,y1, x2,y2)
Segment recte entre dos punts. Amb strokeWeight() controlem el gruix.
point(x, y)
Dibuixa un punt. La mida depèn de strokeWeight().
quad(x1,y1, x2,y2, x3,y3, x4,y4)
Quadrilàter irregular. Ideal per a perspectives o formes deformades.
Recorda: L'ordre de dibuix afecta la superposició. Les formes declarades després es pinten al damunt.
Modes de dibuix: CENTER i CORNER
Per defecte, ellipse() i rect() utilitzen el mode CENTER, on (x,y) és el centre de la figura.
Podem canviar a mode CORNER amb ellipseMode(CORNER) o rectMode(CORNER), i llavors (x,y) serà la cantonada superior esquerra.
Mode CENTER (per defecte)
(90,70) és el centre de les dues figures.
Mode CORNER
(50,30) és la cantonada superior esquerra.
// Mode CENTER (per defecte)
rect(90, 70, 80, 60); // centre a (90,70)
// Mode CORNER
rectMode(CORNER);
rect(50, 30, 80, 60); // cantonada sup. esq. a (50,30)
// També per a el·lipses:
ellipseMode(CORNER);
ellipse(50, 30, 40, 40);
Controlar posició i mida amb variables
En lloc de posar números directament, podem utilitzar variables per a fer el codi més llegible i fàcil de modificar.
També podem aprofitar les variables integrades width i height que contenen l'amplada i l'alçada del llenç.
let centerX = width / 2; // meitat de l'amplada
let centerY = height / 2; // meitat de l'alçada
let mida = 100;
ellipse(centerX, centerY, mida, mida);
rect(centerX - mida/2, centerY - mida/2, mida/2, mida/2);
Consell: Acostuma't a utilitzar width i height per a crear composicions que s'adaptin automàticament si canvies la mida del llenç.
Principis de composició visual
Crear formes és fàcil; col·locar-les de manera harmoniosa és un art. Aquí tens algunes directrius:
- Regla dels terços: divideix mentalment el llenç en 3×3 parts. Col·loca elements importants a les interseccions o al llarg de les línies.
- Simetria: La simetria transmet ordre i calma. L'asimetria pot generar dinamisme i tensió.
- Jerarquia visual: Un element gran o de color contrastat domina la composició. Utilitza mides i colors per guiar la mirada.
- Espai negatiu: El buit (fons) és tan important com les formes. No omplis tot el llenç.
Experimenta amb aquests conceptes als exemples següents.
Exemples creatius pas a pas
Mandala geomètric simple
Combinem cercles i rectangles centrats per crear un patró de mandala.
let cx = width/2, cy = height/2;
noFill(); stroke(255,200,0); strokeWeight(2);
for (let i=20; i<=120; i+=20) {
ellipse(cx, cy, i, i);
}
fill(255,100,0,150); noStroke();
rect(cx-40, cy-40, 80, 80);
fill(0,200,255,150);
ellipse(cx, cy, 50, 50);
Paisatge de muntanyes (triangles)
Utilitzem triangles de diferents mides i colors per a un paisatge en capes.
background(135,206,235); // blau cel
fill(100,200,100); rect(0,150,width,50); // gespa
fill(100,100,100); triangle(50,150, 150,40, 250,150);
fill(80,80,80); triangle(20,150, 120,60, 220,150);
fill(120,120,120); triangle(100,150, 220,30, 340,150);
fill(255,255,0); ellipse(280,50,40,40);
Patró geomètric abstracte
Combinem rectangles, el·lipses i línies per a una composició d'estil modern.
let w = width/3, h = height/2;
for (let i=0; i<3; i++) {
for (let j=0; j<2; j++) {
fill(255,150,0,180); rect(i*w, j*h, w, h);
fill(0,150,255,120); ellipse(i*w + w/2, j*h + h/2, w/2, h/2);
stroke(255); strokeWeight(2);
line(i*w, j*h, i*w+w, j*h+h);
line(i*w+w, j*h, i*w, j*h+h);
}
}
Exercicis per practicar
- Dibuixa un cub en perspectiva utilitzant
quad()iline()(consell: dibuixa dues cares visibles). - Crea un paisatge urbà (skyline) amb rectangles de diferents alçades i amplades. Afegeix-hi finestres amb
point()orect()petits. - Utilitza
ellipseMode(CORNER)per dibuixar una fila de cercles que comencin exactament al marge esquerre. - Dissenya una composició abstracta basada en la regla dels terços: col·loca tres elements principals a les interseccions de la graella 3×3.
- Repte: Reprodueix l'obra "Composition II" de Mondrian (línies negres, rectangles blancs i colors primaris) utilitzant
rect(),line()i controlant modes de dibuix.
Reflexió artística
La geometria és el llenguatge silenciós de l'art visual. Cada triangle, cada rectangle, cada línia que traces comunica alguna cosa: estabilitat, moviment, tensió o harmonia. Quan controles la posició i la mida amb precisió, passes de "dibuixar formes" a "compondre una obra". Pensa en l'equilibri entre el ple i el buit, en com els colors interactuen i en com l'ull recorre el llenç. Avui has après les paraules bàsiques d'aquest idioma geomètric. En els propers temes les combinarem amb repeticions i transformacions per crear veritables sinfonies visuals.
Mini-projecte del Tema 2
Crea una "Composició geomètrica dinàmica" amb les següents condicions:
- Utilitza almenys 4 tipus de formes diferents (
ellipse,rect,triangle,line,quad...). - Juga amb els modes CENTER i CORNER per aconseguir efectes diferents.
- Incorpora variables per a controlar la posició o mida d'algun element (per exemple, que un cercle canviï segons
width/3). - Aplica almenys un principi de composició (simetria, regla dels terços, jerarquia visual, espai negatiu).
- Fes que la paleta de colors sigui coherent (màxim 4 colors principals).
Comparteix el codi i explica quina sensació o idea has volgut transmetre amb la teva composició.