Sisällysluettelo:
- Vaihe 1: 2 ulottuvuussimulaatio
- Vaihe 2: Kolmen ulottuvuuden ottaminen
- Vaihe 3: Käytä todellisia planeettoja
- Vaihe 4: Viimeiset ajatukset ja kommentit
Video: Aurinkokuntasimulaatio: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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:
DIY Raspberry Pi Downloadbox: 4 vaihetta
DIY Raspberry Pi Downloadbox: Löydätkö usein itsesi lataamasta suuria tiedostoja, kuten elokuvia, torrentteja, kursseja, TV -sarjoja jne., Niin tulet oikeaan paikkaan. Tässä Instructable -ohjelmassa muuttaisimme Raspberry Pi zero -laitteemme latauskoneeksi. Joka voi ladata minkä tahansa
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): 8 vaihetta
Akustinen levitaatio Arduino Unon kanssa Askel askeleelta (8 vaihetta): ultraäänikaiuttimet L298N DC-naarasadapterin virtalähde urospuolisella dc-nastalla ja analogiset portit koodin muuntamiseksi (C ++)
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: 3 vaihetta
4G/5G HD -videon suoratoisto DJI Dronesta alhaisella latenssilla [3 vaihetta]: Seuraava opas auttaa sinua saamaan live-HD-videovirtoja lähes mistä tahansa DJI-dronesta. FlytOS -mobiilisovelluksen ja FlytNow -verkkosovelluksen avulla voit aloittaa videon suoratoiston droonilta
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite
4 vaihetta akun sisäisen vastuksen mittaamiseksi: 4 vaihetta
4 vaihetta akun sisäisen vastuksen mittaamiseksi: Tässä on 4 yksinkertaista vaihetta, joiden avulla voit mitata taikinan sisäisen vastuksen