Kezdőoldal » Számítástechnika » Programozás » Csillagrendszer legenerálása...

Csillagrendszer legenerálása hogyan?

Figyelt kérdés

Írtam egy kis játékot, de van egy probléma amit nem igazán tudok megoldani.


Legenerálok gömböket amik csillagok vagy bolygók, de mivel véletlenszerű koordinátákat kapnak ezért néha egymásba érnek, mivel a véletlenszerű koordinátájuk hasonló. Hogyan lehetne olyan algoritmust írni amivel meghatározható hogy ezek között a gömbök között legyen minimális és maximális távolság? Kód nem kell csak elmélet vagy valami módszertan amit tanulmányozhatok.


Itt egy kép: [link]


A probléma nem olyan egyszerű mivel kell egy minimális távolság a csillagtól de a bolygók holdjának és kell minimális távolság a bolygójától.



2015. nov. 26. 12:53
1 2 3
 11/25 anonim ***** válasza:

Logikus amit a 10-es ír. Ha hasonló távolságra lennének a naptól, akkor ütköznének és szétszóródnának a darabjaik, majd vagy egy nagyobb bolygó, vagy rakat törmelék lenne a helyükön.


Tehát valóban elég a folyamatos távolság növelés a naptól, plusz a szög véletlen választása.

2015. nov. 27. 11:26
Hasznos számodra ez a válasz?
 12/25 A kérdező kommentje:
Köszönöm a válaszokat, középen egy fekete lyuk van egyébként. Úgy oldottam meg amit linkeltem, ciklusban vizsgálom hogy a random pozíció elég messze van e egy másik csillagtól ha nem, generál újat. 1000 szer próbálja meg, ha nem sikerül megy a következőre. A bolygók elhelyezése már sokkal egyszerűbb. Ahogy előbbiek írták úgy lesz megoldva.
2015. nov. 27. 14:23
 13/25 anonim ***** válasza:

Ez így nem tűnik valami hatékonynak, de tetszik a megoldásod, gyakorlatiasságra utal.


Mondok még egy érdekes megoldást, ha mindenképpen Descartes koordinátába gondolkodol:


Leraksz mondjuk 100 x 100 csillagot egymástól 100-100 FÉ távolságra, így kapsz egy Grid-et. Ezen végig iterálsz és mindegyiket relatív eltolod [-45 -> +45] FÉ tartományban egy random számmal X és Y irányban is.


100% hoyg nem lesz ütközés, sőt legközelebb 10 FÉ lesz egymástól két csillag távolabb nem. A randomizálás miatt egyáltalán nem vehető ki a grid.


Igazából egyetlen ciklusban meg is lehet csinálni.

2015. nov. 27. 15:04
Hasznos számodra ez a válasz?
 14/25 anonim ***** válasza:
*távolabb helyett közelebbet akartam írni
2015. nov. 27. 15:04
Hasznos számodra ez a válasz?
 15/25 anonim ***** válasza:
Mire írod és mihez? Mesélsz róla egy picit? :)
2015. nov. 27. 15:29
Hasznos számodra ez a válasz?
 16/25 A kérdező kommentje:
Mindenki játékot akar csinálni aki Unity3dvel foglalkozik. De én azért nem vagyok ennyire nagyravágyó, egyenlőre csak tanulom. Ez a grides módszer nagyon tetszik, meg is csinálom, a mostani nagyon belassul ha túl sok csillag van, exponenciálisan növekszik a gép igény. Pl 1000 csillagnál halál. Mert az útsó csillagnak 999 másik csillaggal kell összevetni a távolságát, és ha nem jó még 1000 szer végigpróbálni. Gondolkoztam még abban is hogy RigidBody szimulációt csinálok bedobok egy csomó gömböt, utána meg egy rövid ideig egymáshoz húzom őket. De ez még nekem túl nehéz lenne. :)
2015. nov. 27. 21:10
 17/25 A kérdező kommentje:
Perlin noise se lenne rossz egyébként, abban is megvalósítható lenne. De egy fizikai szimuláció adná vissza legjobban a kívánt eredmény, ha még a végén kapna egy kis örvényt is.
2015. nov. 27. 21:19
 18/25 A kérdező kommentje:

Ilyen lett a grides módszerrel, nem a legjobb.


[link]


Persze túl közel vannak. Nem kör hanem négyzet alakú. :)

2015. nov. 27. 23:02
 19/25 anonim ***** válasza:

A rigid body szimulációval ágyúval lősz verébre, ennyi erővel az ősrobbanást is szimulálhatod :D


A grid megoldás majdnem jó, lehetne finomítani rajta, akkor jobban nézne ki. Ha mindenképpen kör kell akkor használj poláris koordináta rendszert, A módszer ugyan az. Távolodj el a középponttól fokozatosan és körbe tegyél le csillagokat kerület arányosan, aztán ezekre alkalmazz egy ditheringet (ahogy a grid-es megoldásnál)

2015. nov. 27. 23:18
Hasznos számodra ez a válasz?
 20/25 anonim ***** válasza:
Szerintem inkább próbálkozz simán a véletlenszám generátorral, majd a fényességüket is állítsd be véletlenszerűen, és legyenek kisebbek a csillagok.
2015. nov. 28. 02:38
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!