OBIETTIVO VISIVO:
Paesaggio desertico formato da tre dune, che alterna il crepuscolo a una notte stellata. L’obiettivo è la creazione di un cielo animato e dinamico, dato da stelle cadenti e stelle che brillano pulsando e cambiando dimensione. La luna passa dall’essere uno spicchio a una luna piena e brillante. I colori delle dune cambiano con il passaggio da crepuscolo a buio.
SCOMPOSIZIONE LOGICA:
Per la creazione del paesaggio ho ragionato “a livelli”, partendo dallo sfondo per poi scendere verso il primo piano.
-Cielo/sfondo: Il primo livello riguarda la parte superiore della canvas. Qui ho gestito l’atmosfera attraverso uno stato booleano (isNight) che controlla il passaggio dal crepuscolo alla notte tramite il click del mouse.
-Luna: cambia forma e colore a seconda dello stato. La falce è ottenuta sovrapponendo un cerchio del colore del cielo al disco lunare.
-Stelle fisse: per queste, ho utilizzato degli array paralleli nel setup() per memorizzare le coordinate, evitando che “ballassero” a ogni frame. Ho usato la funzione sin() con offset casuali sfasati crea una pulsazione luminosa indipendente per ogni stella, e ho applicato la funzione map() che collega la posizione del mouse alla dimensione massima delle stelle.
-Stelle cadenti: dopodiché, ho aggiunto dinamismo al cielo usando frameCount con l’operatore modulo (%) per generare due stelle cadenti a intervalli regolari e sfasati, con velocità diverse.
-Dune: infine, mi sono dedicata al disegno delle dune. Dopo averle disegnate su Figma (semplificandole da una foto di Pinterest) per definire le misure esatte, le ho tradotte in codice utilizzando funzioni custom e forme complesse. L’ordine di disegno gestisce la profondità: la duna centrale viene disegnata per prima, le laterali la sovrappongono.
USO AI:
Prima ancora di scrivere codice, ho usato l’AI per ragionare sulla struttura logica del progetto a partire dal mio disegno. Il confronto mi ha aiutato a capire cosa avesse senso fare e come ottimizzarlo. Ad esempio, per le stelle che pulsano in modo sfasato e non sincronizzato, l’AI mi ha suggerito di salvare un offset casuale per ogni stella nel setup() e sommarlo a frameCount dentro sin(): in questo modo ogni stella ha una fase di partenza diversa e pulsa in modo indipendente senza ricalcolare ogni frame. Questo è il mio prompt per Claude: “Ho disegnato il mio paesaggio desertico con le stelle che brillano nel draw() con un ciclo for e ho usato sin(frameCount) per farle pulsare; volevo capire come fare in modo che non pulsino tutte insieme contemporaneamente in modo sincronizzato, ma vorrei che ognuna brillasse per conto suo, per simulare lo scintillio. Come posso organizzare questa cosa?”

Lascia un commento
Devi essere connesso per inviare un commento.