-
Notifications
You must be signed in to change notification settings - Fork 0
/
Trajectoire_circulaire.c
26 lines (21 loc) · 1.08 KB
/
Trajectoire_circulaire.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "math.h"
#include "Trajectoire.h"
void Trajectoire_circulaire_get_longueur(struct trajectoire_t * trajectoire){
double distance_angulaire;
if(trajectoire->angle_debut_degre > trajectoire->angle_fin_degre){
distance_angulaire = trajectoire->angle_debut_degre - trajectoire->angle_fin_degre;
}else{
distance_angulaire = trajectoire->angle_fin_degre - trajectoire->angle_debut_degre;
}
trajectoire->longueur = 2. * M_PI * trajectoire->rayon * distance_angulaire / 360.;
}
/// @brief Retourne le point sur la trajectoire en fonction de l'abscisse
/// @param abscisse : compris entre 0 et 1
struct point_xy_t Trajectoire_circulaire_get_point(struct trajectoire_t * trajectoire, double abscisse){
struct point_xy_t point;
double angle_degre;
angle_degre = (double) trajectoire->angle_debut_degre * (1-abscisse) + (double) trajectoire->angle_fin_degre * abscisse;
point.x = trajectoire->p1.x + cos(angle_degre/180. * M_PI) * trajectoire->rayon;
point.y = trajectoire->p1.y + sin(angle_degre/180. * M_PI) * trajectoire->rayon;
return point;
}