Révision 659
Ajouté par lefraisse il y a presque 4 ans
main.c | ||
---|---|---|
if (i==8){
|
||
deglat=decode_nombre(ch,2);
|
||
for (j=2;j<i+1;j++){
|
||
deglat+=(ch[j]-'0')*(pow(10,-j+2))*1/6;
|
||
deglat+=(ch[j]-'0')*(pow(10,-j+2))*0.1666666666666;
|
||
}
|
||
return deglat;
|
||
}
|
||
... | ... | |
if (i==9){
|
||
deglong=decode_nombre(ch,3);
|
||
for (j=3;j<i+1;j++){
|
||
deglong+=(ch[j]-'0')*(pow(10,-j+3))*1/6;
|
||
deglong+=(ch[j]-'0')*(pow(10,-j+3))*0.1666666666666;
|
||
}
|
||
return deglong;
|
||
}
|
||
... | ... | |
}
|
||
|
||
//Calcul de la distance entre deux positions GPS
|
||
//float calcul_distance(Position p1,Position p2){
|
||
// float r=6378.137;
|
||
// return 2*r*asin(sqrt(pow(sin(pi/180*(p_1.latitude-p_2.latitude)/2),2)+cos(pi/180*p_1.latitude)*cos(pi/180*p_2.latitude)*pow(sin(pi/180*(p_1.longitude-p_2.longitude)/2),2)));
|
||
//}
|
||
float calcul_distance(Position p1,Position p2){
|
||
float r=6378.137;
|
||
return 2*r*asin(sqrt(pow(sin(pi/180*(p1.latitude-p2.latitude)/2),2)+cos(pi/180*p1.latitude)*cos(pi/180*p2.latitude)*pow(sin(pi/180*(p1.longitude-p2.longitude)/2),2)));
|
||
}
|
||
|
||
//Calcul de la vitesse entre 2 positions Gps
|
||
//float calcul_vitesse(Position p1,Position p2){
|
||
float calcul_vitesse(Position p1,Position p2){
|
||
float d;
|
||
d=calcul_distance(p1,p2);
|
||
return d*3600;
|
||
}
|
||
|
||
//}
|
||
//Structure zone dangereuse
|
||
typedef struct {
|
||
Position rpos;
|
||
float vitmax;
|
||
} Zone;
|
||
|
||
//On donne la distance de la zone dangereuse la plus proche
|
||
int distance_la_plus_proche_zone(Position P,Zone r[],int nb_zones,float *d){
|
||
int i,index;
|
||
//initialisation de la distance zones dangereuse-Position
|
||
float d_min=calcul_distance(P,r[0].rpos);
|
||
|
||
//Calcul de la distance zones dangereuse-Position pour conna?tre la zone dangereuse la plus proche
|
||
for(i=1;i<nb_zones;i++){
|
||
*d=calcul_distance(P,r[i].rpos);
|
||
if (*d<=d_min){
|
||
index=i+1;
|
||
d_min=*d;
|
||
}
|
||
}
|
||
return index,d_min;
|
||
}
|
||
|
||
//Ajouter vos tests unitaires dans cette fonction.
|
||
void tests_unitaires(void){
|
Formats disponibles : Unified diff
debug fonction conversion, création fonction distance zone dangereuse