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 :

Suivre un objet


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Par défaut Suivre un objet
    Bonjour,
    Je presente rapidement mon probleme :
    J'ai un missile dans un monde 3D (mais on ne va utiliser que le 2D la hauteur ne comptant pas).
    Celui ci doit suivre une voiture qui se deplace et changer donc de position a chaque tour. (pour simplifier on prendra une boule pour ne pa avoir a gerer la rotation du missile).
    Quelle est la technique la plus simple pour y arriver ?

    j'ai commencé par faire un truc assez compliqué mais je m'en sort pa trop alors j'essaye d'avoir d'autres idées.

    Merci !

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut Re: Suivre un objet
    Salut,

    Citation Envoyé par Dr@ke
    Quelle est la technique la plus simple pour y arriver ?
    A mon avis, caler à chaque tour la direction de la vitesse de ton missile sur la droite missile-cible.
    Ensuite, connaissant la position du missile, sa vitesse, sa direction, tu recalcules sa nouvelle position, et tu re-boucles.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Par défaut
    hm je crois que c sur ce ke j'etai parti o debut...
    Mais tu pourai detailler un peu plus ton : "caler"

    Et sinon javais une aute idée mais qui n'a pas l'air de marcher; c'etait de calculer l'equation de la droite entre les 2 objets ds le genre : y = ax+b
    puis faire avancer X de 1 par ex ce qui donnerai le y. mais j'ai limpression que ca fera varier sa vitesse..

    et une derniere technique serai de faire un algorithme qui va calculer le chemin le plus court entre les 2 points.

    Merci de m'aider

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Juste une précision, stp : dois-tu SUIVRE la voiture, ou INTERCEPTER la voiture (ce qui est le but d'un missile, normalement : toucher la cible... ;-)). Ca change beaucoup l'algorithme...

    De plus, est-ce que la vitesse du missile et/ou de la voiture sont constantes ? Quel est le facteur entre les deux vitesses (genre "V(missile)=10*V(voiture)", par exemple)
    Le trajet de la voiture est-il aléatoire, linéaire ? Quelle est la marge de manoeuvre du missile (sa "maniabilité", si tu préfères) ? Peut-il tourner à angle droit, par exemple ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Citation Envoyé par Dr@ke
    Mais tu pourai detailler un peu plus ton : "caler"
    Tu calcules ton vecteur missile-voiture.
    Tu le normes.
    Si ton missile a une vitesse V (en norme), ton vecteur vitesse est V fois ton vecteur missile-voiture normé.


    Citation Envoyé par Dr@ke
    et une derniere technique serai de faire un algorithme qui va calculer le chemin le plus court entre les 2 points.
    Si on évites les vitesses relativistes, le chemin le plus court entre 2 points est encore... la ligne droite . Bon, ok, plus si les points bougent, mais bon...

    Essaye déjà de faire avancer ton missile en ligne droite vers sa cible à chaque pas de temps. Tu optimisera ensuite.

    Si tu veux approfondir cette méthode, fais une recherche sur google avec "courbe du chien".
    Tu as la visualisation avec une applet là, par exemple: http://www.univ-lemans.fr/enseigneme...eca/chien.html
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Par défaut
    bah la voiture n'a pas de vitesse constante. Le joueur la deplace et le missile (qui lui a une vitesse constante) doit le rejoindre pr le fraper (sa vitesse est sup a celle de la voiture).
    Ce ke jessaye de faire :
    Jai un vecteur direction (vers lequel le missile se deplace) et un vecteur directeur (entre le missile et la voiture). Je calcule l'angle entre ces 2 vecteurs.
    Et c'est la qu'il me faut de l'aide. Une fois que j'ai cet angle...avec quelle formule je peu trouver la position du nv point.(jai la position de lancien point du missile, son angle et sa vitesse).
    Jai essayé des formules de physiques, des cos, des sin...marche pas.

    Le truc le plus proche que j'ai reussi a faire cT de calculer l'equation de la droite entre le kart et le missile ss y : ax+b et dincrementer x. Le missile le suit mais a des vitesses ki varient en fonction de la courbure de la droite par rapport a l'axe horizontal. Il fodrai o pire changer le repere et le tourner mais je c pa tro faire et j'y croi pa trop...
    Voila, jspr vous avoir eclairer sur mon probleme.

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Citation Envoyé par Dr@ke
    Et c'est la qu'il me faut de l'aide. Une fois que j'ai cet angle...avec quelle formule je peu trouver la position du nv point.(jai la position de lancien point du missile, son angle et sa vitesse).
    Jai essayé des formules de physiques, des cos, des sin...marche pas.
    Position actuelle du missile: X0, Y0
    Vecteur vitesse du missile: Vx, Vy
    Pas de temps: DT
    Nouvelle position du missile: X1, Y1

    X1=X0+Vx.DT
    Y1=Y0+Vy.DT

    N'utilises ton angle entre les deux directions si tu implémentes un algorithme pour gérer la rotation du vecteur vitesse du missile. Si tu fais juste un missile "suiveur" (c'est-à-dire qui vise tout le temps sa cible), tu n'as pas besoin de t'en servir (prends juste ton vecteur "direction" égal à ton vecteur "directeur").

    Citation Envoyé par Dr@ke
    Le truc le plus proche que j'ai reussi a faire cT de calculer l'equation de la droite entre le kart et le missile ss y : ax+b et dincrementer x. Le missile le suit mais a des vitesses ki varient en fonction de la courbure de la droite par rapport a l'axe horizontal. Il fodrai o pire changer le repere et le tourner mais je c pa tro faire et j'y croi pa trop...
    Je présume que tu incrémentes ton x avec une valeur constante... dans ce cas, le déplacement de ton missile se fait en racine(x²+y²), donc rien de constant en norme si la droite missile-cible bouge. Si tu connais ton vecteur vitesse, incrémente plutôt comme je te l'ai indiqué précédemment, ça sera aussi simple (et ça revient au même que d'incrémenter un x sur la droite y=ax+b!)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 91
    Par défaut
    Ah merci ca marche super !
    Par contre juste par curiosité, la 2e technique

    Je présume que tu incrémentes ton x avec une valeur constante... dans ce cas, le déplacement de ton missile se fait en racine(x²+y²), donc rien de constant en norme si la droite missile-cible bouge. Si tu connais ton vecteur vitesse, incrémente plutôt comme je te l'ai indiqué précédemment, ça sera aussi simple (et ça revient au même que d'incrémenter un x sur la droite y=ax+b!)
    tu l'incrementerai de quelle valeur X alors ? (pcq en effet je mettai une constante :p)

  9. #9
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Sur un pas de temps dT, si tu incrémentes ton X de dX, ton Y va être incrémenté de dY.
    dX et dY sont liés par l'équation de ta droite y=ax+b: dY=a.dX
    dX et dY sont aussi lié par la vitesse de ton missile: racine(dX²+dY²)=V.dT, ou dX²+dY²=(V.dT)²
    Tu remplaces dY, tu arrives à dX=racine[(V.dT)²/(1+a²)]... en positif ou en négatif, le signe est à déterminer en fonction de la position du missile par rapport à la cible.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. [Java3D] Suivre un objet mobile avec la caméra
    Par black is beautiful dans le forum 3D
    Réponses: 3
    Dernier message: 05/05/2010, 20h54
  2. suivre un objet dans un videos en java
    Par vitnam60 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 24/03/2010, 23h07
  3. Suivre un objet en temps réel
    Par ourscoca dans le forum OpenCV
    Réponses: 0
    Dernier message: 09/12/2009, 14h49
  4. [débutant] suivre un objet 3D avec gluLookAt
    Par Socr@tes dans le forum OpenGL
    Réponses: 8
    Dernier message: 12/06/2006, 17h09
  5. suivre un objet en mouvement sur image
    Par jlf dans le forum Traitement du signal
    Réponses: 24
    Dernier message: 09/05/2005, 13h46

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