import turtle
import math
class SolarSystem:
def __init__(self, width, height):
self.thesun = None
self.planets = []
self.ssturtle = turtle.Turtle()
self.ssturtle.hideturtle()
self.ssscreen = turtle.Screen()
self.ssscreen.setworldcoordinates(-width/2.0,-height/2.0,width/2.0,height/2.0)
self.ssscreen.tracer(50)
def addPlanet(self, aplanet):
self.planets.append(aplanet)
def addSun(self, asun):
self.thesun = asun
def showPlanets(self):
for aplanet in self.planets:
print(aplanet)
def freeze(self):
self.ssscreen.exitonclick()
def movePlanets(self):
G = .1
dt = .001
for p in self.planets:
p.moveTo(p.getXPos() + dt * p.getXVel(), p.getYPos() + dt * p.getYVel())
rx = self.thesun.getXPos() - p.getXPos()
ry = self.thesun.getYPos() - p.getYPos()
r = math.sqrt(rx**2 + ry**2)
accx = G * self.thesun.getMass()*rx/r**3
accy = G * self.thesun.getMass()*ry/r**3
p.setXVel(p.getXVel() + dt * accx)
p.setYVel(p.getYVel() + dt * accy)
class Sun:
def __init__(self, iname, irad, im, itemp):
self.name = iname
self.radius = irad
self.mass = im
self.temp = itemp
self.x = 0
self.y = 0
self.sturtle = turtle.Turtle()
self.sturtle.shape("circle")
self.sturtle.color("yellow")
def getName(self):
return self.name
def getRadius(self):
return self.radius
def getMass(self):
return self.mass
def getTemperature(self):
return self.temp
def getVolume(self):
v = 4.0/3 * math.pi * self.radius**3
return v
def getSurfaceArea(self):
sa = 4.0 * math.pi * self.radius**2
return sa
def getDensity(self):
d = self.mass / self.getVolume()
return d
def setName(self, newname):
self.name = newname
def __str__(self):
return self.name
def getXPos(self):
return self.x
def getYPos(self):
return self.y
class Planet:
def __init__(self, iname, irad, im, idist, ivx, ivy, ic):
self.name = iname
self.radius = irad
self.mass = im
self.distance = idist
self.x = idist
self.y = 0
self.velx = ivx
self.vely = ivy
self.color = ic
self.pturtle = turtle.Turtle()
self.pturtle.up()
self.pturtle.color(self.color)
self.pturtle.shape("circle")
self.pturtle.goto(self.x,self.y)
self.pturtle.down()
def getName(self):
return self.name
def getRadius(self):
return self.radius
def getMass(self):
return self.mass
def getDistance(self):
return self.distance
def getVolume(self):
v = 4.0/3 * math.pi * self.radius**3
return v
def getSurfaceArea(self):
sa = 4.0 * math.pi * self.radius**2
return sa
def getDensity(self):
d = self.mass / self.getVolume()
return d
def setName(self, newname):
self.name = newname
def show(self):
print(self.name)
def __str__(self):
return self.name
def moveTo(self, newx, newy):
self.x = newx
self.y = newy
self.pturtle.goto(newx, newy)
def getXPos(self):
return self.x
def getYPos(self):
return self.y
def getXVel(self):
return self.velx
def getYVel(self):
return self.vely
def setXVel(self, newvx):
self.velx = newvx
def setYVel(self, newvy):
self.vely = newvy
def createSSandAnimate():
ss = SolarSystem(2,2)
sun = Sun("SUN", 5000, 10, 5800)
ss.addSun(sun)
m = Planet("MERCURY", 19.5, 1000, .25, 0, 2, "blue")
ss.addPlanet(m)
m = Planet("EARTH", 47.5, 5000, 0.3, 0, 2.0, "green")
ss.addPlanet(m)
m = Planet("MARS", 50, 9000, 0.5, 0, 1.63, "red")
ss.addPlanet(m)
m = Planet("JUPITER", 100, 49000, 0.7, 0, 1, "black")
ss.addPlanet(m)
m = Planet("Pluto", 1, 500, 0.9, 0, .5, "orange")
ss.addPlanet(m)
m = Planet("Asteroid", 1, 500, 1.0, 0, .75, "cyan")
ss.addPlanet(m)
numTimePeriods = 20000
for amove in range(numTimePeriods):
ss.movePlanets()
ss.freeze()
createSSandAnimate()
Auf dieser Seite können Sie das Online-Video solar system in python mit der Dauer stunde minuten sekunde in guter Qualität ansehen, das der Benutzer Codecho _ 09 Juli 2021 hochgeladen hat, den Link mit Freunden und Bekannten teilen, dieses Video wurde auf Youtube bereits 664 Mal angesehen und es wurde von 22 den Zuschauern gefallen. Viel Spaß beim Betrachtenden Zuschauern gefallen!