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

Algorithmes et structures de données Discussion :

Optimiser une trajectoire dans le plan 2D


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club Avatar de chaospat
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut Optimiser une trajectoire dans le plan 2D
    Bonjour, j'ai un petit problème et je trouve pas l'algorithme pour le résoudre (je programme avec du c++). Le voici:
    sur un plan en 2D horizontale, j'ai un solide A qui doit passer par des points dans un ordre précis (on va appeler le prochain point B).

    Le programme prend en sortie un x, un y et une poussé.

    Ce que je voudrais faire, est de trouver le point, "P", vers où me diriger pour réduire au maximum la distance du virage pour atteindre le point B.

    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
     
    //ces informations sont mises à jour a chaque boucle
    solide A:
    avec une position X Y,
    une vitesse VX VY (peut-être négative),
    et une poussé entre 0 et 100 (nous pouvons l’ignorer ou la mettre à 100 pour rendre l'algo plus simple). 
     
    point B:
    position random
    une position BX, BY (toujours positif)
    un rayon de 600 unités
     
    //je n'est pas accès aux position des points après B
     
    un angle ,ang, en degré entre le solide A et B, -180 < ang <= 180,
    (l'angle ne peut changer que d'un maximum de +ou-18 degré en un tour)
     
    la distance entre A et B nommé d
    J'avais pensé a utilisé une matrice de rotation pour trouver P, mais je trouve pas le bon cx et cy
    px = cx*cos(ang) - cy*sin(ang);
    py = cx*sin(ang) + cy*cos(ang);

    S'il manque des informations ou besoin de plus de détailles, merci de me le dire pour que je les ajoutes.

    ------Modif du message éffectué------
    précision plan 2D horizontale

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Dans ton message, tu parles d'une poussée. C'est quoi une poussée ? Tu es dans un plan 'Vertical', et la poussée, c'est le poids, qui attire ton solide vers le bas ?
    Et tu précises que (Bx, By) sont forcément positives...en quoi c'est important ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Nouveau membre du Club Avatar de chaospat
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Je suis sur un plan horizontale et la poussé est la puissance du moteur de mon véhicule(le solide A). Je dois programmer la manière dons il se déplace dans le jeu Coders Strike Back. Et je dis que Bx et By sont positive parce qu'ils le sont tout simplement.

    Donc pas besoin d'inclure de la physique. C'est surtout un problème de trigonométrie pour tourner le plus vite possible.


    Mon approche peut très bien être mauvaise aussi, alors si vous avez une meilleure idée n'hésitez pas.
    Voici une image pour que vous puissiez voir a quoi sa ressemble.
    Nom : téléchargement (1).png
Affichages : 1220
Taille : 524,0 Ko

    Légende:
    Vous pouvez ignorer le gros rectangle avec 6452, 3656, c'est la position de ma souris.
    Les véhicule sont des pods (Solid A)
    Le cercle avec un 1 est le point que je veut atteindre la plus rapidement possible (Point B) dans cette image.
    Les petites flèche bleu indique le vecteur de déplacement.
    Les lignes rouge et orange vont jusqu'à la cible(Point P, là où il veut aller) du pod. Je veux modifier la cible pour tourner le plus rapidement possible afin d’atteindre le point B.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ceci pourra peut-être t'aider :
    À chaque tour, le mouvement des pods est calculé ainsi :

    Cible : si l'angle vers la cible dépasse 18 degrés, alors l'angle est borné (sauf pour le 1er tour).
    Force : le vecteur normalisé entre la position du pod et sa cible est multiplié par la force (thrust). Le résultat est additionné au vecteur vitesse actuel.
    Mouvement: le vecteur vitesse est ajouté à la position du pod pour calculer sa nouvelle position. Si une collision a eu lieu pendant le déplacement, les pods rebondissent l'un contre l'autre.
    Friction : le nouveau vecteur vitesse de chaque pod est multiplié par 0.85
    Les vitesses sont tronqués et les positions sont arrondies à l'entier le plus p
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Optimiser une trajectoire dans le plan 2D
    Bonjour,

    Je ferais la courbe du chien.

  6. #6
    Nouveau membre du Club Avatar de chaospat
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/04/2009, 10h07
  2. Réponses: 0
    Dernier message: 28/11/2008, 17h36
  3. Réponses: 34
    Dernier message: 25/09/2007, 18h48
  4. [SQL] Optimiser une jointure dans PHP
    Par Invité dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 11/08/2006, 17h56
  5. Représentation d'une sphère dans un plan...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/01/2006, 17h05

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