ImagePulser V5.2.4
Simplification des images prises avec une webcam
Chargement...
Recherche...
Aucune correspondance
/Users/vasilisskarleas/Developer/ROB3-S6-ImagePulser_project/Imagination/contour.h
Aller à la documentation de ce fichier.
1// #############################################################################
2// # File contour.h
3// # Project in C - Polytech Sorbonne - 2023/2024 - S6
4// # Authors: Evinia Anastasopoulou, Yanis Sadoun, Vasileios Filippos Skarleas - All rights reserved.
5// #############################################################################
6
12
13#ifndef _CONTOUR_H_
14#define _CONTOUR_H_
15
16#include <stdbool.h>
17#include "geometry.h"
18#include "image.h"
19#include "sequence_point.h"
20
21typedef enum {Nord, Est, Sud, Ouest} Orientation;
22
23typedef struct {
24 int x, y;
26} Robot;
27
36
37void init_robot(Robot *r, int x, int y, Orientation o);
38
44
45void move_forward(Robot *r);
46
52
53void turn_left(Robot *r);
54
60
61void turn_right(Robot *r);
62
70
71void position(Robot *r, int *x, int *y);
72
79
80int abscissa(Robot *r);
81
88int ordinate(Robot *r);
89
97
98
106void position_forward(Robot *r, int *x, int *y);
107
108
117void new_orientation(Robot *r, int x, int y, Image I);
118
126
134
141bool image_white(Image I);
142
151Contour algo_contour(Image I, char *file_name, char *repository);
152
160
168void pbm_contour_to_txt(Liste_Contours c, char *file_name, char *repository);
169
179
189
198
207
216void create_postscript(Contour c, char *file_name, int height, int width);
217
226void create_postscript_fill(Contour c, char *file_name, int height, int width);
227
237void create_postscript_contours(Liste_Contours c, char *file_name, int height, int width, char *repository);
238
248Contour simplification_douglas_peucker(Tableau_Point T, int j1, int j2, double d);
249
257Point calcul_ct_bezier2(Bezier2 b2, double t);
258
266Point calcul_ct_bezier3(Bezier3 b3, double t);
267
275
284Bezier2 bezier2_approximation(Contour c, int j1, int j2);
285
294double distance_point_bezier2(Point P1, Bezier2 b2, double ti);
295
305Contour simplification_douglas_peucker_bezier2(Contour C, int j1, int j2,double d);
306
316void create_postscript_contours_bezier2(Liste_Contours c, char *file_name, int height, int width, char *repository);
317
326Bezier3 bezier3_approximation(Contour c, int j1, int j2);
327
336double distance_point_bezier3(Point P1, Bezier3 b3, double ti);
337
347Contour simplification_douglas_peucker_bezier3(Contour C, int j1, int j2,double d);
348
358void create_postscript_contours_bezier3(Liste_Contours c, char *file_name, int height, int width, char *repository);
359
360#endif /* _CONTOUR_H_ */
void create_postscript_contours_bezier2(Liste_Contours c, char *file_name, int height, int width, char *repository)
Crée un file_input EPS pour des courbes de Bézier de degré 2.
Definition contour.c:1267
void turn_left(Robot *r)
Tourne le robot à gauche (changement d'orientation).
Definition contour.c:83
void create_postscript(Contour c, char *file_name, int height, int width)
Génère un file_input EPS contenant la représentation graphique d'un contour en mode trait.
Definition contour.c:794
void create_postscript_contours(Liste_Contours c, char *file_name, int height, int width, char *repository)
Génère un file_input EPS pour une liste de contours donnés.
Definition contour.c:901
void new_orientation(Robot *r, int x, int y, Image I)
Calcule la nouvelle orientation du robot en fonction de son environnement immédiat.
Definition contour.c:215
Contour simplification_douglas_peucker_bezier2(Contour C, int j1, int j2, double d)
Simplifie un contour par la méthode des courbes de Bézier de degré 2.
Definition contour.c:1202
void create_postscript_contours_bezier3(Liste_Contours c, char *file_name, int height, int width, char *repository)
Crée un file_input EPS pour des courbes de Bézier de degré 3.
Definition contour.c:1548
void init_robot(Robot *r, int x, int y, Orientation o)
Initialise le robot à une position donnée avec une orientation spécifique.
Definition contour.c:40
void create_postscript_fill(Contour c, char *file_name, int height, int width)
Génère un file_input EPS contenant la représentation graphique d'un contour en mode remplissage.
Definition contour.c:846
void contours_data_simplification(Liste_Contours c)
Affiche les données des contours simplifiés sur le terminal.
Definition contour.c:672
void position(Robot *r, int *x, int *y)
Récupère la position actuelle du robot.
Definition contour.c:136
Bezier3 conversion_bezier2_to_bezier3(Bezier2 b2)
Convertit une courbe de Bézier de degré 2 en une courbe de degré 3.
Definition contour.c:1063
Orientation orient(Robot *r)
Récupère l'orientation actuelle du robot.
Definition contour.c:170
void contours_data_bezier(Liste_Contours c)
Affiche des informations sur les courbes de Bézier pour les contours sur le terminal.
Definition contour.c:711
void turn_right(Robot *r)
Tourne le robot à droite (changement d'orientation).
Definition contour.c:109
Contour algo_contour(Image I, char *file_name, char *repository)
Calcule et extrait les contours d'une image.
Definition contour.c:421
void pbm_contour_to_txt(Liste_Contours c, char *file_name, char *repository)
Sauvegarde les contours extraits dans un file_input texte.
Definition contour.c:567
int ordinate(Robot *r)
Récupère la coordonnée y de la position actuelle du robot.
Definition contour.c:159
Image mask_image(Image I)
Crée un masque de l'image mettant en évidence les pixels de départ pour les contours.
Definition contour.c:350
Point calcul_ct_bezier3(Bezier3 b3, double t)
Calcule le point sur une courbe de Bézier de degré 3.
Definition contour.c:1043
double distance_point_bezier3(Point P1, Bezier3 b3, double ti)
Calcule la distance entre un point et une courbe de Bézier de degré 3.
Definition contour.c:1457
Point find_departure_pixel(Image I)
Trouve les coordonnées du premier pixel noir avec un voisin blanc au-dessus.
Definition contour.c:303
Orientation
Definition contour.h:21
@ Est
Definition contour.h:21
@ Nord
Definition contour.h:21
@ Sud
Definition contour.h:21
@ Ouest
Definition contour.h:21
void position_forward(Robot *r, int *x, int *y)
Récupère la position de la case directement devant le robot.
Definition contour.c:184
double distance_point_bezier2(Point P1, Bezier2 b2, double ti)
Calcule la distance entre un point et une courbe de Bézier de degré 2.
Definition contour.c:1184
bool image_white(Image I)
Vérifie si l'image est entièrement blanche.
Definition contour.c:390
Contour simplification_douglas_peucker_bezier3(Contour C, int j1, int j2, double d)
Simplifie un contour par la méthode des courbes de Bézier de degré 3.
Definition contour.c:1482
int abscissa(Robot *r)
Récupère la coordonnée x de la position actuelle du robot.
Definition contour.c:148
Bezier2 bezier2_approximation(Contour c, int j1, int j2)
Approxime un contour par une courbe de Bézier de degré 2.
Definition contour.c:1108
Bezier3 bezier3_approximation(Contour c, int j1, int j2)
Approxime un contour par une courbe de Bézier de degré 3.
Definition contour.c:1345
Point calcul_ct_bezier2(Bezier2 b2, double t)
Calcule le point sur une courbe de Bézier de degré 2.
Definition contour.c:1022
Contour simplification_douglas_peucker(Tableau_Point T, int j1, int j2, double d)
Simplifie un contour en utilisant la méthode de simplification des segments de Douglas-Peucker.
Definition contour.c:965
Liste_Contours algo_contours(Image I)
Extrait tous les contours d'une image.
Definition contour.c:506
void contours_data(Liste_Contours c)
Affiche les données des contours sur le terminal.
Definition contour.c:629
void contours_data_bezier3(Liste_Contours c)
Affiche des informations sur les courbes de Bézier de degré 3 sur le terminal.
Definition contour.c:751
void move_forward(Robot *r)
Avance le robot d'une position dans la direction de son orientation actuelle.
Definition contour.c:54
Déclaration des fonctions pour geometry.c.
struct Point_ Point
Type Point.
struct Bezier2_ Bezier2
Profil d'une courbe de Bézier de degré 2.
struct Bezier3_ Bezier3
Profil d'une courbe de Bézier de degré 3.
Déclaration des fonctions pour image.c.
Déclaration des fonctions pour sequence_point.c.
struct Tableau_Point_ Tableau_Point
struct Liste_Contours_ Liste_Contours
Liste_Point Contour
Definition sequence_point.h:50
Structure représentant une image PBM.
Definition contour.h:23
int x
Definition contour.h:24
int y
Definition contour.h:24
Orientation o
Definition contour.h:25