IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Mouvement d'un robot


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Formation
    Inscrit en
    Septembre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formation

    Informations forums :
    Inscription : Septembre 2023
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Mouvement d'un robot
    Bonjour à tous, je suis nouveau et je sollicite votre aide.
    Je me demande pourquoi losque je me déplace en arrière après m'etre déplacé plusieurs fois en avant en vitesse 1 et que je me déplace en arrière en vitesse rien ,rien ne se passe, alors qu'en vitesse plus haute, les coordonnées changent...
    Je pense qu'il fait le chemin dans l'autre sens , mais même après plusieurs mouvement en arrière à vitesse1 rien ne change.
    Et il ne se déplace en arrière qu'après s'être déplacé en avant enfin....Avec un angle de 0 le déplacement arrière se fait sur abcisse et ordonné alors que c'est -PI sur le cercle trigo et ne devraient changer que les abcisse.
    J'utilise une interface mais je n'arrive pas à mettre le print ecran que j'ai fait de celle-ci.
    Pouvez-vous m'aider s'il-vous-plait?

    Voila le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    	public boolean marcherAvant(int _angle)
    	{
    		double posX = Math.round(this.pos.getX()*100.00)/100.00;
    		double posY = Math.round(this.pos.getY()*100.00)/100.00;
    		double moveCos = Math.round(Math.cos(this.angle*Math.PI/180)*100.00)/100.00;
    		double moveSin = Math.round(Math.sin(this.angle*Math.PI/180)*100.00)/100.00;
    		if(this.estOn)
    		{
    			this.pos.setX(posX + Math.round(this.vitesse*moveCos*100.00)/100.00);
    			this.pos.setY(posY + Math.round(this.vitesse*moveSin*100.00)/100.00);
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}	
    	public boolean marcherArriere(int _angle)
    	{
    		double posX = Math.round(this.pos.getX()*100.00)/100.00;
    		double posY = Math.round(this.pos.getY()*100.00)/100.00;
    		double moveCos = Math.round(Math.cos((this.angle+180)*Math.PI/180)*100.00)/100.00;
    		double moveSin = Math.round(Math.sin((this.angle+180)*Math.PI/180)*100.00)/100.00;
    		if(this.estOn)
    		{
    			this.pos.setX(posX+ Math.round(this.vitesse*moveCos*100)/100);
    			this.pos.setY(posX+ Math.round(this.vitesse*moveSin*100)/100);
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}
    Pour les boutons, le clique permet si le robot est sur On de lancer les méthodes, et d'actualiser le texte.Les setter fonctionnent bien pour la vitesse et l'angle et l'allumage.
    a+
    Images attachées Images attachées  

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Formation
    Inscrit en
    Septembre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formation

    Informations forums :
    Inscription : Septembre 2023
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Cela dit, j'ai remplacé this.angle par _angle, mais toujours le même problème au recul.
    Après quelques tests, conclusion :
    -deplacement arrière en vitesse 1 angle 90 : abcisse 0 ordonne -1 , aucun deplacement arrière possible par la suite
    -deplacement avant avec même valeurs d'attributs : ordonnées augmentent de 1 en 1 mais pas l'abcisse
    de 3 en ordonnée après plusieurs déplacments avant, au premier deplacement arrière de 90° et vitesse 1 : nouvelle ordonnée -1, abcisse 0
    -deplacement arrière en vitesse 1 et angle -90 : abcisse 0 ordonnée :1, aucun deplacement arrière possible par la suite
    -deplacement avant avec même valeurs d'attributs : ordonnées augmentent de -1 en -1 mais pas l'abcisse
    de 3 en ordonnée après plusieurs déplaments avant, au premier deplacement arrière de -90° et vitesse 1 : nouvelle ordonnée 1, abcisse 0

    Conclusion : si la vitesse est de 1, le déplacement arrière se fait mal

    Des idées?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Formation
    Inscrit en
    Septembre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formation

    Informations forums :
    Inscription : Septembre 2023
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Regardez bien le math.round ou il manque le .00..
    et bien voila, d'ou vient l'erreur

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 075
    Points : 7 981
    Points
    7 981
    Par défaut
    Aussi tu utilises posX dans le setY ... peut être as tu corrigé entretemps.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		
    this.pos.setX(posX+ Math.round(this.vitesse*moveCos*100)/100);
    this.pos.setY(posX+ Math.round(this.vitesse*moveSin*100)/100);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Formation
    Inscrit en
    Septembre 2023
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formation

    Informations forums :
    Inscription : Septembre 2023
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci.
    Après je suis passé par un tuto et fait un petit programme de collision avec des carré de la classe rectangle implémentée d'avance.
    La méthode intersect permet de voir quand ils se touchent. Alors avec un petit déplacement c'est marrant.
    Et comme le repaint fait l'actualisation saccadée, j'ai mis des paramètres...et la tadam, ça laisse un carré partout ou je suis passé.
    L'idée venue : mettre l'autre carré de la couleur du font de la frame pour le cacher, incrémenter les déplacements, et quand le carré caché est trouvé dire :
    C'est gagné, en "n" déplacements. , un débutant quoi lol.
    Lundi : projet Snake.
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Commande de mouvement d'un robot
    Par Ic0ne dans le forum MATLAB
    Réponses: 0
    Dernier message: 22/10/2021, 14h18
  2. Déterminer un mouvement pour une colonie de robots
    Par Remilia dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 16/03/2017, 02h41
  3. Programmer des mouvements d'un robot
    Par x-programer dans le forum Intelligence artificielle
    Réponses: 2
    Dernier message: 14/10/2011, 22h50
  4. Générateur de mouvement d'un robot omni
    Par maherrmkh dans le forum Simulink
    Réponses: 2
    Dernier message: 11/04/2010, 23h22
  5. guider les mouvement d'un robot
    Par oussamus dans le forum Ogre
    Réponses: 8
    Dernier message: 01/04/2008, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo