#1 

27-08-2008 18:20:08

Fremtid
Membres
Date d'inscription:
Messages: 12
IP: 90.22.218.221
Courriel

Bonjour !
Je voudrais créer une ligne qui part d'un personnage et qui "s'arrête" pile à un autre, afin de tester une IA. Je sais initialiser la ligne sur le node de départ, mais j'ai du mal à le faire arrêter sur l'autre node, car je ne sais pas vraiment comment la terminer. Dois-je juste mettre :
line.end = node->getPosition(); ?
Autre question :
comment récupérer la taille d'une ligne ou alors la distance entre deux nodes ?

De tout cœur, merci...


Hors ligne


#2 

27-08-2008 19:21:37

bestben
Membres
Date d'inscription:
Messages: 133
IP: 77.193.33.145
Courriel

Pour la taille des ligne, si je me rappel mes cours sur les vecteurs, faut faire :
(position de fin) - (position de début) = vecteur 3d
Racine de ((x du vecteur)² + (y du vecteur)² + (z du vecteur)²)
et normalement tu obtiendras la taille de ta ligne si je me trompe pas...

ex :position de début = (3,4,5) position de debut = (5,8,10)
(5,8,10) - (3,4,5) = (2,4,5)
(2²+4²+5²)=45
racine de 45 = environ 6.7
j'espère que sa t'aideras, corrigé moi si je me trompe :p

Pour ta la position de fin getPosition me parait pas mal mais faut voir si la position ne renvoie pas au centre du perso


Hors ligne


#3 

28-08-2008 17:01:31

Fremtid
Membres
Date d'inscription:
Messages: 12
IP: 90.22.218.221
Courriel

Merci pour ton aide, bestben.
En vérité je connaissais déjà cette methode, c'est vieux comme le monde, le théorème de pythagore et on voit ça très jeune. Moi je me demandais s'il n'y avait pas une methode qui prenait moins de resources peut-être, où qui manipule directement les positions des nodes d'irrlicht sans intermédiaire. Mais bon, je vais utiliser cette methode.


Hors ligne


#4 

28-08-2008 17:39:33

bestben
Membres
Date d'inscription:
Messages: 133
IP: 77.193.33.145
Courriel

J'avais pas vu mais je crois que getLength( ) sert à récupérer la taille d'une ligne


Hors ligne


#5 

28-08-2008 18:08:45

dark calculator
Membres
Date d'inscription:
Messages: 153
IP: 82.67.201.37
Courriel

Voici une fonction qui renvoie la distance entre 2 nodes:

float getDistance(ISceneNode* n1, ISceneNode* n2)
{
    return line3d (n1->getPosition(),n2->getPosition()).getLength ();
}

Evidement si ta ligne sert a autre chose comme testé les collisions cette fonction va faire perdre du temps donc il ne faut pas l'utiliser directement a moin que tu veule uniquement la distance et que tu ne crée pas la même ligne ailleur.
Mais elle te permettra de comprendre comment l'utilser.

Je te conseil par contre de consulter la doc irrlicht disponible dans la section api du site officiel ou le repertoir doc du sdk irrlicht. Tu aurais vu tous sa directement en faisant une recherche avec comme mot clef line. Ce n'est aucune ment une critique c'est juste que sa va plus vite pour toi que t'attendre que quelqu'un te reponde

dark calculator


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
172 invités en ligne
membre en ligne: -
RSS Feed