Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Trappes et Barycentres.

Par Amaranthe le 4/10/2002 à 18:24:18 (#2281988)

Voici un probleme un peu complexe...

Certains d'entre vous on peut être déja remarquer, que lorsque l'on créait un piége, ou même un trigger général, le point de référence de ce trigger était le premier point du polygone tracé.

Or cela pose des problemes, car lorsqu'on veut calculer la distance d'un personnage a ce piege, ou forcer le mouvement d'un personnage vers ce piege... suivant qu'il soit d'un coté ou de l'autre du polygone, si celui ci est suffisemment grand, le personnage va ou non traverser le piege...

Bref, il serait nettement plus pertinent d'utiliser le barycentre du dit polygone comme point de référence.

Je me demandais si en utilisant les vercteurs... mais j'avoue n'avoir pas bien compris comment s'utilise un vecteur, ni même être bien sur de ce que c'est exactemment...

Or donc, si quelqu'un avait
1°) Une idée sur comment résoudre le problème.
2°) Une explication des vecteurs.

Merci d'avance.

Amaranthe.

Par Tyn' le 4/10/2002 à 20:51:24 (#2282747)

Hum... Dur :doute:

Essaye simplement d'additionner ou de soustraire (en fonction de l'orientation du piège) un certain vecteur de déplacement à plat (du genre 0.5f,0.5f,0.0f) au vecteur du point de ref' dudit piège...

Mais je suis vraiment pas certain.

Par eMRaistlin le 4/10/2002 à 20:55:53 (#2282774)

Or donc, si quelqu'un avait
1°) Une idée sur comment résoudre le problème.
2°) Une explication des vecteurs.


Pour le petit 1, c'est simple, même si c'est un peu Mc Guyver...

Tu cree ton trigger a partir du centre, puis tu cree une corde juqu'au premier sommet, puis tu complete ton polygone en dessinant la forme jusqu'au dernier sommet (qui sera aussi le sommet de depart...)

Tu peut facilement dessiner un polygone avec un point de depart central, sachant que si tu le fais bien, tu n'aura qu'une corde vers le centre, et aucun risque de non-declenchement de ton trigger...

Pour l'explication sur les vecteurs, je t'avoue que je maitrise mal le concept (en fait, c'est pas trop trop dur, mais je me refuse a toute explication tant que je n'aurais pas trouvé le moyen de recuperer le vecteur d'un location.)

Par Tyn' le 4/10/2002 à 21:07:11 (#2282835)

Provient du message de eMRaistlin
Pour l'explication sur les vecteurs, je t'avoue que je maitrise mal le concept (en fait, c'est pas trop trop dur, mais je me refuse a toute explication tant que je n'aurais pas trouvé le moyen de recuperer le vecteur d'un location.)
// Get the position vector from lLocation.
vector GetPositionFromLocation(location lLocation)
:)

Par eMRaistlin le 4/10/2002 à 21:26:27 (#2282913)

Pardon, Tyn', je me suis tres mal exprimé.

Je voulais dire comment extraire les coordonnées d'un vecteur... (faut vraiment que j'arrete de bosser, ca m'empeche de me concentrer sur les jeux...)

Par Tyn' le 4/10/2002 à 21:32:45 (#2282943)

Provient du message de eMRaistlin
Je voulais dire comment extraire les coordonnées d'un vecteur... (faut vraiment que j'arrete de bosser, ca m'empeche de me concentrer sur les jeux...)
Ah, tu peux les utiliser à la manière d'une structure :
vector vMyVector = GetPositionFromLocation(lMyLocation);
float fMyVectorX = vMyVector.x;
float fMyVectorY = vMyVector.y;
float fMyVectorZ = vMyVector.z;
Mais tu peux simplement additionner les vecteurs :
vector vMyVector = GetPositionFromLocation(lMyLocation);
vector vMyMove = Vector(5.0f,5.0f);
vector vMyResult = vMyVector + vMyMove;
Enjoy :p

Par Amaranthe le 4/10/2002 à 21:44:21 (#2283013)

Bon vous avez l'air de vous comprendre...

C'est deja ca ;)

Quelqu'un poourrait m'expliquer ce qu'est un vecteur et a quoi ca sert ?

Merci ;)

Amaranthe.

Par mobidique le 5/10/2002 à 11:39:28 (#2285023)

Tu mets un waypoint sur ton piège et tu t'en serts comme point de ref ... non ?

Pour les vecteurs, ton pb c'est les vecteurs dans NwN où les vecteurs mathématiques ?

Mob'.

Par Amaranthe le 5/10/2002 à 12:00:34 (#2285102)

Comme d'habitude... mobidique ou l'art de simplifier les problemes... la solution est géniale !

Quand aux vecteurs... je dirai... un petit rappel mathematique me ferait pas de mal... quand a neverwinter's vector... j'y pige quedalle ;)

Amaranthe.

Par mobidique le 7/10/2002 à 22:11:32 (#2294387)

:D

pour les vecteurs ... A la vue du code de Tyn' je dirais qu'un vecteur est un objet structuré en trois objet qui sont les composante x, y et z d'un point dans l'espace soit respectivement, l'abscisse, l'ordonné et la hauteur sans doute pour le Z. Ensuite quand tu regardes le vecteur MyMove tu vois que seules les composante X et Y ont des valeurs on laisse donc Z à 0. Le fait d'aditionner Mymove à la position actuelle va déplacer le point de référence de 5 unités vers la droite (x=5) et cinq unités vers le nord (y=5) mais le perso va pas se déplacer d'abord à droite puis vers le nord mais directement de son point d'origine vers son poit de destination (x+5, y+5).


| 0
|
|
|
|_____


Le déplacement aura lieu depuis l'angle en bas a gauche jusqu'au 0 en haut à droite. Le vecteur c'est le segment de droite que tu peux tracer entre ces deux point. Mathématiquement quand on parle de vecteur je pense perso plus à ce même bout de droite mais défini par 2 éléments, l'angle du segment de droite par rapport à l'axe des abscisses et par la longueur de ce vecteur. Mais bon ça fait longtemps que j'ai pas tripoté ces bidules moué ... ;)

Mob'.

Par Tyn' le 7/10/2002 à 23:54:02 (#2295168)

Un vecteur NWNien est en réalité une vertice invisible dans l'espace d'une area. Cette vertice est définie par ses trois coordonées comme expliqué par mob', et on peut y appliquer les modifications que l'on souhaite.

Exemple de Mivain dans un vieux post :

5) vector (Vecteur) Structure de trois floats, utile pour définir les positions et les vecteurs d’orientation.
Pour accéder aux composants d’un vector (x, y et z), vous pouvez utiliser l’opérateur point (.).
Voici un exemple du moyen pour y parvenir :
vector v = GetPosition(OBJECT_SELF) - GetPosition(oidTargetObject)
// les vecteurs peuvent s’additionner, se soustraire, et plus
// ci-dessus, la soustraction de deux vecteurs donne le vecteur v
fDistanceToTarget = sqrt( pow(v.x,2.0f) + pow(v.y,2.0f) + pow(v.z,2.0f));
// la, c’est plus mathematique, la racine de la somme des carres des composantes
// du vecteur v donne la distance de l’objet (identifie par la constante OBJECT_SELF)
// a l’objet cible (identifie par la variable oidTargetObject)
vector v = Vector(fX, fY, fZ); // Construit un vecteur
Et frime by Darkmore ex-Druide :cool:
ATTENTION FRIMOMETRE A 4000%

Rappellons tout d'abord que les vecteurs de NWScript on pour origine l'origine des plans x=0;y=0;z=0 puisque ils sont calculés à partir des coordonnées d'un seul point...

Et le but est de calculer la distance entre ses deux points et non entre deux vecteurs on est d'accord ..

Dans le plan XY .. on relie ses deux points on obtient l'hypoténus d'un triangle rectangle dont l'hypoténus est la distance au sol entre ces deux point .. un coté de valeur (x1-x2) et un coté de valeur (y1-y2) ..

Et hypoténus²=(x1-x2)²+(y1-y2)² (pythagore of course)
si la distance est négative peut importe les carrés sont tjrs positifs .. (autrement dit (x2-x1)² = (x1-x2)² ...

Ensuite dans l'espace le projeté des points sur le plan XY forme un triangle rectangle avec un coté de valeur (z1-z2) et un coté formé par l'hypoténus calculé ..
La distance dans l'espace est donc ce nouvel hypothénus ...

hypothénus2²=hypotenus1²+(z1-z2)²
donc fDistanceobjet²=(x1-x2)²+(y1-y2)²+(z1-z2)²
Et après on fait la racine ...CQFD avec la formule du génial Poh

Bon je vais faire reposer mes chevilles là ...
Elles vont mieux maintenant, au fait ? :p

Par Amaranthe le 8/10/2002 à 9:10:59 (#2295948)

Bah c'est pas compliqué finalement...

Et mes cours de math ne sont pas si loin...

Merci pour ces excellents rappels, mais il y a quand meme des fonctions plus simples pour calculer la distance entre deux objets si je ne me trompe pas...

C'est en scriptant qu'on devient scripteron... ou un truc comme ca.

Amaranthe.

JOL Archives 1.0.1
@ JOL / JeuxOnLine