Projet

Général

Profil

« Précédent | Suivant » 

Révision 464

Ajouté par annoyau il y a presque 4 ans

Calcul de la distance en virgule fixe

Voir les différences:

main.c
#include <strings.h>
#include "trame.h"
#include <math.h>
int memo_L;
int memo_l;
//Trames de tests ? modifier si n?cessaire.
char * trames[]= {"$GPGSV,3,2,10,15,03,077,,18,04,041,42,19,85,271,,20,08,214,*7C",
"$GPGSV,3,3,10,22,39,053,50,28,15,320,*7E",
......
}
int Conversion_sexagesimale(int nb_sexa)
{
int result=0, result_min=0;
float result=0, result_min=0;
int degres=0;
int stock=0;
int result_vf=0;
stock = nb_sexa;
degres=stock/1000000;
result_min=(stock-(degres*1000000));
result_min = (result_min/10000);
degres=nb_sexa/1000000;
result_min=(nb_sexa-(degres*1000000));
result=(degres+(result_min/60));
......
int i,j,i2;
char tab_lat[11];
char tab_lon[12];
long resultat_l;
long resultat_L;
long conversion_L;
long conversion_l;
int resultat_l;
int resultat_L;
int conversion_L;
int conversion_l;
long stockage_lat[2];
long stockage_lon[2];
float distance=0;
float distance=0;
double distance1=0;
int i1=0, j1=0;
long lat1 = 0, lat2 = 0, lon1 = 0, lon2 = 0;
......
conversion_l = Conversion_sexagesimale(resultat_l);
printf("Latitude %ld\n",conversion_L);
printf("Longitude : %ld\n",conversion_l);
stock_lat (conversion_L, &stockage_lat);
stock_lon (conversion_l, &stockage_lon);
if (stockage_lat[0]>stockage_lat[1])
{
lat1 = stockage_lat[1];
lat2 = stockage_lat[0];
lon1 = stockage_lon[1];
lon2 = stockage_lon[0];
distance = calcul_distance(&lat1,&lat2,&lon1,&lon2);
printf("La distance est : %f\n",distance);
stock_lat_lon (conversion_L, conversion_l);
}
}
}
void stock_lat (long lat_R, long * stock_L)
void stock_lat_lon (long lat_R, long lon_R)
{
if ((lat_R != stock_L[0]))
if ((lat_R != memo_L) || (lon_R != memo_l))
{
stock_L[1] = stock_L[0];
stock_L[0] = lat_R;
calcul_distance(lat_R,memo_L,lon_R,memo_l);
printf("bite2 :%ld\n",memo_L);
printf("bite1 :%ld\n",memo_l);
}
printf("bite :%ld\n",stock_L[1]);
memo_L = lat_R;
memo_l = lon_R;
}
......
if ((lon_R != stock_l[0]))
{
stock_l[1] = stock_l[0];
stock_l[0] = lon_R;
}
stock_l[0] = lon_R;
printf("bite :%ld\n",stock_l[0]);
}
void calcul_distance (long * lat1, long * lat2, long * lon1, long * lon2)
void calcul_distance (long lat1, long lat2, long lon1, long lon2)
{
long delta_lat = lat1 - lat2;
long deltat_lon = lon1 - lon2;
float distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
int distance = sqrt(pow(delta_lat,2)+ pow(deltat_lon,2));
printf("SAlope : %lf\n",distance);
printf("SAlope : %d\n",distance);
}
void decode_trame(char * tab_lat, char * tab_lon, char *trame)
{

Formats disponibles : Unified diff