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

Newton Discussion :

[OpenGL-Newton] Calcule de distance


Sujet :

Newton

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [OpenGL-Newton] Calcule de distance
    Bonjours à tous...

    Je voudrais savoir s'il est possible et facile d'obtenir la distance qui sépare 2 objets d'une scène 3D en OpenGL grâce au moteur physique Newton...?

    Si oui, comment y arriver...?

    Je demande ceci pour pouvoir simuler un capteur de distance... Comme un télémètre par exemple...

    Merci d'avance pour vos réponse...

  2. #2
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    février 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : février 2006
    Messages : 357
    Points : 341
    Points
    341
    Par défaut
    Il y a une fonction dans newton qui permet de récupérer la matrice d'un corps. Pour récupérer la position d'un NewtonBody, il faut faire comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
           MATRIX4X4 matrice;
           POINT3D Position;
     
    	NewtonBodyGetMatrix (m_pBody, &matrice.entries[0]);
    	Position.x=matrice.entries[12];
    	Position.y=matrice.entries[13];
    	Position.z=matrice.entries[14];
    Une fois que tu as la position des 2 NewtonBody, tu fais comme ca (pseudo code):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    POINT3D PositionBody1,PositionBody2;
    (Calcul de chacune des position)...
     
    POINT3D difference=PositionBody1-PositionBody2;
    difference.GetNorme();//Calcule la longueur du vecteur qui correspond à la distance entre les 2 objets

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    octobre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci drcd pour cette réponse si rapide...

    Cependant, je cherche à obtenir des distances entre 2 objets: oui, mais bon pas juste comme ça.

    En fait, je cherche à modéliser des capteurs du genre télémètre. Ces capteurs vont donner la distance de l'objet le plus proche, mais suivant une direction donnée (que l'on peu caractériser par un vecteur par exemple).

    Ce que j'aimerais, c'est connaitre cette distance, c-à-d connaitre la distance entre un point déterminé et l'objet le plus proche de celui-ci suivant la direction caractérisée par le vecteur.

    Si c'est possible bien sur...

    Voiliii...

  4. #4
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    février 2006
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : février 2006
    Messages : 357
    Points : 341
    Points
    341
    Par défaut
    Ok désolé, j'avais mal compris ton problème.

    Peut-etre que ceci peut t'interesser:
    http://bakura.developpez.com/tutoriel/physique/newton5/

    Notamment la callback int (*NewtonContactBegin) (const NewtonMaterial* material, const NewtonBody* body0, const NewtonBody* body1)

    Il est dit dans le tuto que ce callback est appelé chaque fois que les AABBs (Axis Align Bounding Box), c'est à dire les "boîtes englobantes" de deux objets rentrent en contact.

    Donc tu peux par exemple balancer des spheres englobantes à partir de la position de ton capteur et dans sa direction. Lorsque ta sphere rencontre un objet, elle rentre dans la callback et là tu recupere la position du body qui est entré en collision avec ta sphere. Ensuite tu fais la différence entre la position de ce body et la position de ton capteur.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 141
    Points : 188
    Points
    188
    Par défaut
    Ou alors, tu utilises la solution la plus optimisée. Les traces (Ou les rays selon le moteur)

    Voir le wiki de Newton : http://newtondynamics.com/wiki/index...onWorldRayCast

Discussions similaires

  1. calculer la distance qu'il y a entre une div et le bas de page
    Par Henry9 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2007, 00h33
  2. Problème et questions sur un calcul de distance
    Par ale2000 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 11/09/2007, 20h33
  3. Calculer des distances géodésiques
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 30/11/2006, 08h59
  4. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07
  5. [GEOMETRIE] calcul de distance dans un triangle
    Par gronaze dans le forum Mathématiques
    Réponses: 10
    Dernier message: 29/06/2006, 10h04

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