Sisällysluettelo:

Aurinkokuntasimulaatio: 4 vaihetta
Aurinkokuntasimulaatio: 4 vaihetta

Video: Aurinkokuntasimulaatio: 4 vaihetta

Video: Aurinkokuntasimulaatio: 4 vaihetta
Video: Pyörimisliike avaruudessa (simulaatio) 2024, Heinäkuu
Anonim

Tätä hanketta varten päätin luoda simulaation siitä, kuinka painovoima vaikuttaa planeetan kappaleiden liikkeeseen aurinkokunnassa. Yllä olevassa videossa / aurinkokuntaa edustaa metalliverkko, ja planeetat syntyvät sattumanvaraisesti.

Planeettojen liike perustuu todelliseen fysiikkaan, universaalin painovoiman lakiin. Tämä laki määrittelee toisen massan painovoiman, joka kohdistuu massaan; tässä tapauksessa aurinko kaikilla planeetoilla ja planeetat toisillaan.

Tässä projektissa käytin Processingia, javapohjaista ohjelmointiympäristöä. Käytin myös Processing -esimerkkitiedostoa, joka simuloi planeettojen painovoimaa. Tarvitset vain prosessointiohjelmiston ja tietokoneen.

Vaihe 1: 2 ulottuvuussimulaatio

Aloitin katsomalla joitain videoita siitä, miten koodata tätä, jonka Dan Shiffman loi YouTube -kanavallaan, Coding Train (osa 1/3). Tässä vaiheessa ajattelin, että käytän rekursiota aurinkokunnan tuottamiseen, samalla tavalla kuin Shiffman tekee vain käyttämällä fysiikan lakeja.

Luin planeettaobjektin, jossa oli "lapsiplaneettoja", joilla puolestaan oli myös "lapsiplaneetteja". 2D -simulaation koodi ei ollut valmis, koska minulla ei ollut hienoa tapaa simuloida kunkin planeetan painovoimia. Käännyin tästä ajattelutavasta suuntaan, joka perustuu gravitaatiovoiman sisäänrakennettuun käsittelyesimerkkiin. Ongelmana oli, että minun piti laskea kaikkien muiden planeettojen painovoima jokaisella planeetalla, mutta en voinut ajatella, miten yksittäisen planeetan tiedot voitaisiin ottaa helposti. Nähtyäni kuinka Processing -opetusohjelma tekee sen, ymmärsin tarkalleen, miten se tehdään silmukoiden ja matriisien avulla

Vaihe 2: Kolmen ulottuvuuden ottaminen

Käsittelyn mukana tulevan Planetary Attractionin esimerkkikoodin avulla aloitin uuden 3D -simulointiohjelman. Suurin ero on Planet -luokassa, johon lisäsin vetovoimatoiminnon, joka laskee kahden planeetan välisen painovoiman. Tämä antoi minulle mahdollisuuden simuloida aurinkokuntamme toimintaa, jossa planeetat eivät vain houkuttele aurinkoa, vaan myös kaikki muut planeetat.

Jokaisella planeetalla on satunnaisesti luotuja ominaisuuksia, kuten massa, säde, kiertoradan alkunopeus jne. Planeetat ovat kiinteitä palloja ja aurinko on metalliverkko. Lisäksi kameran sijainti pyörii ikkunan keskikohdan ympäri.

Vaihe 3: Käytä todellisia planeettoja

Image
Image

Kun sain 3D -simulaation kehyksen alas, löysin Wikipedian avulla aurinkokuntamme todelliset planeetatiedot. Luin joukon planeettaobjekteja ja syötin todellisia tietoja. Kun tein tämän, minun piti pienentää kaikki ominaisuudet. Kun tein tämän, minun olisi pitänyt ottaa todelliset arvot ja kertoa kertoimella arvojen pienentämiseksi, sen sijaan tein sen maapallon yksiköinä. Eli otin suhde Maan arvo muiden kohteiden arvoon, esimerkiksi Auringolla on 109 kertaa enemmän massaa kuin Maalla. Tämä johti kuitenkin siihen, että planeettojen koot näyttivät liian suurilta tai liian pieniltä.

Vaihe 4: Viimeiset ajatukset ja kommentit

Jos jatkaisin työskentelyä tämän simulaation parissa, tarkentaisin/parantaisin muutamia asioita:

1. Ensin skaalaan kaiken tasaisesti käyttäen samaa skaalaustekijää. Parantaakseni sitten kiertoratojen näkyvyyttä lisäisin reitin jokaisen planeetan taakse nähdäkseni kuinka jokainen vallankumous verrataan edelliseen

2. Kamera ei ole vuorovaikutteinen, mikä tarkoittaa, että osa kiertorajoista on pois näytöstä, "henkilön takana". On 3D -kamerakirjasto nimeltä Peazy Cam, jota käytetään Coding Train -videosarjan osassa 2 tästä aiheesta. Tämän kirjaston avulla katsoja voi kiertää, panoroida ja zoomata kameraa siten, että he voivat seurata planeetan koko kiertorataa.

3. Lopuksi, planeetat ovat tällä hetkellä erottamattomia toisistaan. Haluaisin lisätä "nahat" jokaiselle planeetalle ja auringolle, jotta katsojat voivat tunnistaa maan ja vastaavat.

Suositeltava: