assert1
Dependencies: mbed X_NUCLEO_IHM02A1
chemin.h@3:06cbe2f6c494, 2019-03-30 (annotated)
- Committer:
- JimmyAREM
- Date:
- Sat Mar 30 15:10:23 2019 +0000
- Revision:
- 3:06cbe2f6c494
- Parent:
- 2:977799d72329
odo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Pierr | 2:977799d72329 | 1 | #ifndef CHEMIN_H |
Pierr | 2:977799d72329 | 2 | #define CHEMIN_H |
Pierr | 2:977799d72329 | 3 | // C code to implement Priority Queue |
Pierr | 2:977799d72329 | 4 | // using Linked List |
Pierr | 2:977799d72329 | 5 | // https://www.geeksforgeeks.org/priority-queue-using-linked-list/ |
Pierr | 2:977799d72329 | 6 | |
Pierr | 2:977799d72329 | 7 | // C code for path fining |
Pierr | 2:977799d72329 | 8 | // https://github.com/AtsushiSakai/PythonRobotics |
Pierr | 2:977799d72329 | 9 | |
Pierr | 2:977799d72329 | 10 | //Exemple: |
Pierr | 2:977799d72329 | 11 | /* |
Pierr | 2:977799d72329 | 12 | int vitesse_deplacement = 200; |
Pierr | 2:977799d72329 | 13 | |
Pierr | 2:977799d72329 | 14 | calc_distances(20,180,270,180); //x_départ , y_arrivée , x_arrivée, y_arrivée |
Pierr | 2:977799d72329 | 15 | Node* commandes = (Node*)malloc(sizeof(Node)); |
Pierr | 2:977799d72329 | 16 | commandes = traduction_points_commandes(trouver_chemin(20,180,270,180)); |
Pierr | 2:977799d72329 | 17 | while(!isEmpty(&commandes)){ |
Pierr | 2:977799d72329 | 18 | int angle,distance_avancement_cm,_ = 0; |
Pierr | 2:977799d72329 | 19 | peek(&commandes,&angle,&distance_avancement_cm,&_); //on recupere les infos du point |
Pierr | 2:977799d72329 | 20 | pop(&commandes); |
Pierr | 2:977799d72329 | 21 | printf("rotation %d, avancement de %d\n",angle,distance_avancement_cm); |
Pierr | 2:977799d72329 | 22 | if(distance_avancement_cm != 0 && angle != 0) { |
Pierr | 2:977799d72329 | 23 | test_ligne_droite(10*distance_avancement_cm, vitesse_deplacement); |
Pierr | 2:977799d72329 | 24 | test_rotation_rel(angle,vitesse_deplacement); |
Pierr | 2:977799d72329 | 25 | } |
Pierr | 2:977799d72329 | 26 | } |
Pierr | 2:977799d72329 | 27 | */ |
Pierr | 2:977799d72329 | 28 | |
Pierr | 2:977799d72329 | 29 | |
Pierr | 2:977799d72329 | 30 | #include <stdio.h> |
Pierr | 2:977799d72329 | 31 | #include <stdlib.h> |
Pierr | 2:977799d72329 | 32 | #include <time.h> |
Pierr | 2:977799d72329 | 33 | |
Pierr | 2:977799d72329 | 34 | |
Pierr | 2:977799d72329 | 35 | |
Pierr | 2:977799d72329 | 36 | |
Pierr | 2:977799d72329 | 37 | // Node |
Pierr | 2:977799d72329 | 38 | typedef struct node { |
Pierr | 2:977799d72329 | 39 | int x; |
Pierr | 2:977799d72329 | 40 | int y; |
Pierr | 2:977799d72329 | 41 | int distance; |
Pierr | 2:977799d72329 | 42 | |
Pierr | 2:977799d72329 | 43 | // Lower values indicate higher priority |
Pierr | 2:977799d72329 | 44 | int priority; |
Pierr | 2:977799d72329 | 45 | |
Pierr | 2:977799d72329 | 46 | struct node* next; |
Pierr | 2:977799d72329 | 47 | |
Pierr | 2:977799d72329 | 48 | } Node; |
Pierr | 2:977799d72329 | 49 | |
Pierr | 2:977799d72329 | 50 | // Function to Create A New Node |
Pierr | 2:977799d72329 | 51 | Node* newNode(int x , int y, int distance, int p); |
Pierr | 2:977799d72329 | 52 | |
Pierr | 2:977799d72329 | 53 | // Return the value at head |
Pierr | 2:977799d72329 | 54 | void peek(Node** head, int*x, int*y, int*distance); |
Pierr | 2:977799d72329 | 55 | |
Pierr | 2:977799d72329 | 56 | // Removes the element with the |
Pierr | 2:977799d72329 | 57 | // highest priority form the list |
Pierr | 2:977799d72329 | 58 | void pop(Node** head); |
Pierr | 2:977799d72329 | 59 | |
Pierr | 2:977799d72329 | 60 | // Function to push according to priority |
Pierr | 2:977799d72329 | 61 | void push(Node** head, int x, int y, int distance, int p); |
Pierr | 2:977799d72329 | 62 | |
Pierr | 2:977799d72329 | 63 | // Function to check is list is empty |
Pierr | 2:977799d72329 | 64 | int isEmpty(Node** head); |
Pierr | 2:977799d72329 | 65 | |
Pierr | 2:977799d72329 | 66 | |
Pierr | 2:977799d72329 | 67 | void calc_distances(int ox, int oy, int gx , int gy); //ogigine, goal |
Pierr | 2:977799d72329 | 68 | |
Pierr | 2:977799d72329 | 69 | Node* trouver_chemin(int ox, int oy, int gx , int gy); //retourne une suite de points , du point de départ au point d'arrivé en évitant les obstacles |
Pierr | 2:977799d72329 | 70 | |
Pierr | 2:977799d72329 | 71 | Node* traduction_points_commandes(Node* pq); |
Pierr | 2:977799d72329 | 72 | |
Pierr | 2:977799d72329 | 73 | void afficher_terrain(); |
Pierr | 2:977799d72329 | 74 | void afficher_terrain(Node* commandes); |
Pierr | 2:977799d72329 | 75 | |
Pierr | 2:977799d72329 | 76 | int conversion_codage_angles(int o); |
Pierr | 2:977799d72329 | 77 | |
Pierr | 2:977799d72329 | 78 | |
Pierr | 2:977799d72329 | 79 | void aller_a_point(int ox , int oy, int gx , int gy , int vitesse_deplacement = 100); |
Pierr | 2:977799d72329 | 80 | |
Pierr | 2:977799d72329 | 81 | #endif |
Pierr | 2:977799d72329 | 82 | |
Pierr | 2:977799d72329 | 83 |