Gravitationsspiele
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006Betreff: Gravitationsspiele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier mal eine kleine Demo mit Gravitationsberechnungen. Ich habe hier nur noch ein Bewegungswiederstabd eingebaut (Im Weltraum natürlich nicht vorhanden). Damit entstehen seltsame Kometenartige Dinge.
Viel Spaß! Code: [AUSKLAPPEN] Graphics 1024,768,16,1 SetBuffer BackBuffer() Origin 512,384 q%=0 w%=0 xm#=0 ym#=0 xn#=0 yn#=0 dx#=0 dy#=0 fa%=0 st%=600 Dim xp#(st) Dim yp#(st) Dim xg#(st) Dim yg#(st) For q=1 To st xp(q)=Rnd(-120,120)+Rnd(-120,120) yp(q)=Rnd(-120,120)+Rnd(-120,120) ;xp(q)=(Rand(0,1)*800)+Rnd(-40,40) ;yp(q)=Rnd(-40,40) xg(q)=(+yp(q)/160) yg(q)=(-xp(q)/160) Next While Not KeyHit(1) xm=0 ym=0 For q=1 To st For w=1 To st If Not q=w Then dx=xp(q)-xp(w) dy=yp(q)-yp(w) sq#=0.01/(dx*dx+dy*dy) xg(q)=xg(q)-(dx*sq*1.2) yg(q)=yg(q)-(dy*sq*1.2) End If Next xg(q)=xg(q)*0.8 yg(q)=yg(q)*0.8 xp(q)=xp(q)+xg(q) yp(q)=yp(q)+yg(q) xm=xm+xp(q) ym=ym+yp(q) Next xn=xn+xm yn=yn+ym Color 24,24,24 For q=-512 To 512 Step 200 Rect -512,q-(yn/st) Mod 200,1024,1 Rect q-(xn/st) Mod 200,-512,1,1024 Next For q=1 To st xp(q)=xp(q)+xg(q)-(xm/st) yp(q)=yp(q)+yg(q)-(ym/st) fa=Abs(Sqr((xg(q)^2)+(yg(q)^2))) If fa>5 Then fa=5 Color 150+fa*20,50+fa*40,100-fa*10 Plot xp(q),yp(q) Next Flip 0 Cls Wend End |
||
- Zuletzt bearbeitet von hectic am Do, Apr 06, 2006 13:51, insgesamt einmal bearbeitet
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
sehr schön. Gefällt mir gut. Wird leider schon bei 1000 Objekten ganz schön lahm ![]() |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
hübsch anzusehen. Doch vielleicht wärs besser gewesen Writepixelfast anstatt plot zu nehmen. Plot ist ja ziemlich lahm, deswegen auch diese ruckligen Effekte. Mfg |
||
Deutscher Blitz Basic Chat |
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm ich habs noch mal mit writepixel gemacht, allerdings is das auch noch nich so doll (writepixelfast funzt bei mir nicht vllt ändert ihr euch das ab...)
BlitzBasic: [AUSKLAPPEN]
|
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leute, der Grund für die lahme Berechnung liegt eher nicht am Plot-Befehl. Dies ist eine abgeleitete Version einer Sternenbewegungsberechnung. Das bedeutet, daß jeder X und Y -Wert mit jedem der anderen Sterne berechnet werden muß. Die Anzahl der Berechnungen pro ansteigender Sternenzahl ist expotential!
Bei 600 Sternen wird der erste Stern mit den Positionen aller anderen Sterne verglichen, der Vektor berechnet, dessen Beschleunigung auf die alte Addiert/Subtraiert, und ausgegeben. Dann kommt der zweite Stern der sich die Position des ersten und der allen anderen vornimmt. usw, usw. Also: (Sternenanzahl ^ 2) - Sternenanzahl |
||
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Gravitationswirkung ist doch in einiger Entfernung fast 0. Wenn man nur Objekte in einem bestimmten Radius überprüft könnte das sicher einiges an Berechnungen einsparen. Wäre zwar nicht mehr 100% Akkurat, aber...naja, schneller ![]() Außerdem steigt es bei dieser formel (Sternenanzahl ^ 2) - Sternenanzahl Quadratisch an ![]() |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Triton,
daß mit der quadratischen Formel stimmt schon. Oder, ist das Verhalten des Exponenten nicht auch so??? Naja egal. Ich habe deinen Rat zur Tat gemacht und erstmal ein kleinen Geschwindigkeitstest durchgeführt. Hier das Ergebnis: 23825 Zeit, wenn Abgefragt wird und immer berechnet werden muß 14740 Zeit, wenn Abgefragt wird und nie berechnet werden muß 17710 Zeit, wenn immer nur berechnet wird ohne Abfrage Abgefragt habe ich so: If Not xp(q)>xp(w)+100 Or xp(q)<xp(w)-100 Or yp(q)>yp(w)+100 Or yp(q)<yp(w)-100 Then Daraus schließe ich, daß die Abfragen das ganze leider auch nicht schneller machen, da die Abfragen auch Zeit in Anspruch nehmen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group