Ich bin sehr neu in der Programmierung und habe eine Schulaufgabe bekommen, für die ich in p5.js eine Simulation der Erdumlaufbahn um die Sonne erstellen muss. Uns wurde eine vereinfachte Methode zur Berechnung der Anziehungskraft angeboten, aber ich wollte die tatsächliche Formel verwenden (Fg = G M m / r ^ 2). In meinem Code entspricht ein Pixel 10 ^ 9 Metern oder einer Million km. Wenn ich die tatsächlichen Massen von Sonne und Erde sowie den tatsächlichen Abstand zwischen ihnen verwende, muss ich die Geschwindigkeit, mit der sich die Erde bewegt, auf etwa 1 Pixel pro Sekunde oder eine Million km / s einstellen, was ungefähr der Fall ist 30.000-fache Geschwindigkeit der Erde im Orbit. Mein Code:
x = 550;
y = 400;
vy = -1;
vx = 0;
dt = 1;
sunSize = 80;
planetSize = 10;
// 1 pixel equals 1 million km
canvasSize = 800;
starAmount = 600;
function setup() {
frameRate(60);
noStroke()
solarXY = 0.5 * canvasSize;
xSun = solarXY;
ySun = solarXY;
createCanvas(canvasSize, canvasSize);
M = 1.989 * pow(10, 30);
m = 5.972 * pow(10, 24);
background(0);
for (i = 0; i < starAmount; i++) {
starX = Math.random() * canvasSize;
starY = Math.random() * canvasSize;
starSize = Math.random() * 3 + 1
ellipse(starX, starY, starSize, starSize);
}
fill(255, 192, 0);
ellipse(xSun, ySun, sunSize, sunSize);
}
function draw() {
r = sqrt(sq(xSun - x) + sq(ySun - y)) * pow(10, 9);
Fg = 6.67 * pow(10, -11) * m * M / sq(r);
if (x >= xSun) {
angle = atan((ySun - y) / (x - xSun));
} else {
angle = PI + atan((ySun - y) / (x - xSun));
}
xOld = x;
yOld = y;
Fgx = cos(angle) * Fg
Fgy = sin(angle) * Fg
ay = Fgy / m;
ax = -Fgx / m;
vy += ay * dt;
vx += ax * dt;
y += vy * dt;
x += vx * dt;
fill(30);
ellipse(xOld, yOld, planetSize, planetSize);
fill(0, 0, 192);
ellipse(x, y, planetSize, planetSize);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script>
Wissen Sie, was die Ursache sein könnte? Danke im Voraus.
quelle
Antworten:
Sie scheinen eine Beschleunigung in Metern pro Sekunde 2 und eine Geschwindigkeit in Pixel pro Sekunde zu haben. Dann kombinieren Sie sie:
Ihre Gravitationsbeschleunigungen sind eine Milliarde Mal zu stark. Ihr Planet muss sich also ungefähr 31.623 Mal schneller als normal bewegen, um eine kreisförmige Umlaufbahn zu halten.
quelle