Ciao Jak e grazie per la risposta.
Jak ha scritto:Per cosa devi fare sta roba nello specifico? Avere dettagli su cosa ti è utile e cosa no e con quale apporssimazione sicuramente aiuta
Ho paura che fare la media porterebbe sfalsare il diagramma di voronoi anche se non ne sono sicuro.
L'idea è (essere in grado di) replicare il lavoro di questo ragazzo. Trovo che l'aspetto finale sia superlativo e, come scrivi tu più in basso, addirittura migliorabile aggiungendo dei cambiamenti nel dislivello (lo scrive anche lui, alla fine dell'articolo), usando l'easing appunto. Ma questo verrà poi.
La media funziona per quello che mi serve. Mi spiego. Ho creato una griglia quadrata, dentro ogni griglia ho creato un punto (p) in posizione randomica. Ho applicato il (mio, ne vado fiero

) diagramma di Voronoi, quindi ora ogni pixel fa parte di un'area specifica (un poligono) che è la stessa area del suo punto (p) più vicino. Facendo la media matematica dei valori x e y di ogni pixel di un'area ottengo un valore x e y. Sposto qui il punto (p), solo lui, i poligoni non subiscono cambiamenti, quindi il diagramma di Voronoi (che è stato fatto una sola volta e non verrà più ripetuto!) non viene alterato. L'aspetto dei poligoni non sarà identico a quello dell'articolo, ma è funzionale allo scopo e mi basta.
Jak ha scritto:Il risultato finale dovrà essere una maglia come nell'ultima immagine oppure ti serve veramente conoscere il segmento in mezzo come nella penultima?
Se l'obiettivo è l'immagine finale, suppongo per interpolare lavorando in triangoli allora la soluzione più semplice ma dispendiosa è quella di verificare i pixel adiacenti per ogni pixel in modo tale da scoprire quali aree si toccano ed a quel punto si lavora a generare la maglia (abbastanza facile, per ogni collegamento ottenuto verifichi su entrambi i punti se ci sono dei punti in comune che eccetto i bordi sono 2 per ogni collegamento)
Ho bisogno (anche) di conoscere e salvare (ds_grid ancora, suppongo) quali aree (poligoni) sono adiacenti, tutti i segmenti che dividono le aree (blu nell'immagine, ad esempio serviranno per i fiumi) e tutti i segmenti che collegano i punti di aree adiacenti (quelli rossi). Sono fermo qui.
L'articolo parla di un algoritmo che sfrutta la triangolazione di Delaunay, arabo per me.
Nel caso tu o qualcuno fosse in grado di darmi una mano per capire come funziona sarebbe grandissimo. Altrimenti farò come hai scritto anche se ho molta paura per le prestazioni in quanto i calcoli saranno davvero moltissimi.
Jak ha scritto:Adesso che ho letto per benine l'articolo che hai linkato ho più o meno capito che idea hai.
Tornando ai vecchi sistemi se il tuo problema è unicamente quello di creare un'isola ti basta fare una proporzione tra il valore di altezza ottenuto e la distanza da un punto centrale che definisci te. Una sorta di cono oltre il quale ci sarà solo mare e più vicino al centro sarai più probabilità ci saranno di ottenere valori alti provocando un'effetto montagna. Se le sone di massima altezza saranno separate dal centro come
nella tua immagine allora la punta dell'isola verà "allungata" provocando un'effetto anche migliore e più simile alle immagini che hai postato. Si potrebbe ulteriormente lavorarci usando proporzioni meno lineari e quindi anzichè fare un cono si può lavorare su mezza sfera (per eventuali
easing ci penseremo poi, quelli di sto sito ed anche altri sono già tutti convertiti in GML dal sottoscritto, basta chiedere)
Esattamente. Appena terminato il "database" dei vari segmenti, il passo successivo dovrebbe essere questo.
All'inizio volevo solo creare un'isola, ma visto quanto è bello questo lavoro, ho deciso di replicare il più possibile.