📜  zone um planten mit schwerkraft (1)

📅  最后修改于: 2023-12-03 15:35:50.158000             🧑  作者: Mango

Zone um Planten mit Schwerkraft

Dieses Programm ermöglicht es dem Benutzer, eine Zone um einen Planeten zu schaffen, die von der Schwerkraft des Planeten beeinflusst wird. Diese Zone kann dann genutzt werden, um Objekte im Raum zu positionieren und ihre Bewegungen zu simulieren.

Informationen

Der Benutzer kann die Größe der Zone, die Masse des Planeten und die Anfangsposition und -geschwindigkeit von Objekten in der Zone einstellen. Das Programm nutzt die physikalischen Gesetze der Gravitation, um die Bewegungen von Objekten in der Zone zu berechnen.

Funktionen
  • Bestimmung der Größe der Zone: Der Benutzer kann den Radius der Zone von 1 bis 100000000 Kilometer limitieren.
  • Bestimmung der Masse des Planeten: Der Benutzer kann die Masse des Planeten in Kilogramm definieren.
  • Bestimmung der Position von Objekten: Der Benutzer kann die Position von Objekten in der Zone durch Koordinaten in x-, y- und z-Richtung definieren.
  • Bestimmung der Geschwindigkeit von Objekten: Der Benutzer kann die Geschwindigkeit von Objekten durch eine Kombination von Winkeln und Geschwindigkeiten in x-, y- und z-Richtung definieren.
Beispielcode
def gravitationskraft(masse, abstand):
    gravitationskonstante = 6.674 * (10 ** -11)
    return gravitationskonstante * masse / abstand**2

class Planet:
    def __init__(self, masse):
        self.masse = masse

class Objekt:
    def __init__(self, x_pos, y_pos, z_pos):
        self.pos = (x_pos, y_pos, z_pos)
        self.geschwindigkeit = (0, 0, 0)
    
    def berechne_bewegung(self, planet):
        x_pos, y_pos, z_pos = self.pos
        x_ergebnis = gravitationskraft(planet.masse, x_pos) * x_pos
        y_ergebnis = gravitationskraft(planet.masse, y_pos) * y_pos
        z_ergebnis = gravitationskraft(planet.masse, z_pos) * z_pos
        return (x_ergebnis, y_ergebnis, z_ergebnis)

mein_planet = Planet(5.97 * (10 ** 24))
mein_objekt = Objekt(0, 0, 0)
mein_objekt.geschwindigkeit = (10, 10, 0)

for i in range(1000):
    bewegung = mein_objekt.berechne_bewegung(mein_planet)
    x_bewegung, y_bewegung, z_bewegung = bewegung
    x_pos, y_pos, z_pos = mein_objekt.pos
    x_pos += mein_objekt.geschwindigkeit[0]
    y_pos += mein_objekt.geschwindigkeit[1]
    z_pos += mein_objekt.geschwindigkeit[2]
    mein_objekt.pos = (x_pos, y_pos, z_pos)
    mein_objekt.geschwindigkeit = (mein_objekt.geschwindigkeit[0] + x_bewegung, 
                                   mein_objekt.geschwindigkeit[1] + y_bewegung,
                                   mein_objekt.geschwindigkeit[2] + z_bewegung)

Das obige Beispiel zeigt, wie ein Objekt um einen Planeten, der eine Masse von 5,97 * (10 ** 24) aufweist, bewegt wird. Das Objekt beginnt bei Position (0, 0, 0) und mit einer Geschwindigkeit von (10, 10, 0). Das Objekt bewegt sich dann für 1000 Schritte mit einer Schrittweite von 1 Sekunde, indem es die physikalischen Gesetze der Gravitation im Hinblick auf die Position und Geschwindigkeit des Objekts berücksichtigt. Jeder Schritt wird durch die Berechnung der Gravitationskraft, die auf das Objekt wirkt, und der Bewegung des Objekts durchgeführt.