Révision 496
Ajouté par Ramazan CELIK il y a presque 3 ans
main.c | ||
---|---|---|
float calcul_distance(position *p1, position *p2)/* fonction qui calcule la distance (en km) entre 2 points reperes par leur latitude et longitude */
|
||
{
|
||
float res_distance;
|
||
res_distance = sqrt(pow((p2->latitude-p1->latitude)*PI*rayon_terre/180.0,2)+pow(((p2->longitude-p1->longitude)*(cos(((p2->latitude+p1->latitude)/2.0)*PI/180.0)*PI*rayon_terre/180.0)),2)); /*formule calcul d'une distance sur une sphere */
|
||
|
||
/* formule de calcul d'une distance sur une sphere, d'apres les recherches sur internet */
|
||
res_distance = sqrt(pow((p2->latitude-p1->latitude)*PI*rayon_terre/180.0,2)+pow(((p2->longitude-p1->longitude)*(cos(((p2->latitude+p1->latitude)/2.0)*PI/180.0)*PI*rayon_terre/180.0)),2));
|
||
|
||
return res_distance;
|
||
}
|
||
|
||
float calcul_vitesse(position p1, position p2) /* fonction qui calcule la vitesse moyenne (en km/h) entre 2 releves GPS successifs */
|
||
{
|
||
float res_vitesse;
|
||
res_vitesse = calcul_distance(&p1, &p2)*3600.0;
|
||
res_vitesse = calcul_distance(&p1, &p2)*3600.0; /* v=d/t sachant que le tps est de 1s on a donc la vitesse en km/s, soit x3600 pour l'avoir en km/h */
|
||
return res_vitesse;
|
||
}
|
||
|
||
... | ... | |
|
||
if (&pos) /* trame valide donc elle existe */
|
||
{
|
||
v = calcul_vitesse(pos, pos_prec);
|
||
v = calcul_vitesse(pos, pos_prec); /* calcule la vitesse entre la position de la voiture */
|
||
nbzone=distance_a_la_plus_proche_zone(pos, zones, sizeof(zone), &d); /*definit la zone la plus proche de la position actuelle */
|
||
|
||
if ( (d<seuil_d) && (v>zones[nbzone].vitmax)) /*verification de la voiture dans une zone proche de la zone et si la vitesse est trop grande pour cette zone*/
|
Formats disponibles : Unified diff
Oublie de l’alarme, programmes et test fonctionnels, indentation et commentaire OK
Plus qu’à marquer la version définitive en créant le tag