Olen tekemässä pientä avaruuteen sijoittuvaa lentelypeliä ja pyrin toteuttamaan fysiikat niin, että ne olisivat mahdollisimman realistiset (mutta kuitenkin minun taidoillani).
Osaan varmaan toteuttaa fysikaaliset ominaisuudet avaruuteen tutkiskeltuani tarpeeksi, mutta teiltä haluaisin kysyä, että mimmoisia voimia, vaikutuksia ynm. minun pitäisi ottaa mukaan?
Ainut mitä minulle tulee mieleen on kappaleiden väliset vetovoimat.
Alukseen vaikuttavat voimat ovat vetovoimat (F=GMm/r^2) ja moottorin työntövoima. Kuitenkin planeetan lähellä voidaan jättää muiden taivaankappaleiden aiheuttamat vetovoimat huomioimatta ja planeettojen välisessä avaruudessa taas vaikuttaa riittävällä tarkkuudella vain tähden vetovoima.
Aluksen (ja planeettojen) radat ovat ellipsejä, joiden toisessa polttopisteessä on aurinko (ympyrä on ellipsin erikoistapaus ja aurinkokunnassamme planeettojen ratoja voidaan pitää ympyröinä). Ympyräradalla keskeiskiihtyvyys a=v^2/r. Kiertoaika ellipsiradalla on 2pi*√a^3/(GM), a on ellipsin pidemmän puoliakselin pituus (tai ympyrän säde), G gravitaatiovakio ja M kierrettävän taivaankappaleen massa. Ellipsiradalla aluksella on suurin nopeus kun se on lähinnä tähteä, v*r*cos a on vakio, missä a on nopeusvektorin ja radan tangentin välinen kulma, v nopeus ja r etäisyys tähdestä. Aluksen nopeus ellipsiradalla etäisyydellä r saadaan kaavasta
v^2 = GM(2/r-1/a)
missä a on ellipsin pidemmän puoliakselin pituus. Kun alus kiihdyttää nopeasti uuteen nopeuteen, voi yllä olevan kaavan avulla ratkaista uuden ellipsiradan tiedot. Uuden radan alin kohta on kiihdytyspiste, ja uusi pidempi puoliakseli saadaan ratkaisemalla tuosta kaavasta a.
Alus on ympyräradalla, kun sen nopeus on √GM/r
Nämä itse asiassa ovat seurauksia Newtonin peruslaeista, voima GMm/r^2 aiheuttaa kappaleelle keskeiskiihtyvyyden jne.
Kun alus kiihdyttää käyttäen moottoreitaan, sen massa pienenee polttoaineen vähetessä jolloin kiihtyvyys kasvaa (a=F/m), tätä tosin ei varmaan kannata huomioida (jos haluat, niin googleta Tsiolkovskin rakettiyhtälö).
Tässä oli jonkin verran avaruusfysiikan perusteita, lisää löytyy netistä ja suomeksi vaikka tästä. Toki on hauskaa yrittää mallintaa fysikaalista tilannetta mahdollisimman tarkasti, mutta loppujen lopuksi monia tässäkään esitettyjä asioita ei tarvitse huomioida tietokonepelissä. Toki voisit ottaa huomioon myös erityisen suhteellisuusteorian ja muuta kivaa, mutta suosittelen keskittymään pelin muihin osa-alueisiin ja toteuttamaan fysiikat siten, että ne nyt näyttävät suunnilleen realistisilta.
Helpoin tapa toteuttaa tuonkaltainen fysiikkamallinnus on voimien numeerinen arvointi painovoimalain (kaava 1) avulla. Sen jälkeen voimat muutetaan kiihtyvyyksiksi Newtonin peruslain F=ma avulla. Lopuksi kiihtyvyydet lisätään nopeuteen kaavalla 2.
1: voima = gravitaatiovakio * massa1 * massa2 / (etäisyys * etäisyys)
2: nopeusLopussa = nopeusAlussa + SUMMA(kiihtyvyydet) * ajanMuutos
PS. kaikki laskenta tehdään siis vektoreilla
PPS. optimointina voimat voidaan lisätä toisinsa ennen muuntamista kiihtyvyyksiksi
PPPS. koko systeemin laskennan aikakompleksiivissus on tällöin n^2
Kiitos, tässä taisi tulla kaikki tarpeellinen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.