Skip to content
Snippets Groups Projects
Commit f56741a1 authored by Florian Burgener's avatar Florian Burgener
Browse files

Add comment

parent 92987542
Branches
No related tags found
No related merge requests found
......@@ -58,6 +58,7 @@ Vector2 calculate_gravitational_acceleration(int32_t object_index, CelestialObje
Vector2 r = vector2_substract((i < object_index) ? objects[i]->previous_position : objects[i]->position, objects[object_index]->position);
// Calculates the acceleration.
double a_scalar = G * objects[i]->mass * pow(pow(vector2_norm(r), 2), -1);
// Sum the acceleration.
a = vector2_add(a, vector2_multiply(vector2_normalize(r), a_scalar));
}
......@@ -69,12 +70,12 @@ void celestial_object_first_update(int32_t object_index, CelestialObject **objec
CelestialObject *main_object = objects[main_object_index];
// Speed at the periapsis.
double periapsis_speed_scalar = sqrt((G * main_object->mass * (1 + object->eccentricity)) / (object->semi_major_axis * (1 - object->eccentricity)));
double periapsis_speed = sqrt((G * main_object->mass * (1 + object->eccentricity)) / (object->semi_major_axis * (1 - object->eccentricity)));
// Adds the speed of the main object.
periapsis_speed_scalar += vector2_norm(vector2_substract(main_object->position, main_object->previous_position));
periapsis_speed += vector2_norm(vector2_substract(main_object->position, main_object->previous_position));
Vector2 r = vector2_normalize(vector2_create(object->position.y, -object->position.x));
Vector2 periapsis_velocity = vector2_multiply(r, periapsis_speed_scalar);
Vector2 periapsis_velocity = vector2_multiply(r, periapsis_speed);
// Adds the position of the main object.
object->position = vector2_add(object->position, main_object->previous_position);
......@@ -82,7 +83,7 @@ void celestial_object_first_update(int32_t object_index, CelestialObject **objec
// Calculates the new position of the object according to its velocity at periapsis.
Vector2 new_position = vector2_add(object->position, periapsis_velocity);
Vector2 a = calculate_gravitational_acceleration(object_index, objects, objects_length);
// Adds the acceleration.
// Apply the acceleration.
new_position = vector2_add(new_position, vector2_multiply(a, 0.5));
object->previous_position = object->position;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment