#0 

27-08-2008 20:20:08

Fremtid
Membre
Date d'inscription: 09-08-2008
Messages: 12

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...

Dernière modification par Fremtid (27-08-2008 20:30:03)

Hors ligne


#1 

27-08-2008 21:21:37

bestben
Abonné
Date d'inscription: 20-10-2007
Messages: 133

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

Dernière modification par bestben (27-08-2008 21:23:38)

Hors ligne


#2 

28-08-2008 19:01:31

Fremtid
Membre
Date d'inscription: 09-08-2008
Messages: 12

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


#3 

28-08-2008 19:39:33

bestben
Abonné
Date d'inscription: 20-10-2007
Messages: 133

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

Hors ligne


#4 

28-08-2008 20:08:45

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

Voici une fonction qui renvoie la distance entre 2 nodes:

Code:

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é
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
126 invités en ligne
Aucun membre connecté
RSS Feed