From 8a67bed25926678649f1d85d411d5203dd2ddc17 Mon Sep 17 00:00:00 2001
From: antoinemeyer5 <antoine.meyer54@gmail.com>
Date: Tue, 28 Jun 2022 21:47:29 +0200
Subject: [PATCH] fonction lagrangeInterpolation (pour trajectoire) +
 commentaires et clean

---
 .../antoi_render_2d/source/ball.c             | 173 ++++-------
 .../antoi_render_2d/source/ball.h             |  44 ++-
 .../antoi_render_2d/source/render.c           | 283 ++++++++----------
 3 files changed, 203 insertions(+), 297 deletions(-)

diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.c b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.c
index a133204..52856bd 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.c
@@ -1,144 +1,87 @@
 #include "ball.h"
 
-ball_t ball;  
-laGrange_t coefLagrange; 
-int trajectory[NUMBERPOINT][2]; 
-int trajectoireAntoine[20][2];
+ball_t ball;
+int trajectoireAntoine[NUMBERPOINT_TRAJEC][2];
 
-void  initBall (){ 
-
-
-}
-
-
-double f(int x, float xc, float yc, float xf, float yf, float xt, float yt){
-    double returnValue = yf * ((x - xc)/(xf - xc)) * ((x - xt)/(xf - xt)) + yc * ((x - xf)/(xc - xf)) * ((x - xt)/(xc - xt)) + yt * ((x - xc)/(xt - xc)) * ((x - xf)/(xt - xf));
-    return returnValue;
-}
-
-void laGrange (float beta[3],float Z[3]){ // y , x 
-    printf("x canon : %f, x chute : %f, x filet : %f\n", Z[0], Z[1], Z[2]);
-    printf("y canon : %f, y chute : %f, y filet : %f\n", beta[0], beta[1], beta[2]);
-
-    coefLagrange.a= Z[0]/((beta[0]-beta[1])*(beta[0]-beta[2]))
-                +Z[1]/((beta[1]-beta[0])*(beta[1]-beta[2]))
-                +Z[2]/((beta[2]-beta[0])*(beta[2]-beta[1]));
-
-    coefLagrange.b= -(Z[0]*(beta[1]+beta[2]))/((beta[0]-beta[1])*(beta[0]-beta[2]))
-                -(Z[1]*(beta[0]+beta[2]))/((beta[1]-beta[0])*(beta[1]-beta[2]))
-                -(Z[2]*(beta[0]+beta[1]))/((beta[2]-beta[0])*(beta[2]-beta[1]));
-
-    coefLagrange.c= (Z[0]*beta[1]*beta[2])/((beta[0]-beta[1])*(beta[0]-beta[2]))
-                +(Z[1]*beta[0]*beta[2])/((beta[1]-beta[0])*(beta[1]-beta[2]))
-                +(Z[2]*beta[0]*beta[1])/((beta[2]-beta[0])*(beta[2]-beta[1]));
+void initBall()
+{
 }
 
-float defineAngle (canon_t canon, int xDropPoint, int yDropPoint){
+float defineAngle(int canonX, int canonY, int xDropPoint, int yDropPoint)
+{
     float distance;
     float angleSin;
-    distance= sqrtf( powf((float)(xDropPoint-canon.x),2)+powf((float)(yDropPoint-canon.y),2)); 
-    angleSin = asinf(distance/(xDropPoint-canon.x));
+    distance = sqrtf(powf((float)(xDropPoint - canonX), 2) + powf((float)(yDropPoint - canonY), 2));
+    angleSin = asinf(distance / (xDropPoint - canonX));
     return angleSin;
 }
 
-
-void calculationTrajectory(canon_t canon, int xDropPoint, int yDropPoint){
-    int i; 
-    float setUp[2][3];
-    float distance= (float)(yDropPoint-canon.y);
-
-
-    //printf("test : %f\n", y);
-
-    trajectory[0][0]=canon.y;
-    trajectory[0][1]=canon.x;
-
-    trajectory[NUMBERPOINT-1][0]=yDropPoint;
-    trajectory[NUMBERPOINT-1][1]=xDropPoint;
-
-    setUp[1][0]=(float)canon.y; 
-    setUp[0][0]=canon.x; 
-    setUp[1][1]=(float)yDropPoint;
-    setUp[0][1]=xDropPoint;
-    //setUp[0][2]=(13.40/2);// distance du filet dans le repère de frappe
-    //filet X
-    //terrain.w = 5.20 * zoom;
-    // setUp[0][2] = terrain.x + terrain.w + 50 + (13.40 * zoom)/2 -2;
-    setUp[0][2] = 50 + 5.20 * 40 + 50 + (13.40 * 40)/2 - 2;
-
-    //filet Y
-    // drawerTerrainSideView.y - 1,55 * zoom
-    // drawerTerrainSideView.y = terrain.y + terrain.h;
-    //terrain.h = 13.40 * zoom 
-    //setUp[1][2] = 1.55*40; /// hauteur du filet 
-    setUp[1][2] = 50 + 13.40  * 40 - 3.55 * 40;
-    
-    laGrange(setUp[1],setUp[0]); //laGrange(y, x);
-
-    //printf("coef a:%f; coef b:%f; coef c:%f\n", coefLagrange.a, coefLagrange.b, coefLagrange.c);
-
-    float step= distance / (NUMBERPOINT-1);
-
-    for (i=1; i<NUMBERPOINT-1; i++){
-        trajectory[i][0]=(int)((float)canon.y + i*step); 
-        trajectory[i][1]=(int)(coefLagrange.c+
-                    coefLagrange.b*((float)canon.y + i*step)+
-                    coefLagrange.a*(powf((float)canon.y + i*step,2)));
-    }
-}
-
-//output of Lagrange interpolation method is obtained in yp
-//xp is interpolation point given by user
-//xd : x depart
-//yd : y depart
-//xt : x target
-//yt : y target
-// DONNE UN POINT
-int calculTrajectoireAntoine(float xp, int xd, int yd, int xf, int yf, int xt, int yt){
-    float x[100], y[100], yp=0, p;
-    int i,j,n;
+/*
+ * Fonction qui prend une valeur de x et 3 points. Elle
+ * renvoie la coordonnée y liée à la valeur de x sur la
+ * courbe passant par les 3 points.
+ * Valeur de x : float xp
+ * Point n°1 (départ) : int xd, int yd
+ * Point n°2 (filet ) : int xf, int yf
+ * Point n°3 (target) : int xt, int yt
+ */
+int lagrangeInterpolation(float xp, int xd, int yd, int xf, int yf, int xt, int yt)
+{
+    float x[4], y[4], yp = 0, p;
+    int i, j, n;
+    // nombre de points pour trouver la courbe
     n = 3;
-
+    // coordonnées x des 3 points
     x[1] = xd;
     x[2] = xf;
     x[3] = xt;
-
+    // coordonnées y des 3 points
     y[1] = yd;
     y[2] = yf;
     y[3] = yt;
-
-    /* Implementing Lagrange Interpolation */
-    for(i=1;i<=n;i++)
+    // implementation de l'interpolation de Lagrange
+    for (i = 1; i <= n; i++)
     {
-        p=1;
-        for(j=1;j<=n;j++)
+        p = 1;
+        for (j = 1; j <= n; j++)
         {
-            if(i!=j)
+            if (i != j)
             {
-                p = p* (xp - x[j])/(x[i] - x[j]);
+                p = p * (xp - x[j]) / (x[i] - x[j]);
             }
         }
         yp = yp + p * y[i];
     }
-    printf("Interpolated value at %.3f is %.3f.\n", xp, yp);
+    // affichage pouvant servir
+    // printf("Interpolated value at %.3f is %.3f.\n", xp, yp);
+    // valeur de y associée à xp sur la courbe
     return yp;
 }
 
-// utilise calculTrajectoireAntoine pour 
-// calculer une liste de point a tracer
-
-void calculTrajectoireAntoine2(int xd, int yd, int xf, int yf, int xt, int yt){
-    // on calcule 20 points
-    
-    int pas_de_temps = (xt-xd)/19;
+/*
+ * Fonction qui prend en paramètres 3 points et retourne met dans le
+ * tableau à 2 dimensions trajectoireAntoine la liste des points de
+ * la courbe qui passe par ces 3 points. Le pas de temps est defini
+ * par NUMBERPOINT_TRAJEC.
+ */
+void calculTrajectoireAntoine2(int xd, int yd, int xf, int yf, int xt, int yt)
+{
+    // pas de temps
+    int pas_de_temps = (xt - xd) / (NUMBERPOINT_TRAJEC - 1);
     int i;
-    for (i=0; i<19; i++){
-        // x
-        trajectoireAntoine[i][0] = (int)(xd + i*pas_de_temps);
-        // y
-        trajectoireAntoine[i][1] = calculTrajectoireAntoine(trajectoireAntoine[i][0], xd, yd, xf, yf, xt, yt);
-    }  
+    // point de départ
+    trajectoireAntoine[0][0] = xd;
+    trajectoireAntoine[0][1] = yd;
+    // on cherche les pas de temps pour tous les pas de temps
+    // sauf départ et arrivée
+    for (i = 1; i < NUMBERPOINT_TRAJEC - 1; i++)
+    {
+        // calcul du x
+        trajectoireAntoine[i][0] = (int)(xd + i * pas_de_temps);
+        // calcul du y
+        trajectoireAntoine[i][1] = lagrangeInterpolation(trajectoireAntoine[i][0], xd, yd, xf, yf, xt, yt);
+    }
+    // point d'arrivée
+    trajectoireAntoine[NUMBERPOINT_TRAJEC - 1][0] = xt;
+    trajectoireAntoine[NUMBERPOINT_TRAJEC - 1][1] = yt;
 }
-
-
-
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.h b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.h
index ad39494..a89b718 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.h
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/ball.h
@@ -5,41 +5,31 @@
 #include <time.h>
 #include <stdio.h>
 #include <math.h>
-#include "canon.h"
 
-#define NUMBERPOINT 200
+#define NUMBERPOINT_TRAJEC 50
 
-typedef enum {
- false,true
-}booleen_t; 
+typedef enum
+{
+    false,
+    true
+} booleen_t;
 
-typedef struct  ball { 
-    int x; 
-    int y; 
+typedef struct ball
+{
+    int x;
+    int y;
     int z;
     float angle;
-    float speed; 
-}ball_t; 
-
-typedef struct laGrange{
-    float a;
-    float b; 
-    float c; 
-}laGrange_t; 
+    float speed;
+} ball_t;
 
 extern ball_t ball;
-extern laGrange_t coefLagrange; 
-extern int trajectory[NUMBERPOINT][2]; 
-
-extern int trajectoireAntoine[20][2];
+extern int trajectoireAntoine[NUMBERPOINT_TRAJEC][2];
 
-void  initBall();
-void laGrange(float *, float *);
-float defineAngle(canon_t, int, int);
-//void calculationTrajectory(canon_t, int, int, int, int);
-void calculationTrajectory(canon_t, int, int);
+void initBall();
+float defineAngle(int, int, int, int);
 
-int calculTrajectoireAntoine(float, int, int, int, int, int, int);
+int lagrangeInterpolation(float, int, int, int, int, int, int);
 void calculTrajectoireAntoine2(int, int, int, int, int, int);
 
-#endif 
\ No newline at end of file
+#endif
\ No newline at end of file
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
index 7ef0484..6e5cf74 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
@@ -8,40 +8,44 @@ int window_height = 700;
 TTF_Font *robotoFont;
 
 int zoom = 40;
-//terrain devrait etre un .c et .h comme canon
-// on aurait un SDL_Rect en terrain TopView et SideView
-//là mélange bizarre mais fonctionnel
+// terrain devrait etre un .c et .h comme canon
+//  on aurait un SDL_Rect en terrain TopView et SideView
+// là mélange bizarre mais fonctionnel
 SDL_Rect terrain;
 SDL_Rect drawerTerrainSideView; // drawerTerrain pour les deux vues
 
 SDL_Rect filet;
-//drawerFilet
+// drawerFilet
 
-//canon est un .c
+// canon est un .c
 SDL_Rect drawerCanon;
 
-//point de chute devrait etre un .c et .h
+// point de chute devrait etre un .c et .h
 SDL_Rect point_de_chute;
 SDL_Rect drawerPointDeChute;
 
 int zone_chute = -1;
 
-void createWindow(){
-    if (SDL_Init(SDL_INIT_VIDEO) != 0){
+void createWindow()
+{
+    if (SDL_Init(SDL_INIT_VIDEO) != 0)
+    {
         printf("Couldn't create window.");
         exit(EXIT_FAILURE);
     }
 
     window = SDL_CreateWindow("Badminton learning", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, window_width, window_height, SDL_WINDOW_RESIZABLE);
 
-    if (window == NULL){
+    if (window == NULL)
+    {
         printf("Couldn't create window");
         exit(EXIT_FAILURE);
     }
 
     renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE | SDL_RENDERER_PRESENTVSYNC);
 
-    if (renderer == NULL){
+    if (renderer == NULL)
+    {
         printf("Couldn't create renderer.");
         exit(EXIT_FAILURE);
     }
@@ -51,10 +55,11 @@ void createWindow(){
         exit(EXIT_FAILURE);
     }
 
-    robotoFont = TTF_OpenFont("assets/Roboto-Black.ttf", 50);  
+    robotoFont = TTF_OpenFont("assets/Roboto-Black.ttf", 50);
 }
 
-void endSDL(){
+void endSDL()
+{
     TTF_CloseFont(robotoFont);
     TTF_Quit();
     SDL_DestroyRenderer(renderer);
@@ -62,51 +67,60 @@ void endSDL(){
     SDL_Quit();
 }
 
-void initTerrain(){
+void initTerrain()
+{
     terrain.x = 50;
-    terrain.y = 50; 
+    terrain.y = 50;
     terrain.h = 13.40 * zoom;
     terrain.w = 5.20 * zoom;
 }
 
-void initPointDeChute(){
+void initPointDeChute()
+{
     point_de_chute.w = 5;
     point_de_chute.h = 5;
     srand(time(NULL));
-    point_de_chute.x = (int)rand()%terrain.w; 
-    point_de_chute.y = (int)rand()%(terrain.h/2);
+    point_de_chute.x = (int)rand() % terrain.w;
+    point_de_chute.y = (int)rand() % (terrain.h / 2);
 }
 
-int getZoneChute(int terrainX, int terrainY, int terrainW, int terrainH){
+int getZoneChute(int terrainX, int terrainY, int terrainW, int terrainH)
+{
     int z = -1;
     // pdc = point de chute
-    int pdc_y = terrainY + terrainH/2 + point_de_chute.y;
-    //en haut à gauche => 1
-    if(point_de_chute.x<terrainW/2 && pdc_y<terrainY+(3*terrainH)/4){
+    int pdc_y = terrainY + terrainH / 2 + point_de_chute.y;
+    // en haut à gauche => 1
+    if (point_de_chute.x < terrainW / 2 && pdc_y < terrainY + (3 * terrainH) / 4)
+    {
         z = 1;
     }
-    //en haut à droite => 2
-    else if(point_de_chute.x>=terrainW/2 && pdc_y<terrainY+(3*terrainH)/4){
+    // en haut à droite => 2
+    else if (point_de_chute.x >= terrainW / 2 && pdc_y < terrainY + (3 * terrainH) / 4)
+    {
         z = 2;
     }
-    //en bas à gauche => 3
-    else if(point_de_chute.x<terrainW/2 && pdc_y>=terrainY+(3*terrainH)/4){
+    // en bas à gauche => 3
+    else if (point_de_chute.x < terrainW / 2 && pdc_y >= terrainY + (3 * terrainH) / 4)
+    {
         z = 3;
     }
-    //en bas à droite => 4
-    else{
+    // en bas à droite => 4
+    else
+    {
         z = 4;
     }
     return z;
 }
 
-void newCanon(){
+void newCanon()
+{
     srand(time(NULL));
-    canon.x = (int)rand()%terrain.w;
-    canon.y = (int)rand()%(terrain.h/2);
+    canon.x = (int)rand() % terrain.w;
+    canon.y = (int)rand() % (terrain.h / 2);
 }
 
-void drawString(char *text, int x, int y, int w, int h, int r, int g, int b, int a){
+void drawString(char *text, int x, int y, int w, int h, int r, int g, int b, int a)
+{
     SDL_Color color = {r, g, b, a};
     SDL_Surface *surface = TTF_RenderText_Solid(robotoFont, text, color);
     SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
@@ -116,216 +130,175 @@ void drawString(char *text, int x, int y, int w, int h, int r, int g, int b, int
     SDL_DestroyTexture(texture);
 }
 
-void drawTerrainTopView(){
-    //filet
+void drawTerrainTopView()
+{
+    // filet
     filet.x = terrain.x;
     filet.h = 4;
-    filet.y = terrain.y + terrain.h/2 - filet.h/2; 
+    filet.y = terrain.y + terrain.h / 2 - filet.h / 2;
     filet.w = terrain.w;
-    
-    //terrain en blanc
+
+    // terrain en blanc
     SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
     SDL_RenderFillRect(renderer, &terrain);
 
-    //filet en vert
+    // filet en vert
     SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
     SDL_RenderFillRect(renderer, &filet);
 
-    //decoupage des zones
+    // decoupage des zones
     SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
-    //verticale zone haut
-    SDL_RenderDrawLine(renderer, terrain.x+terrain.w/2, terrain.y, terrain.x+terrain.w/2, terrain.y+terrain.h/2);
-    //horizontale zone haut
-    SDL_RenderDrawLine(renderer, terrain.x, terrain.y+terrain.h/4, terrain.x+terrain.w, terrain.y+terrain.h/4);
-
-    //verticale bas
-    SDL_RenderDrawLine(renderer, terrain.x+terrain.w/2, terrain.y+terrain.h/2, terrain.x+terrain.w/2, terrain.y+terrain.h);
-    //horizontale bas
-    SDL_RenderDrawLine(renderer, terrain.x, terrain.y+(3*terrain.h)/4, terrain.x+terrain.w, terrain.y+(3*terrain.h)/4);
-
+    // verticale zone haut
+    SDL_RenderDrawLine(renderer, terrain.x + terrain.w / 2, terrain.y, terrain.x + terrain.w / 2, terrain.y + terrain.h / 2);
+    // horizontale zone haut
+    SDL_RenderDrawLine(renderer, terrain.x, terrain.y + terrain.h / 4, terrain.x + terrain.w, terrain.y + terrain.h / 4);
+
+    // verticale bas
+    SDL_RenderDrawLine(renderer, terrain.x + terrain.w / 2, terrain.y + terrain.h / 2, terrain.x + terrain.w / 2, terrain.y + terrain.h);
+    // horizontale bas
+    SDL_RenderDrawLine(renderer, terrain.x, terrain.y + (3 * terrain.h) / 4, terrain.x + terrain.w, terrain.y + (3 * terrain.h) / 4);
 }
 
-void drawTerrainSideView(){
-    //terrain
+void drawTerrainSideView()
+{
+    // terrain
     drawerTerrainSideView.x = terrain.x + terrain.w + 50;
-    drawerTerrainSideView.y = terrain.y + terrain.h; 
+    drawerTerrainSideView.y = terrain.y + terrain.h;
     drawerTerrainSideView.h = 4;
     drawerTerrainSideView.w = 13.40 * zoom;
 
-    //filet
+    // filet
     filet.w = 4;
-    filet.x = drawerTerrainSideView.x + drawerTerrainSideView.w/2 - filet.w/2;
+    filet.x = drawerTerrainSideView.x + drawerTerrainSideView.w / 2 - filet.w / 2;
     filet.h = -1.55 * zoom;
-    filet.y = drawerTerrainSideView.y; 
-    
-    //terrain en blanc
+    filet.y = drawerTerrainSideView.y;
+
+    // terrain en blanc
     SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
     SDL_RenderFillRect(renderer, &drawerTerrainSideView);
 
-    //filet en vert
+    // filet en vert
     SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
     SDL_RenderFillRect(renderer, &filet);
 }
 
-void drawCanonTopView(){
-    //canon 
-    drawerCanon.w = canon.width; 
+void drawCanonTopView()
+{
+    // canon
+    drawerCanon.w = canon.width;
     drawerCanon.h = canon.length;
     drawerCanon.x = terrain.x + canon.x;
     drawerCanon.y = terrain.y + canon.y;
 
-    //canon en noir
+    // canon en noir
     SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
     SDL_RenderFillRect(renderer, &drawerCanon);
 }
 
-void drawPointDeChuteTopView(){
-    //point de chute de la balle
+void drawPointDeChuteTopView()
+{
+    // point de chute de la balle
     drawerPointDeChute.x = terrain.x + point_de_chute.x;
-    drawerPointDeChute.y = terrain.y + terrain.h/2 + point_de_chute.y;
+    drawerPointDeChute.y = terrain.y + terrain.h / 2 + point_de_chute.y;
     drawerPointDeChute.w = point_de_chute.w;
     drawerPointDeChute.h = point_de_chute.h;
 
-    //point de chute de la balle
+    // point de chute de la balle
     SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
     SDL_RenderFillRect(renderer, &drawerPointDeChute);
 }
 
-void drawCanonSideView(){
-    //canon 
-    drawerCanon.w = canon.length; 
+void drawCanonSideView()
+{
+    // canon
+    drawerCanon.w = canon.length;
     drawerCanon.h = canon.height;
     drawerCanon.x = drawerTerrainSideView.x + canon.y;
     drawerCanon.y = drawerTerrainSideView.y - canon.height;
 
-    //canon en noir
+    // canon en noir
     SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
     SDL_RenderFillRect(renderer, &drawerCanon);
 }
 
-void drawPointDeChuteSideView(){
-    //point de chute de la balle
-    drawerPointDeChute.x = drawerTerrainSideView.x + drawerTerrainSideView.w/2 + point_de_chute.y;
+void drawPointDeChuteSideView()
+{
+    // point de chute de la balle
+    drawerPointDeChute.x = drawerTerrainSideView.x + drawerTerrainSideView.w / 2 + point_de_chute.y;
     drawerPointDeChute.y = drawerTerrainSideView.y;
     drawerPointDeChute.w = point_de_chute.w;
     drawerPointDeChute.h = point_de_chute.h;
 
-    //point de chute de la balle
+    // point de chute de la balle
     SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
     SDL_RenderFillRect(renderer, &drawerPointDeChute);
 }
 
-void drawInformations(){
+void drawInformations()
+{
     int texte_width = 200;
     int texte_height = 40;
     char str[20];
     char str2[20];
     char zoneChuteChaine[20] = "zone chute :";
     char zoneCanonChaine[20] = "zone canon :";
-    drawString("informations :", window_width-texte_width, texte_height*0, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("e : new point chute", window_width-texte_width, texte_height*1, texte_width, texte_height, 255, 255, 255, 255);
+    drawString("informations :", window_width - texte_width, texte_height * 0, texte_width, texte_height, 255, 255, 255, 255);
+    drawString("e : new point chute", window_width - texte_width, texte_height * 1, texte_width, texte_height, 255, 255, 255, 255);
     sprintf(str2, "%d", zone_chute);
     strcat(zoneChuteChaine, str2);
-    drawString(zoneChuteChaine, window_width-texte_width, texte_height*2, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("r : new canon", window_width-texte_width, texte_height*4, texte_width, texte_height, 255, 255, 255, 255);
+    drawString(zoneChuteChaine, window_width - texte_width, texte_height * 2, texte_width, texte_height, 255, 255, 255, 255);
+    drawString("r : new canon", window_width - texte_width, texte_height * 4, texte_width, texte_height, 255, 255, 255, 255);
     sprintf(str, "%d", canon.zone);
     strcat(zoneCanonChaine, str);
-    drawString(zoneCanonChaine, window_width-texte_width, texte_height*5, texte_width, texte_height, 255, 255, 255, 255);
+    drawString(zoneCanonChaine, window_width - texte_width, texte_height * 5, texte_width, texte_height, 255, 255, 255, 255);
 }
 
-void drawTrajectoireTopView(){
+void drawTrajectoireTopView()
+{
     SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
-    SDL_RenderDrawLine(renderer, terrain.x+canon.x, terrain.y+canon.y, drawerPointDeChute.x, drawerPointDeChute.y);
+    SDL_RenderDrawLine(renderer, terrain.x + canon.x, terrain.y + canon.y, drawerPointDeChute.x, drawerPointDeChute.y);
 }
 
-void drawTrajectoireSideView(){
-    /*canon_t canon_trajectoire_sideview;
-    canon_trajectoire_sideview.y = drawerTerrainSideView.x + canon.y;
-    canon_trajectoire_sideview.x = drawerTerrainSideView.y;*/
-
-    /*drawerPointDeChute.y = terrain.y + terrain.h; 
-
-    calculationTrajectory(canon_trajectoire_sideview,
-                        drawerPointDeChute.y,
-                        drawerPointDeChute.x
-    );*/
-
-
-    //int resultatAntoine = 0;
-    //resultatAntoine = calculTrajectoireAntoine(75.0, 0, 0, 50, 60, 100, 0);
-    /*calculTrajectoireAntoine2(0, -200, 50, 60, 100, -200);
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[5][0], trajectoireAntoine[5][1]);
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[6][0], trajectoireAntoine[6][1]);
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[7][0], trajectoireAntoine[7][1]);*/
-
+void drawTrajectoireSideView()
+{
+    // crée la liste des points de la trajectoire
     calculTrajectoireAntoine2(
-        terrain.x + terrain.w + 50 + canon.y, //x depart
-        terrain.y + terrain.h, //y depart
-        terrain.x + terrain.w + 50 + terrain.h/2, //x filet
-        terrain.y + terrain.h - 100, //y filet
-        drawerTerrainSideView.x + drawerTerrainSideView.w/2 + point_de_chute.y, // x target
-        terrain.y + terrain.h); // y target
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[5][0], trajectoireAntoine[5][1]);
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[6][0], trajectoireAntoine[6][1]);
-    printf("trajAntoinX : %d; trajAntoinY : %d\n", trajectoireAntoine[7][0], trajectoireAntoine[7][1]);
-
-    for(int i=0; i<18; i++){
-        //printf("point %d (%d, %d)\n", i, trajectory[i][0], trajectory[i][1]);
+        terrain.x + terrain.w + 50 + canon.y,                                     // x depart
+        terrain.y + terrain.h,                                                    // y depart
+        terrain.x + terrain.w + 50 + terrain.h / 2,                               // x filet
+        terrain.y + terrain.h - 100,                                              // y filet
+        drawerTerrainSideView.x + drawerTerrainSideView.w / 2 + point_de_chute.y, // x target
+        terrain.y + terrain.h                                                     // y target
+    );
+
+    // parcours la liste des points de la trajectoire et l'affiche
+    for (int i = 0; i < NUMBERPOINT_TRAJEC - 1; i++)
+    {
         SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);
-        SDL_RenderDrawLine(renderer, trajectoireAntoine[i][0], trajectoireAntoine[i][1], trajectoireAntoine[i+1][0], trajectoireAntoine[i+1][1]);
-        //SDL_RenderDrawLine(renderer, trajectory[i][0], trajectory[i][1], trajectory[i+1][0], trajectory[i+1][1]);
+        SDL_RenderDrawLine(renderer, trajectoireAntoine[i][0], trajectoireAntoine[i][1], trajectoireAntoine[i + 1][0], trajectoireAntoine[i + 1][1]);
     }
-
-
-  
-
-
 }
 
-void drawBall(){
-    /*int i;
-    SDL_Rect rect_life;
-    SDL_Rect rect_mana;
-    rect_life.h = 50;
-    rect_life.w = 50;
-    rect_life.x = 100;
-    rect_life.y = 100; 
-
-    rect_mana.h = 50;
-    rect_mana.w = 50;
-    rect_mana.x = 100;
-    rect_mana.y = 200;*/
-    
-    //draw hero life
-    /*SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
-    for(i=0; i<hero.life; i++){
-        SDL_RenderFillRect(renderer, &rect_life);
-        rect_life.x = rect_life.x + rect_life.w + 20;
-    }
-
-    //draw hero mana
-    */
-    
-}
-
-
-void mainLoop(){
+void mainLoop()
+{
     createWindow();
     initCanon();
     initTerrain();
     initPointDeChute();
 
     pthread_t eventThread;
-    if (pthread_create(&eventThread, NULL, eventLoop, NULL) != 0){
+    if (pthread_create(&eventThread, NULL, eventLoop, NULL) != 0)
+    {
         printf("Couldn't create thread.");
         exit(EXIT_FAILURE);
     }
 
-    while (running){
+    while (running)
+    {
         SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
         SDL_RenderClear(renderer);
 
-        //top view
+        // top view
         drawTerrainTopView();
         drawCanonTopView();
         drawPointDeChuteTopView();
@@ -333,16 +306,16 @@ void mainLoop(){
         canon.zone = getZone(terrain.x, terrain.y, terrain.w, terrain.h);
         zone_chute = getZoneChute(terrain.x, terrain.y, terrain.w, terrain.h);
 
-        //side view
+        // side view
         drawTerrainSideView();
         drawCanonSideView();
         drawPointDeChuteSideView();
         drawTrajectoireSideView();
-    
+
         //
         drawInformations();
-       
+
         SDL_RenderPresent(renderer);
     }
     endSDL();
-} 
\ No newline at end of file
+}
\ No newline at end of file
-- 
GitLab