Soy muy nuevo en programación y obtuve una tarea escolar para la que tengo que crear una simulación de la órbita de la Tierra alrededor del Sol en p5.js. Se nos ofreció una forma simplificada de calcular la atracción gravitacional, pero quería usar la fórmula real (Fg = G M m / r ^ 2). En mi código, un píxel equivale a 10 ^ 9 metros o un millón de km. Si uso las masas reales tanto del sol como de la tierra, así como la distancia real entre ellas, tengo que poner la velocidad a la que viaja la tierra en alrededor de 1 píxel por segundo o un millón de km / s, que es alrededor 30,000 veces la velocidad real de la tierra en órbita. Mi código:
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>
¿Sabes cuál podría ser la causa? Gracias por adelantado.
javascript
simulation
physics
p5.js
Gijsfwb
fuente
fuente
Respuestas:
Parece que tienes aceleración en metros por segundo 2 y velocidad en píxeles por segundo. Luego los combinas:
Sus aceleraciones gravitacionales son mil millones de veces demasiado fuertes. Por lo tanto, su planeta debe moverse aproximadamente 31,623 veces más rápido de lo normal para mantener una órbita circular.
fuente