RPiPico-Holonome2023/Trajectoire.h

42 lines
1.8 KiB
C

#ifndef TRAJECTOIRE_H
#define TRAJECTOIRE_H
enum trajectoire_type_t{
TRAJECTOIRE_DROITE,
TRAJECTOIRE_CIRCULAIRE,
TRAJECTOIRE_BEZIER,
TRAJECTOIRE_ROTATION,
};
struct point_xy_t{
double x, y;
};
struct point_xyo_t{
struct point_xy_t point_xy;
double orientation;
};
struct trajectoire_t {
enum trajectoire_type_t type;
struct point_xy_t p1, p2, p3, p4;
double orientation_debut_rad, orientation_fin_rad;
double rayon, angle_debut_degre, angle_fin_degre;
double longueur;
};
double Trajectoire_get_longueur_mm(struct trajectoire_t * trajectoire);
struct point_xyo_t Trajectoire_get_point(struct trajectoire_t * trajectoire, double abscisse);
double Trajectoire_get_orientation_rad(struct trajectoire_t * trajectoire, double abscisse);
double Trajectoire_avance(struct trajectoire_t * trajectoire, double abscisse, double distance_mm);
double distance_points(struct point_xy_t point, struct point_xy_t point_old);
void Trajectoire_circulaire(struct trajectoire_t * trajectoire, double centre_x, double centre_y, double angle_debut_degre, double angle_fin_degre,
double rayon, double orientation_debut_rad, double orientation_fin_rad);
void Trajectoire_droite(struct trajectoire_t * trajectoire, double p1_x, double p1_y, double p2_x, double p2_y, double orientation_debut_rad, double orientation_fin_rad);
void Trajectoire_bezier(struct trajectoire_t * trajectoire, double p1_x, double p1_y, double p2_x, double p2_y, double p3_x, double p3_y, double p4_x, double p4_y,
double orientation_debut_rad, double orientation_fin_rad);
void Trajectoire_rotation(struct trajectoire_t * trajectoire, double p1_x, double p1_y, double orientation_debut_rad, double orientation_fin_rad);
void Trajectoire_inverse(struct trajectoire_t * trajectoire);
#endif