begin process at 2012 05 30 09:39:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

Simulateur & conduite automatique d'1 voiture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Simulateur & conduite automatique d'1 voiture

vendredi 1 mai 2009 à 21:48:46 | Simulateur & conduite automatique d'1 voiture

sonia393

Bonjour,
voila, je suis en train de créer un petit simulateur de voiture avec conduite automatique :
j'ai un état 1 (position, cap, vitesse, accélération). La fonction commande permet de donner la direction et l'accélération à prendre en fonction de l'environnement (il s'agit d'un circuit avec des obstacles représentés par des 1 et des espaces libres par 0).

La fonction balayage consiste à balayer dans les directions teta appartenant à [cap-pi/2, cap+pi/2]
pour chercher l'obstacle le plus loin dans chacune de ces directions.
ensuite on sélectionne la valeur maximale de ces distances. Et cette valeur sera le nouveau cap à prendre.

voila le code :
le pb que je rencontre, c'est que j'obtient tjs 0 comme distance maximale
je crois que le pb se situe au niveau de la boucle while


typedef struct {float abscisse;float ordonnee;} points;

float balayage ( points position,float cap , int** circ, int n, int m) {

float teta ;int r=0; int k=1;
int a= (position.abscisse);
int b= (position.ordonnee);
points libre1 = position; points libre2;
int i2= (libre2.abscisse);
int j2= (libre2.ordonnee);
float * tab_teta = tab_radians (181);
for ( r=0; r<=180; r++) {
teta = (cap- PI/2. +r*0.01745 ); /*on balaye tous les 1° ( Pi/180~0.01745... */
while (i2<(n*COEF) && j2<(m*COEF) && i2>=0 && j2>=0 && circ[i2][j2]==0) {
libre1 =libre2;
i2= (a + floor (0.1*k));
j2= (b+ floor (tanf (teta) *0.1*k));
k++;
}
tab_teta [r]= distance (position, libre1);
}
return max_tab ( tab_teta, 181);
}





float * tab_radians ( int n) {
float * tab = (float*) malloc (n* sizeof(float ) );
int i;
for (i=0; i<n; i++) tab[i] = 0 ;
return tab;
}

/* fonction puissance pour flottants*/

float puissf (float x, int y) {
return (y > 0) ? (x*puissf(x, y-1)) : 1;
}

/* recherche du maximum dans un tab de flottants*/

float max_tab (float *tab,int taille){
int i;
float max=tab[0];
for(i=1;i<taille;++i){
if (tab[i]> max){
max=tab[i];
}
}
return max;
}


/* calcul de la distance entre deux points du circuit */

float distance (points p1, points p2) {
return sqrtf ( puissf(((p1.abscisse)-(p2.abscisse)),2)+ puissf(( (p1.ordonnee)- (p2.ordonnee)),2));
}
dimanche 10 mai 2009 à 14:47:40 | Re : Simulateur & conduite automatique d'1 voiture

rt15

Membre Club Administrateur CodeS-SourceS
Bienvenue,

Ca ne sert à rien de poster deux fois la même question à deux heures d'intervalle. Je supprime le doublon.

Indente ton code, ça le rend infiniment plus lisible.

Sinon ça à l'air pas mal à vu de nez.

Pour la correction, désolé, c'est dimanche.

A ta place j'utiliserais un débogueur (Code::Blocks si tu es plutôt "libre", Visual C++ si tu es plutôt microsoft, proposent tous les deux un débogueur). Cela te permet de faire du pas à pas dans le code, d'inspecter les variables...

Si tu ne veux pas de débogueur (Tu as tort !), tu peux mettre des printf un peu partout.

De cette manière, tu connaîtra le détail de tous tes calculs qu'il faudra que tu compare avec ce que tu attends -> papier crayon et calculatrice.
samedi 24 octobre 2009 à 15:27:59 | Re : Simulateur & conduite automatique d'1 voiture

kikosoft

cc
slt , moi j vé fére un prg de simualtion 3d aide à la conduite automobile !
j vé utulisé Visuel c++ é Directx
alr jémré bien un pti pe d'aide :)


Cette discussion est classée dans : points, int, position, tab, float


Répondre à ce message

Sujets en rapport avec ce message

algorithme de tri [ par chegue02 ] Bonjour, svp vous pouvez mé corrigé ce code concernant l'algorithme de tri merci d'avance #include #include // fonction qui permet de trier tab en conversion float to double [ par chalmia2s ] Bonjour,J'ai un probleme de conversion float, double, voila la partie du programme concerné: float *rd, float*rq;  double Proie_Predateur [ par bekha ] Bonjour à tous en faite j'ai un problème que j'arrive pas résoudre je demandai si vous pourrez m'aider,je suis d'ecrire un programme en c++ de 4 préda Aide fonctions [ par Anonymal ] Bonsoir, voilà je dois faire un code où le professeur tape les 20 notes de ses 20 élèves, le programme calculant la moyenne et l'affichant, puis donne tri insertion langage C et appel de fonction [ par washh ] Bonjour,Je débute en langage C et j'ai écrit l'algorithme du tri d'un tableau contenant des chaines de caractères, mais dès la compilation, le program chaine de caractere [ par superstarz ] Bonjour, Je suis débutant en C++, et je seche sur un TP concernant les chaines de caractère.Les érreurs qui surviennent lors de la compilation sont le opération flottante incorrecte ? [ par steph12358 ] Bonjour tout le mondeDésolé pour la question super basique mai j'ai un soucisCe code fonctionnait dans mon projet jusqu'à ce que j'ajoute un contrôle Algorithme RSA utilisation des floats [ par douss4 ] Bonsoir,J'ai essayé d'écrire un algorithme de cryptage (RSA). Le code à bien marché avec des int. J'ai changé les int par des float. Au moment du décr Envoie de données vers un serveur en langage C [ par esmee ] Bonjour,Besoin d'aide,Débutant en programmation , j'aimerai  modifié ce code ci-dessous qui fonctionne bien :write(to_server_socket,"Momo",15);read(to


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales