Gå til innhold

Har laget en simulator! Ta en titt


pululf

Anbefalte innlegg

Hei!

 

Jeg har knotet rundt med Cinema 4D's Xpresso, og har klart å lage en simulator for bevegelser i verdensrommet :D

 

Det er slik at de røde prikkene er små ting, og den store sirkelen er en planet. Prikkene påvirker hverandre med gravitasjonskrefter, og det samme gjør planeten. Så beveger planeten seg i nærheten av skyen med prikker, og se hva som skjer...

Se filmen hos Youtube

 

 

Her er systemet bak det hele. Det kan med enkelthet endres for å simulere andre scenarier.

post-123991-1260578909_thumb.jpg

Lenke til kommentar
Videoannonse
Annonse

khaffner: Takk!

Aquabat: Nei, laget den fordi jeg prøver å lære meg Xpresso, og fordi jeg liker simulatorer... Og verdensrommet :D

Egentlig prøvde jeg å lage en simulator for å simulere hvordan stjerner samlet seg i clusters, men dette ble veldig krevende av dataen, siden jeg bør ha minst 1000 stjerner for en slik simulasjon... Den du ser i videoen har bare 100 partikler (de røde prikkene)

Lenke til kommentar

Ang. 1000 stjerner - vil tro det bør være mulig (ikke real-time, seff) å kode opp noe slik ganske greit med et raskere språk slik som f.eks. C++ (burde kanskje også være velegnet for grafikkort-programmering (CUDA)?). Da kan du kanskje også "blokke opp" rommet, slik at om du har to grupper med stjerner som er langt fra hverandre, så regner du ikke på enkelt-kreftene mellom dem, men på kraften mellom gruppene som én kraft, og så de interne kreftene ved siden av... Antall krefter som må regnes på er vel 1/2 N^2 !

 

Forøvrig: Vakkert! Om du lager et slikt C++ program, så kan du sikkert få det til å dumpe til fil, og så lese den med det fancy tegne/regne-programmet ditt :)

 

Hvordan velger du initialtilstanden?

Endret av kyrsjo
Lenke til kommentar

Hmm, kan nok ikke C++ :(

Har prøvd å lære meg programmering flere ganger, men jeg trenger noe visuelt å jobbe med, og der da er Xpresso bra.

Jeg velger initialtilstanden med en såkalt "Pdraw". Med den kan jeg lage en kule med partikler inni, og selv bestemme radien til kulen, og hvor mange partikler som skal være inni.

Lenke til kommentar
Dvs. du fordeler dem tilfeldig innenfor en kule? Hvordan velges initialhastigheten?

 

Om du vil lære "skikkelig" programmering, er Python en fin inngangsport :)

 

De har egentlig ikke initialhastighet, men hvis jeg vil så kan jeg gi dem det.

Det er flere forskjellige måter å lage partiklene på jeg kan for eksempel ha en emitter som skyter dem ut, eller jeg kan plassere dem på overflaten av et objekt, eller inne i objektet.

Lenke til kommentar
Har du prøvd å modelere solsystemet? Sånn at du får stabile baner osv. Det hadde vært virkelig imponerende.

 

Det kunne jeg enkelt ha fått til. Hvis jeg fikk litt informasjon om avstander fra solen, masser og banefarter, hadde det bare vært å plotte informasjonen inn i Xpresso-arket :)

Så kan jeg jo goså simulere hva som ville skjedd hvis en ekstrem massiv ting kom farende gjennom solsystemet.

Lenke til kommentar
Har du prøvd å modelere solsystemet? Sånn at du får stabile baner osv. Det hadde vært virkelig imponerende.

 

Det kunne jeg enkelt ha fått til. Hvis jeg fikk litt informasjon om avstander fra solen, masser og banefarter, hadde det bare vært å plotte informasjonen inn i Xpresso-arket :)

Så kan jeg jo goså simulere hva som ville skjedd hvis en ekstrem massiv ting kom farende gjennom solsystemet.

wolframalpha er din venn.

f.eks. Jupiter

Lenke til kommentar
Har du prøvd å modelere solsystemet? Sånn at du får stabile baner osv. Det hadde vært virkelig imponerende.

 

Det kunne jeg enkelt ha fått til. Hvis jeg fikk litt informasjon om avstander fra solen, masser og banefarter, hadde det bare vært å plotte informasjonen inn i Xpresso-arket :)

Så kan jeg jo goså simulere hva som ville skjedd hvis en ekstrem massiv ting kom farende gjennom solsystemet.

wolframalpha er din venn.

f.eks. Jupiter

 

Hey, jeg går tross alt fysikk 2, så jeg trenger ikke hjelp med å finne informasjon om slikt :p Jeg hadde aldri klart å lage denne simulatoren uten litt fysikkkunnskaper uansett... Tror det brude vært mulig å lage en simulator for magnetfeltlinjer også.. hmmm :hmm:

 

EDIT: Driver for tiden og oppgraderer partikkelsystemet i simulatoren, slik at når to partikler kommer nærme nok hverandre, vil de gå sammen til én partikkel som har massen, farten, retningen og spinnen til de to andre partiklene. Men jeg har litt problemer, for måten jeg må gjøre det på er litt kronglete... Først drepe de to partiklene, og så rett etterpå emitte en ny partikkel mitt mellom der de to andre ble drept. Men jeg kan ikke få emitteren min til å fungere skikkelig, og det er ikke enkelt å forsinke signalet til emitteren slik at den ikke drepes sammen med de to andre partiklene. Men jeg skal få det til!

Endret av pululf
Lenke til kommentar

Fancy!

Jeg laget noen liknende greier i python. Litt kjedeligere grafikk og slikt, og kjører ikke på langt nær så rask.

 

Jeg genererte punkter utfra en gaussfordeling i x- og y-aksene, og itererte gjennom alle partiklene for å regne ut krefter. Som kyrsjo sier, det tar tiiid.

Lenke til kommentar
Fancy!

Jeg laget noen liknende greier i python. Litt kjedeligere grafikk og slikt, og kjører ikke på langt nær så rask.

 

Jeg genererte punkter utfra en gaussfordeling i x- og y-aksene, og itererte gjennom alle partiklene for å regne ut krefter. Som kyrsjo sier, det tar tiiid.

 

Rart at det tar lengre tid slik du gjør det, enn slik jeg gjør det... Hos meg har de jo en ekstra dimesnsjon å regne på. Simuleringen i videoen er på 100 partikler, men hvis jeg øker den til f. eks. 200, så simulerer den mye treigere... Da må den jo tross alt regne ut kreftene på dobbelt så mange partikler, og hver eneste partikkel har 200 krefter som skal regnes på...

Lenke til kommentar
Fancy!

Jeg laget noen liknende greier i python. Litt kjedeligere grafikk og slikt, og kjører ikke på langt nær så rask.

 

Jeg genererte punkter utfra en gaussfordeling i x- og y-aksene, og itererte gjennom alle partiklene for å regne ut krefter. Som kyrsjo sier, det tar tiiid.

 

Det finnes en ganske tøff real-time 3D-plottepakke for python. Husker dog ikke hvordan den funker.

 

Forøvrig: Bruker du Euler, eller Runge-Kutta 4. orden?

 

Python er også treigt i tighte løkker...

Lenke til kommentar
http://kornelix.squarespace.com/galaxy/

 

Dette er en lignende simulator, den talker greit noen tusen stjerner.

 

Resultatene er ganske stilige, en helt tilfeldig stjerneklynge utvikler seg til en spiral galakse.

 

Den kjører kun på linux, men regner med at det er flere her som kjører det.

 

Kult. Jeg ville likt å se hvordan de taklet problemet med partikler som blir slynget vekk.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...