Elements per videojocs

Una de les aplicacions de les fractals és la generació d'elements per a videojocs. [b]Mira[/b] els següents exemples:[br][br]a) [b]Terrenys[/b]:[br]https://www.shadertoy.com/view/3dXcW2[br][br]b) [b]Aigua[/b]:[br]https://www.shadertoy.com/view/Ms2SD1[br][br]c) [b]Escenes[/b]:[br]https://www.shadertoy.com/view/DtBGzt (cada cop que fas clic a la imatge es regenera)
Quin exemple t'ha agradat més?
Anem a veure com es fa la generació de terrenys (tipus l'exemple que tens a la imatges següent)
Començarem recordant la Corba de Koch amb aquest vídeo:
[color=#333333]Si hi penses, a la Corba de Koch, es fa exactament el mateix a cada iteració:[br][/color]1r) Dividir cada segment en tres parts.[br]2n) Elevar la part del mig a l'alçada adient perquè quedi un triangle equilàter.[br]3r) Anar repetint els passos anteriors en els segments que han quedat.
Què creus que passaria no elevessis la part del mig la mateixa distància en cada cas?[br](descriu amb les teves paraules com podria ser la forma que quedaria)
Observa doncs què passa si cada cop dividim els segments pel mig i els elevem una quantitat aleatòria (diferent en cada cas, que fins i tot pot ser negativa, de manera que aleshores el que fem és "baixar"):
(aquest procés s'anomena "midpoint displacement", és a dir, desplaçament del punt mig)
Si això ho fem en 2D, és a dir sobre un quadrat enlloc d'un segment, observa que al final ens queda una superfície que té punts més alts i altres més baixos:
Si repetim aquest procés, fixa't quina aparença acaba tenint:
A què es podria assemblar la forma de la superfície que queda al final?
Ara ho faràs tu amb Geogebra. Primer prova aquest applet on ja està fet en 2D:
En aquest applet anterior d'exemple s'ha usat una entrada d'aquest estil:[br][br][code]P = ([/code][code] x(C), y(C)+random()*Longitud(f)/2-Longitud(f)/4)[br][/code][br]per dibuixar un punt [code]P[/code] a la posició d’un punt [code]C[/code] però a diferent alçada (segons un segment f):[br][list][*][code]x(C)[/code]: s’usa per obtenir la coordenada x del punt C; [code]y(C)[/code]: s’usa per obtenir la coordenada y del punt C[br][/*][*][code]random()[/code]: genera un nombre aleatori entre 0 i 1, que podem multiplicar per la longitud de la meitat d’un segment [code]*Longitud(f)/2[/code] perquè estigui entre 0 i la longitud de mig segment.[br][/*][*][code]-Longitud(f)/4[/code]: en restar-li una quarta part de la longitud del segment, el nombre aleatori acabarà entre -1/4 part i +1/4 part de manera que tant pot estar per sobre com per sota (pujar o baixar).[br][/*][/list]
Applet perquè facis tu la construcció:
Prova de fer-ho sense pistes (però si necessites ajuda, fes una ullada a aquest document):
Ara pots provar com seria en 3D amb aquesta eina:
[br]- https://qiao.github.io/fractal-terrain-generator/demo/
Fons d'informació i imatges:[br][br]Min-Fang Grace Tsai, Fractal landscapes, 2003 [br]- https://www.sfu.ca/~rpyke/335/projects/tsai/report1.htm[br][br]64bitdragon, Midpoint Displacement in one dimension[br]- https://learn.64bitdragon.com/articles/computer-science/procedural-generation/midpoint-displacement-in-one-dimension[br][br]Bites of code, Landscape generation using midpoint displacement, 2016[br]- https://bitesofcode.wordpress.com/2016/12/23/landscape-[br]generation-using-midpoint-displacement/[br][br]The craft of coding, Midpoint displacement algorithm[br]- https://craftofcoding.wordpress.com/tag/midpoint-displacement-algorithm/
Chiudi

Informazioni: Elements per videojocs