Orbital inclination Problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Shaggy82

Betreff: Orbital inclination Problem

BeitragMo, Jul 28, 2014 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe ein Problem bei einer Berechnung. könnte mir einer bei der Lösung behilflich sein ?

mein Problem ich möchte über sin & cos die X/Y/Z Positionen des Planeten um die Sonne bestimmen.
Gegeben ist der Abstand zur Sonne, sowie der Yaw & Pitch Winkel in Relation zur Sonne.

Es sieht so aus als ob der Planet die erste Teilstrecke von 180 Grad korrekt berechnet.
Dann aber einen komischen Sprung macht.

Ich bin mir im klaren darüber das man dieses Problem durchaus mit Pivots lösen kann. Benötige aber die Berechnung für ein Server Projekt das ich in Blitz+ aufsetzten möchte.

mfg

Norbert

Code: [AUSKLAPPEN]
Graphics3D 640, 480
SetBuffer BackBuffer()
Wireframe 1

camera = CreateCamera()
PositionEntity camera ,0,0,-10

light = CreateLight(2)
RotateEntity light, 90, 0, 0
PositionEntity light, 0, 10, 10

Sonne = CreateSphere(8)
PositionEntity Sonne, 0, 0, 0

Planet = CreateSphere(16)

Global Planet_Abstand_Sonne# = 5.0
Global pitch# = -45
Global yaw# = 0



Global Orbital_inclination = 1


While Not KeyHit(1)
yaw# = yaw# + 0.5

If Orbital_inclination = 1 Then


; Planet Rotation um Stern



   

   ist_yaw# =  (yaw Mod 360)
   
   p_weg# = (ist_yaw  * 100.0) / 360.0
   
   winkelWeg# = (2*pitch#)
   If winkelWeg# < 0 Then winkelWeg# = -1 * winkelWeg#
   
   soll_pitch# = -(winkelWeg#/2) + (p_weg# *(winkelWeg#*2))/100
   
   If ist_yaw# > 180.0 Then
   
   soll_pitch# = -(winkelWeg#/2) - (p_weg# *(winkelWeg#*2))/100
   EndIf
   

EndIf



      


      ny#=Sin(soll_pitch# )/Cos(soll_pitch# )
      nx#=Sin(yaw)
         nz#=Cos(yaw)
         
         
           If Abs(soll_pitch# )=90 Then
            nx=0
            ny=Sgn(soll_pitch# )
            nz=0
            EndIf
         
      ; normalize vector
      factor# =Sqr(nx*nx+ny*ny+nz*nz)
      nx=nx/Abs(factor)
      ny=ny/Abs(factor)
      nz=nz/Abs(factor)
         
   PositionEntity Planet,nx*Planet_Abstand_Sonne#,ny*Planet_Abstand_Sonne#,nz*Planet_Abstand_Sonne#








   RenderWorld
   Flip
Wend
End

Xeres

Moderator

BeitragDi, Jul 29, 2014 5:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Kreisrunde bahnen sind zwar wenig realistisch, aber für ellipsoide habe ich keine Formel parat.
Code: [AUSKLAPPEN]
X = OrigX + Radius * Cos( Pitch ) * Cos( Yaw )
Y = OrigY + Radius * Sin( Yaw )
Z = OrigZ + Radius * Sin( Pitch ) * Cos( Yaw )

"Orig" = Mittelpunkt
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Shaggy82

BeitragDi, Jul 29, 2014 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, Xeres.

Ich werde es heute abend ausprobieren.

Nochmals danke und ich wünsche noch einen schönen Tag.

mfg norbert
 

Shaggy82

BeitragDi, Jul 29, 2014 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Xeres,

wenn ich den Radius auf einer Achse Multipliziere erhalte ich eine Ellipse.
Wäre das die Lösung ?

mfg Norbert

Code: [AUSKLAPPEN]
Graphics3D 640, 480
SetBuffer BackBuffer()
Wireframe 1

camera = CreateCamera()
PositionEntity camera ,0,0,-50

light = CreateLight(2)
RotateEntity light, 90, 0, 0
PositionEntity light, 0, 10, 10

Sonne = CreateSphere(8)
PositionEntity Sonne, 0, 0, 0

Planet = CreateSphere(16)

Global Planet_Abstand_Sonne# = 10.0
Global pitch# =30
Global yaw# = 0






While Not KeyHit(1)
yaw# = yaw# + 0.5

Radius  = Planet_Abstand_Sonne#

X# = OrigX + Radius * Cos( Pitch ) * Cos( Yaw )
Y# = OrigY + (Radius*4.5) * Sin( Yaw )
Z# = OrigZ + Radius * Sin( Pitch ) * Cos( Yaw )


   PositionEntity Planet,X# ,z# ,y#

   RenderWorld
   Flip
Wend
End

Xeres

Moderator

BeitragDi, Jul 29, 2014 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn dir das als Lösung genügt, werde ich keine Einspruch erheben.
Bestimmt gibt es ganz tolle Gleichungen um alle Möglichen Drehungen und Translationen zu erlauben - die ich a) aber selber nachschlagen müsste und b) tut man immer gut daran, lieber ein fertig Programm zu haben als gar keins.

In diese Sinne: Weitermachen und viel Erfolg.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group