Skip to content
Snippets Groups Projects
Commit ad501ed7 authored by florian.burgener's avatar florian.burgener
Browse files

Update README

parent 85339a8e
No related branches found
No related tags found
No related merge requests found
......@@ -25,89 +25,12 @@ Afin de mener ce projet à terme, nous avons dû créer certaines de nos structu
| Terre | 5.9722 * 1E24 | 0.0167 | 149.596 * 1E9 |
| Mars | 0.64169 * 1E24 | 0.0935 | 227.923 * 1E9 |
* https://nssdc.gsfc.nasa.gov/planetary/factsheet/sunfact.html
* https://nssdc.gsfc.nasa.gov/planetary/factsheet/mercuryfact.html
* https://nssdc.gsfc.nasa.gov/planetary/factsheet/venusfact.html
* https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html
* https://nssdc.gsfc.nasa.gov/planetary/factsheet/marsfact.html
### Structures
#### CelestialObject
Représente un corps céleste comme par exmple : une planète ou une étoile.
```c
typedef struct CelestialObject {
char name[100];
double mass;
Vector2 previous_position;
Vector2 position;
double semi_major_axis;
double eccentricity;
int32_t drawing_disc_radius;
int32_t drawing_color;
Vector2 *previous_positions;
int32_t previous_positions_length;
} CelestialObject;
CelestialObject *celestial_object_create(char *name, double mass, double semi_major_axis, double eccentricity, int32_t drawing_disc_radius, int32_t drawing_color);
void celestial_object_destroy(CelestialObject *object);
int32_t get_zoomed_drawing_disc_radius(CelestialObject *object, double zoom_factor);
Vector2 calculate_gravitational_acceleration(int32_t object_index, CelestialObject **objects, int32_t objects_length);
void celestial_object_first_update(int32_t object_index, CelestialObject **objects, int32_t objects_length, int32_t main_object_index);
void celestial_object_update(int32_t object_index, CelestialObject **objects, int32_t objects_length, double interval, double previous_interval);
void celestial_object_update_previous_positions(CelestialObject *object);
void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
```
#### PlanetarySystem
Représente un système planétaire composé d'une étoile en son centre et des planètes orbitant autour.
```c
typedef struct PlanetarySystem {
CelestialObject **objects;
int32_t objects_length;
int32_t reference_frame_index;
double zoom_factor;
double previous_interval;
bool show_names;
} PlanetarySystem;
PlanetarySystem *planetary_system_create();
void planetary_system_destroy(PlanetarySystem *planetary_system);
Vector2 planetary_system_get_reference_frame(PlanetarySystem *planetary_system);
void planetary_system_update(PlanetarySystem *planetary_system, double interval);
void planetary_system_draw(PlanetarySystem *planetary_system);
void planetary_system_draw_object_names(PlanetarySystem *planetary_system);
```
#### Vector2
Représente un vecteur en 2 dimensions.
```c
typedef struct Vector2 {
double x;
double y;
} Vector2;
Vector2 vector2_create(double x, double y);
Vector2 vector2_create_zero();
Vector2 vector2_add(Vector2 a, Vector2 b);
Vector2 vector2_substract(Vector2 a, Vector2 b);
Vector2 vector2_multiply(Vector2 v, double scalar);
double vector2_dot_product(Vector2 a, Vector2 b);
double vector2_norm_sqr(Vector2 v);
double vector2_norm(Vector2 v);
Vector2 vector2_normalize(Vector2 v);
Vector2 vector2_fit_canvas(Vector2 v, int32_t width, int32_t height);
void vector2_print(Vector2 v);
```
### Fonctionnement
#### Système de mise à jour
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment