soodan sivut

arkisto

238 kirjotelmaa.

avainsanat

Kaivoin arkistosta tälläisen huvin vuoksi. Olipa kerran pakko kärsiä eli koodata Javaa kokonaisen ohjelmointikurssin harkkatyön verran. Onneksi ei ollut sentään ryhmätyö, vaan sai tunkata melkein vikana iltana kaiken (kunhan oli tehnyt jo pelkkään suunnitelmatapaamiseen suunnilleen kaiken tarvitun, kun lähti mopo käsistä). Tein aurinkokuntasimulaattorin, eli N-body-integraattorin.

Simulaattorissa (Gravitoni: Graafinen Aurinkokunnan Visualisaattori Tosi Nätisti Integroiden) pyöritellään N:ää konffitiedostossa säädettyä kappaletta toisiinsa nähden siten, että maailman tila on yhdessä isossa tilavektorissa jolle integroidaan uusi tila yhden ison derivaattavektorin avulla (noh, kuinkas muutoin sen tekisi). Pääintegraattorina on RK4 koska se on kai suht hyvä ja vieläpä aika helppo toteuttaa. Verlet löytyy näköjään myös. Törmäyksetkin hallitaan jollain lailla.

Konffitiedostossa (joka on ihan kiva rekursiivisista blokeista koostuva hässäkkä, ikäänkuin xml mutta mukavammalla syntaksilla) voidaan speksata taivaankappaleiden parametrit ja muuta mukavaa. Koska halusin systeemistä todenmukaisen, implementoin parametrien lukemisen ns. Kepler-koordinaateista. Toteutus oli jotenkin epämukavaa kun muistaakseni tuosta sai etsiä detskut pienten kivien alta.

Kappaleista on mukana konffitiedosto, jossa on meille tutun aurinkokunnan möllykät. Näistä voi säätää minkä tahansa origoksi siten, että muiden liike nähdään suhteessa tähän koordinaatisto-origoon. Myöskin jokainen aika-askeleen tila talletetaan, jolloin historiaa voi kelata taaksepäin (ja muistinkäyttö paisuu niinkuin javasoftalla ihan normaalisti.)

Käyttöliittymä on tollanen OpenGL-ikkuna, jota voi pyöritellä ja jossa voi lennellä mielivaltaisesti ympäriinsä. Muistaakseni komentorivimoodikin löytyy jolla historiat voi dumpata tekstitiedostoon, jonka sitten voi syöttää vaikka Gnuplotille.

github.

0 kommenttia

Oma kommenttisi

Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.

Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.

Hölmöt kommentit saatetaan moderoida pois jälkikäteen.

Nimimerkki:

Spammibottiesto: Mikä on nollan ja viiden summa? (vastaus numeroina)