Létrehozása reális tájegység 130 sornyi kódot javascript

Létrehozása reális tájegység 130 sornyi kódot javascript

A programozók - lusta lény, egy vékony mentális szervezet, amely segít megtalálni az egyszerű és szép megoldani a problémákat, minimális költséggel. Ebben a cikkben, akkor hozzon létre egy reális táj segítségével algoritmus «rombusz négyzet». Nem lesz hosszú húzott kézzel sziklás terepen, amely ennek eredményeként valószínűleg nagyon rossz. Ehelyett, köszönhetően a generációs fraktálok, megtanítjuk a számítógép, hogy mit jelent, hogy egy kő.

Heights Térkép

Mi fogja a táj, mint a magassága térkép - egy kétdimenziós tömb, amely információkat tartalmaz a magassága minden pont helyét x és y koordinátákat. Segítségével ez az egyszerű adat struktúrát, akkor láthatóvá magasságát, ahogy tetszik - Canvas, WebGL, stb A fő korlátozó tényező, hogy nem tudjuk megjeleníteni a függőleges lyukak a táj, mint a barlangok és alagutak.

Ez az algoritmus lehet alkalmazni, hogy a rács bármilyen méretű, de ez a legjobb megoldás a méret két Négyzetfok + 1 fogjuk használni ugyanazt az értéket a méret az x tengely. y és z. hivatalossá a táj egy kocka. Átalakítás részletesen mértékben kettesével + 1 úgy, hogy ha részletesebben nagyobb kockákra keletkezett.

Vegye ki a térre. Azt ossza meg másik négy négyzet, és eltávolítja a központok fel és le véletlenszerűen. Osszuk minden Több négyzetekre és ismételje újra és újra csökkenti a véletlenszerű eltolódás tartományban a kisebb tételek.

Ez az algoritmus «rombusz négyzet». A mi esetünkben ez némileg javítja egy reálisabb eredmény: egy tér felváltva négyzetekre osztva (négyzetek) és gyémánt (rombusz).

Állítsa be a szöget

Először telepíteni kell a sarkokat a kezdeti érték vetőmag, ami hatással lesz a többi megjelenítés. Az alábbi kódot emelni fogja az összes szög fele magasságában a kocka:

szakadék térkép

Most rekurzív nézni a kisebb körzetek magassága térképet. Minden osztály, akkor szét a térkép négyzetekre és frissíti a helyzet a középpont mindegyikük alatt «derékszögben» fázisban. Ezután elosztjuk a térkép gyémántok és frissítik középpontja a színpadon «gyémánt».

Egy változó szinten biztosítja, hogy a váltások mentén csökken a mennyisége megosztottságot. Minden osztály, megszorozzuk a jelenlegi mérete faktorral érdesség szabálytalanságokat. amely meghatározza sima terepen (értékek közel 0) vagy hegyes (érték körülbelül 1).

Mindkét forma (négyzet és rombusz) működnek ugyanazon az elven, hanem adatok megszerzésének különböző pontjairól. A téren, mielőtt a véletlen fáziseltolódás, azt látjuk, az átlagos négy sarokpont, valamint a fázis gyémánt - négy pont a széleit.

megjelenítés

Ez az algoritmus csak ad információt, hogy tudjuk már elképzelni sok. Itt össze több technikák létre egy izometrikus 3D-szkennelés vetítés tájegység térképe a hálóra.

visszafelé

Először létrehozunk egy beágyazott hurok, ami húzza a dobozokat a „hátsó része” a mi kártyák (y = 0) „előre» (y = this.size). akkor ugyanaz a ciklus fognak használni arra, hogy egy egyszerű sík, négyzet alakú.

A szerény megközelítés gyönyörű vizuális textúra. Összehasonlítjuk a jelenlegi magassága magassága a következő pont kiszámításához a lejtőn. És festeni élénkebb téglalapok a magasabb lejtőkön töltse ki az egyik oldalon a fény, és a többi - egy árnyék.

izometrikus

Vizuálisan érdekes lefordítani táj egy szakaszát «derékszögben» fázisában «gyémánt» mielőtt a 3D-s vetítés. Izometrikus csökkenti a bal felső és a jobb alsó sarkát a központ a képet.

Központi (perspektivikus) vetítési

Fogjuk használni, mint egy egyszerű 3D-vetítés konvertálni x értékei. y és z a képsíkban a kilátásba 2D-képernyőn.

A fő gondolata a perspektivikus vetítés, hogy külön a vízszintes és a függőleges helyzet, hogy a mélysége, így távolabbi objektumok tűnnek kisebb.

Üzembe össze

Hozzon létre egy új példányt a terep a szükséges részletességgel. Ezután generál magassága térkép értékű érdesség (érdessége) 0 és 1 közötti Végül át a tájat a rács.