| Autor |
Beitrag |
Tilo
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Do 15.01.04 16:05
Ähm,  Ich habe schon mal In Flash versuch das Sonnensystem darzustellen, bin dann aber beim Saturn bei den Moden Stecken geblieben(Zuviele Layers falls das jemanden etwas sagt  )
Nun probiere Ich es in Delphi, habe aber das Problem, das Merkur anfängt zu blinken
Hier ist der Code(  benötigt noch eine Timerkomponente mit Intervall:=1):
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151:
| unit Planeten_3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,OpenGl12, ExtCtrls,Planeten_2, StdCtrls;
type TPlanet = record Xpos,Zpos:extended; radius:integer; Xspeed,Zspeed:extended; Masse:extended; Name:string; red,green,blue:single; end; TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure InitGL; procedure SetDCPixelFormat(Handle: HDC); procedure Timer1Timer(Sender: TObject);
private public end;
var
Form1: TForm1; h_DC: hDC; hRC: HGLRC;
Planet: array[1..9] of TPlanet; xpos,ypos,zpos:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin form1.Resizing(wsmaximized); InitOpenGL; h_DC:=GetDC(Handle); SetDCPixelFormat(h_DC); hRC:=wglCreateContext(h_DC); wglMakeCurrent(h_DC,hRC); InitGL; xpos:=-1000; ypos:=0;zpos:=-5000; Planet[1].Name:='Merkur'; Planet[1].Xpos:=579; Planet[1].ZPos:=0; Planet[1].Zspeed:=47.9; Planet[1].XSpeed:=47.9; Planet[1].Masse:=0.34; Planet[1].red:=1; Planet[1].green:=0; Planet[1].blue:=1; Planet[1].radius:=22;
end;
procedure TForm1.InitGL; begin glClearColor(0,0,0,0); glClearDepth(1); glDepthFunc(GL_LESS); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST);
glViewport(0,0,Width,Height); glMatrixMode(GL_PROJECTION); glLoadIdentity; gluPerspective(45,Width/Height,1,100000); glMatrixMode(GL_MODELVIEW); end;
procedure TForm1.SetDCPixelFormat(Handle: HDC); var nPixelFormat: GLUint; const pfd: PIXELFORMATDESCRIPTOR = ( nSize: sizeof( PIXELFORMATDESCRIPTOR ); nVersion: 1; dwFlags: PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; iPixelType: PFD_TYPE_RGBA; cColorBits: 16; cRedBits: 0; cRedShift: 0; cGreenBits: 0; cBlueBits: 0; cBlueShift: 0; cAlphaBits: 0; cAlphaShift: 0; cAccumBits: 0; cAccumRedBits: 0; cAccumGreenBits: 0; cAccumBlueBits: 0; cAccumAlphaBits: 0; cDepthBits: 16; cStencilBits: 0; cAuxBuffers: 0; iLayerType: PFD_MAIN_PLANE; bReserved: 0; dwLayerMask: 0; dwVisibleMask: 0; dwDamageMask: 0 ); begin nPixelFormat:=ChoosePixelFormat(h_DC, @pfd); SetPixelFormat(h_DC,nPixelFormat,@pfd); end;
procedure TForm1.Timer1Timer(Sender: TObject); var a:integer; begin glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT); glLoadIdentity; gltranslate(xpos,ypos,zpos); glColor3f(1,1,0); glusphere(gluNewQuadric,350,100,100); for a:=1 to 9 do begin glPushMatrix; gltranslate(Planet[a].Xpos,0,Planet[a].Zpos); glColor3f(Planet[a].red,Planet[a].green,Planet[a].blue); glusphere(gluNewQuadric,Planet[a].radius,100,100); glpopMatrix; end; Planet[1].Xspeed:=Planet[1].Xspeed-(((6.67259*10E-11)*(1.99*10E+30*Planet[1].Masse*10E+24)/sqr(Planet[1].Xpos*10E+5))/(Planet[1].Masse*10E+24)/10000); if Planet[1].Xpos<0
then Planet[1].Xpos:=Planet[1].Xpos-Planet[1].XSpeed else Planet[1].Xpos:=Planet[1].Xpos+Planet[1].XSpeed; SwapBuffers(h_DC) end;
end. |
Probiert es mal aus  und sagt mir bitte  wie man das beheben kann.
Moderiert von Peter Lustig: Code- durch Delphi-Tags ersetzt und verschoben
Zuletzt bearbeitet von Tilo am Do 15.01.04 19:38, insgesamt 1-mal bearbeitet
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 15.01.04 16:08
Hallo!
Bitte ändere den Titel des Topics da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Delphi-Forum.de Richtlinien:
| Richtlinien hat folgendes geschrieben: |
1.1 Beiträge
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]
|
Einfach oben bei deinem ersten Beitrag auf "Edit" klicken und den Titel ändern. Dank Dir!
Gruß Peter Lustig
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Do 15.01.04 17:36
erstmal: im ontimer ereignis zu zeichnen ist seehr schlecht...
schau dir mal Application.onIdle an
ich schau mir den Qulltext gleich mal an...
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Do 15.01.04 19:41
@Peter Lustig: Geht der Titel jetzt?
@ Fiji-Fighter:
Ja, das weis Ich. Aber bei der OnIdle-Anweisung wird die Routine nur bei Unterbeschäftigung der CPU ausgeführt. Das möchte ich vermeinden.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 15.01.04 19:56
Hallo!
Wenn Du der Meinung bist, dass das Problem bei der Berechnung liegt, dann ist der Titel in Ordnung.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Do 15.01.04 20:19
| Tilo hat folgendes geschrieben: | | Ja, das weis Ich. Aber bei der OnIdle-Anweisung wird die Routine nur bei Unterbeschäftigung der CPU ausgeführt. Das möchte ich vermeinden. |
es ist aber allemal besser, als wenn du es im onTimer-Ereignis machst...
das kann zu vielen Komplikationen führen...
die OnIdle-MEthode funktioniert wunderbar und wird auch von Spielen eingesetzt die wirklich gut sind 
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Do 15.01.04 20:51
 Ok Ich werds umstellen.
Aber das war ja nicht mein Problem 
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Do 15.01.04 21:00
also bei mir funktioniert der Quelltext nicht, wenn ich ihn in ein Projekt ienfüge und einen Timer hineinsetze und die ontiemr-prozedur entsprechend verweise
ich könnte mir vorstellen, dass es etwas mit der NearClippingplane und der entfernung des MErkur zu tun hat :/
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Fr 16.01.04 22:25
Also ich habe mal den Code komplett überarbeitet und gehe jetzt über Winkelsätze an die Sache an.
Beim erstren Verfahren liegt das gleiche Problem vor, wie wenn ein Sprinter von einem Pfeil verfolgt, man muss die Entfernungen über (hier lineare) Funktionen berechnen und nicht schrittweise. Vielleicht kennt einer die Geschichte die ich meine, ansonsten ist dieser Absatz Nonsens
Wenn Ihr mir erklärt, wei man eine Zip hoch ladet, werd Ich mal die Compilierte Exe samt Code "hergeben". Hier ist schon mal der Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276:
| unit Planeten_1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,OpenGl12, ExtCtrls, StdCtrls;
type TPlanet = record Xpos,Zpos:extended; radius:integer; Xspeed,Zspeed:extended; Masse:extended; Name:string; red,green,blue:single; Tage:extended; end; TForm1 = class(TForm) mLeft: TButton; mRight: TButton; mZoomout: TButton; mZoomin: TButton; procedure FormCreate(Sender: TObject); procedure InitGL; procedure DrawScene; procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); procedure SetDCPixelFormat(Handle: HDC); procedure mLeftClick(Sender: TObject); procedure mRightClick(Sender: TObject); procedure mZoomoutClick(Sender: TObject); procedure mZoominClick(Sender: TObject);
private public end;
var Form1: TForm1; h_DC: hDC; hRC: HGLRC; Sonne:TPlanet; Planet: array[1..9] of TPlanet; xpos,ypos,zpos:integer; c,d:integer; break:boolean; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin c:=0; d:=10; break:=false; form1.Resizing(wsmaximized); InitOpenGL; h_DC:=GetDC(Handle); SetDCPixelFormat(h_DC); hRC:=wglCreateContext(h_DC); wglMakeCurrent(h_DC,hRC); InitGL; xpos:=-1000; ypos:=0;zpos:=-5000; Planet[1].Name:='Merkur'; Planet[1].Xpos:=579; Planet[1].ZPos:=0; Planet[1].Zspeed:=47.9; Planet[1].XSpeed:=-47.9; Planet[1].Masse:=0.34; Planet[1].red:=1; Planet[1].green:=0; Planet[1].blue:=1; Planet[1].radius:=22; Planet[1].Tage:=88; Planet[2].Name:='Venus'; Planet[2].Xpos:=1082; Planet[2].ZPos:=0; Planet[2].Zspeed:=35; Planet[2].XSpeed:=0; Planet[2].Masse:=4.87; Planet[2].red:=1; Planet[2].green:=0.5; Planet[2].blue:=0; Planet[2].radius:=54; Planet[2].Tage:=225; Planet[3].Name:='Erde'; Planet[3].Xpos:=1490; Planet[3].ZPos:=0; Planet[3].Zspeed:=29.8; Planet[3].XSpeed:=0; Planet[3].Masse:=5.97; Planet[3].red:=0; Planet[3].green:=0; Planet[3].blue:=1; Planet[3].radius:=57; Planet[3].Tage:=365.26; Planet[4].Name:='Mars'; Planet[4].Xpos:=2279; Planet[4].ZPos:=0; Planet[4].Zspeed:=24.1; Planet[4].XSpeed:=0; Planet[4].Masse:=0.64; Planet[4].red:=1; Planet[4].green:=0; Planet[4].blue:=0; Planet[4].radius:=30; Planet[4].Tage:=697.24; Planet[5].Name:='Jupiter'; Planet[5].Xpos:=7783; Planet[5].ZPos:=0; Planet[5].Zspeed:=13.1; Planet[5].XSpeed:=0; Planet[5].Masse:=1900; Planet[5].red:=0; Planet[5].green:=1; Planet[5].blue:=1; Planet[5].radius:=332; Planet[5].Tage:=4331.64; Planet[6].Name:='Saturn'; Planet[6].Xpos:=14270; Planet[6].ZPos:=0; Planet[6].Zspeed:=9.6; Planet[6].XSpeed:=0; Planet[6].Masse:=569; Planet[6].red:=0.5; Planet[6].green:=0.5; Planet[6].blue:=0.5; Planet[6].radius:=270; Planet[6].Tage:=10757.8; Planet[7].Name:='Uranus'; Planet[7].Xpos:=28696; Planet[7].ZPos:=0; Planet[7].Zspeed:=6.8; Planet[7].XSpeed:=0; Planet[7].Masse:=87; Planet[7].red:=1; Planet[7].green:=1; Planet[7].blue:=0.5; Planet[7].radius:=114; Planet[7].Tage:=30684.16; Planet[8].Name:='Neptun'; Planet[8].Xpos:=44967; Planet[8].ZPos:=0; Planet[8].Zspeed:=5.4; Planet[8].XSpeed:=0; Planet[8].Masse:=103; Planet[8].red:=0.5; Planet[8].green:=1; Planet[8].blue:=0.5; Planet[8].radius:=111; Planet[8].Tage:=60191.36; Planet[9].Name:='Pluto'; Planet[9].Xpos:=59000; Planet[9].ZPos:=0; Planet[9].Zspeed:=4.7; Planet[9].XSpeed:=0; Planet[9].Masse:=0.013; Planet[9].red:=0; Planet[9].green:=0.5; Planet[9].blue:=0; Planet[9].radius:=10; Planet[9].Tage:=90469.28; Application.OnIdle := ApplicationEvents1Idle; end;
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean); begin DrawScene; Done:=False; end;
procedure TForm1.DrawScene; var a,b:integer; begin glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT); glLoadIdentity; gltranslate(xpos,ypos,zpos); glColor3f(1,1,0); glusphere(gluNewQuadric,350,100,100); for a:=1 to 9 do begin glpushMatrix; Planet[a].Xpos:=sin(360/Planet[a].Tage*c)*Planet[a].radius*100; Planet[a].Zpos:=cos(360/Planet[a].Tage*c)*Planet[a].radius*100; glColor3f(Planet[a].red,Planet[a].green,Planet[a].blue); gltranslate(Planet[a].Xpos,0,Planet[a].Zpos); glusphere(gluNewQuadric,Planet[a].radius,100,100); glPopMatrix; end; c:=c+1; SwapBuffers(h_DC);
end;
procedure TForm1.InitGL; begin glClearColor(0,0,0,0); glClearDepth(1); glDepthFunc(GL_LESS); glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST);
glViewport(0,0,Width,Height); glMatrixMode(GL_PROJECTION); glLoadIdentity; gluPerspective(45,Width/Height,1,100000); glMatrixMode(GL_MODELVIEW); end;
procedure TForm1.SetDCPixelFormat(Handle: HDC); var nPixelFormat: GLUint; const pfd: PIXELFORMATDESCRIPTOR = ( nSize: sizeof( PIXELFORMATDESCRIPTOR ); nVersion: 1; dwFlags: PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER; iPixelType: PFD_TYPE_RGBA; cColorBits: 16; cRedBits: 0; cRedShift: 0; cGreenBits: 0; cBlueBits: 0; cBlueShift: 0; cAlphaBits: 0; cAlphaShift: 0; cAccumBits: 0; cAccumRedBits: 0; cAccumGreenBits: 0; cAccumBlueBits: 0; cAccumAlphaBits: 0; cDepthBits: 16; cStencilBits: 0; cAuxBuffers: 0; iLayerType: PFD_MAIN_PLANE; bReserved: 0; dwLayerMask: 0; dwVisibleMask: 0; dwDamageMask: 0 ); begin nPixelFormat:=ChoosePixelFormat(h_DC, @pfd); SetPixelFormat(h_DC,nPixelFormat,@pfd); end;
procedure TForm1.mLeftClick(Sender: TObject); begin xpos:=xpos+100; end;
procedure TForm1.mRightClick(Sender: TObject); begin xpos:=xpos-100; end;
procedure TForm1.mZoomoutClick(Sender: TObject); begin zpos:=zpos-100; end;
procedure TForm1.mZoominClick(Sender: TObject); begin zpos:=zpos+100; end;
end. |
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 16.01.04 22:41
Hallo!
Ist Dein Problem die Berechnung der Planetenbahnen oder die Darstellung? Wenn es die Berechung ist:
Um die Planetenbahnen korrekt auszurechnen, musst Du ein Differentialgleichungssystem lösen (Stichwort: Kepler-Problem). Dies kannst Du beispielsweise mit einem Runge-Kutta-Verfahren machen.
Bei der Darstellung kann ich Dir leider nicht helfen.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Sa 17.01.04 15:28
@ Peter Lustig: Also mit der darstellung habe Ich kein Problem.
Ich werde mal nachschlagen was Du meinst.
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Sa 17.01.04 18:42
ich denke dass für Planeten in diesem Fall eine einfache Kraisbahn um ein Zentralgestirn völlig ausreicht...
komme allerdings frühestens heut NAcht dazu das zu testen, weil ich jetzt noch weg muss 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 17.01.04 18:49
Hallo!
Das kommt drauf an, wie exakt das sein muss. Ich habe die Diff.gleichung mal in C++ numerisch gelöst. Da kommt schon was anderes als Kreisbahnen raus. (Habe es auch noch Delphi portiert, als Demo für 'ne Mathlib, aber die ist noch nicht reif für die Öffentlichkeit)
Was man aber machen könnte, wäre, die große und die kleine Halbachse nachzuschlagen (für jeden Planeten) und dann die Ellipsenbahn berechnen. Dann hat man zwar nur eine Näherung und weiß auch nicht, ob die Ausrichtung der einzelnen Ellipsen zu einander korrekt ist, aber es sieht zumindest schonmal besser aus.
MfG
Peter
edit: ach ja, und die Planeten bewegen sich ja nicht alle in der Ekliptik!
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Sa 17.01.04 23:50
dann sollte der Topicersteller am besten mal sagen, ob ihm Kreisbahnen reichen 
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: So 18.01.04 10:09
@Fiji-Fighter:
Ich würde gerne annähernd reelle Planetenbahnen haben, aber Kreisbahnen tun es auch. Im zweiten Code, den Ich gepostet habe habe ich auch perfecte Kreisbahnen für die Planeten gewählt und die Positionen per Cosinus und Sinus berechnet.
@ Peter Lustig:
Kannst Du mir bitte sagen, wo ich Informationen zum Kepler Problem und dem Runge-Kutta-Verfahren erhalte?
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: So 18.01.04 11:08
Hallo!
Das Kepler-Problem kann ich Dir schnell selbst beschreiben: Du hast 9 Planeten plus die Sonne. Monde lassen wir mal weg.
Jeder dieser Körper hat zu einem beliebigen Zeitpunkt eine bestimmte Koordinate im Raum und eine bestimmte Geschwindigkeit. Nun wirkt die Schwerkraft jedes Körpers auf jeden anderen nach dem Newton'schen Gravitationsgesetz. Dieses enthält sowohl die zweite Ableitung des Ortes (die Beschleunigung) als auch den Ort selbst (in der Entfernung und so ...). Damit ist das eine Differentialgleichung. Soweit ich weiß ist diese analytisch aber nur noch bei zwei (oder waren es drei?) Körpern lösbar. Mit 10 auf gar keinen Fall mehr.
Eine solche Differentialgleichung löst man numerisch mit einem ODE-Solver. (ODE = Ordinary Differential Equation). Ein solcher ODE-Solver ist das Runge-Kutta-Verfahren. Es gibt aber noch andere, Runge-Kutta ist nur sehr beliebt. Implementationen davon sollten im Netz zu finden sein. Wahrscheinlich aber im Fortran, C oder C++.
Du solltest Dir die Frage stellen, was Du mit Deinem Programm genau erreichen möchtest! Brauchst Du wirklich die exakten Planetenpositionen, wie sie wirklich am Himmel sind oder brauchst Du einfach nur eine Veranschaulichung der Bahnen?
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Mo 19.01.04 16:20
@ Peter Lustig:
Mir würde es schon genügen, wenn die Planetenbahnen kreisrund oder elliptisch wären. Es genügt, wenn die Planeten sich um die Sonne Bewegen und es Modellhaft nach unserem hiesigen Sonnensystem aussieht. Die Genauigkeit spielt dabei eine untergeordnete Rolle.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 19.01.04 18:30
Hallo!
Dann kannst Du Dir das Ganze mit Kepler und Runge-Kutta sparen. Eine Kreis- oder Ellipsenbahn ist ja einfach zu berechnen.
MfG
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Di 20.01.04 13:54
Ok,
Ich werde das Programm zu Ende programmieren und kreise als Bahnen verwenden.
|
|
|