mouvement rectiligne - yaw, pitch

mouvement rectiligne - yaw, pitch - Algo - Programmation

Marsh Posté le 24-08-2010 à 23:21:50    

Bonjour à tous !
J'aimerais savoir si un mouvement est rectiligne. Je dispose de ces informations :
yawA, pitch A, yawB, pitchB, yawC, pitchC.
Ces informations sont récupérées à 3 moments différent : T+0 => A, T+1 => B, T+2 => C;
A chaque étape (A, B ou C) la direction change. Au final on obtient un mouvement de A passant par B et allant à C.
J'aimerais savoir si le mouvement obtenu est rectiligne.
 
Le principe : http://en.wikipedia.org/wiki/Yaw,_pitch,_and_roll
 
D'ailleurs je n'arrive pas bien à comprendre le principe  [:mister yoda]  
Cela revient il à vérifier que les 3 points A, B, C sont alignés ou bien il faut utiliser le trigonométrie ?
Note : dans mon cas, je dois ignorer le roll.
 
Voilà, j'espère que mon post est compréhensible, sinon n'hésitez pas à me le faire remarquer !
Merci d'avance. :)

Reply

Marsh Posté le 24-08-2010 à 23:21:50   

Reply

Marsh Posté le 25-08-2010 à 09:51:18    

Si c'est pour voir s'ils sont alignés, les 2 techniques marchent. Par contre je pense que celle de contrôler si les 3 points sont alignés est un chouillat plus rapide, car n'utilisant pas de fonctions trigo.


Message édité par esox_ch le 25-08-2010 à 09:53:48

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-08-2010 à 10:24:26    

Merci de ta réponse ;)
 
Donc je dois considérer que A, B et C ont comme abscisse yaw, et comme ordonnée pitch, et qu'ils sont alignés dans un repère orthogonal ?

Reply

Marsh Posté le 25-08-2010 à 11:31:43    

Non non non. Tes Yaw et Pitch décrivent la position d'un solide par rapport à un système de coordonnées (comme le dit la première phrase). ça ne te dit rien sur le centre de masse du solide en question (donc sur sa position X,Y,Z).  
Si 2 "instances" du même solide ont les mêmes Yaw et Pitch, tout ce que tu peux en conclure c'est que les 2 instances sont orientées de la même manière, ça ne te dit rien par rapport à leur position X, Y et Z.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-08-2010 à 22:03:33    

on est d'accord :D je sais que ça n'a rien à voir avec la position mais avec la direction. Mais je veux savoir si le changement de direction est réctiligne :  
 
Par exemple on a un objet O (dont on se fout complètement de la position).
Cet objet à une direction d1(yaw, pitch).
 
Puis il prend une direction d2, puis d3.
J'aimerais savoir si le mouvement ayant entrainé ces changements de direction est rectiligne, sans tenir compte de la position X, Y et Z; mais pourquoi pas, plus tard, prendre cet élément en compte. mais je n'en suis pas là :)
 
Donc ma question : est-ce qu'il suffit alors de vérifier que des points d1, d2 et d3 (avec x = yaw et y = pitch) seraient alignés dans un repère ?
 
;)

Reply

Marsh Posté le 26-08-2010 à 10:46:58    

D'accord tu veux donc savoir si les 3 vecteurs sont colinéaires, c'est ça?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 26-08-2010 à 13:28:44    

Voila. :)

Reply

Marsh Posté le 26-08-2010 à 14:07:36    

Soit c'est moi qui comprend vraiment rien, soit la réponse est forcément non, à moins que les yaw et pitch soient toujours nuls, non?
J'veux dire, si t'as un vecteur direction donné, et que tu lui appliques une rotation (ce qui est la transformations ici considérée), le vecteur obtenu n'est colinéaire que si la rotation est faite sur un multiple de pi.  
Ou alors encore une fois, j'ai juste pas compris ce que ut veux faire (et dans ce cas là, peut-être qu'un dessin ne serait pas de trop :o )


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-09-2010 à 10:31:26    

Re :o
Désolé pour le temps que je mets  à répondre, et merci encore à  toi
 
Alors je pense que je m'oriente vers une mauvaise solution.
Donc je vais tout t'expliquer :p
Il s'agit d'un FPS dont j'ai accès aux sources (pas de soucis).
Le joueur à une position x y z contenue dans un vecteur. Il a une direction yaw & pitch.
L'objectif : savoir si son mouvement est rectiligne. Pourquoi ? pour différencier un mouvement humain d'un bot (qui vise tout seul, mais qui produit des mouvements rectilignes).
 
Donc, en prenant 3 positions différentes (vec(x, y, z), et 3 directions différentes (yaw + pitch) à 3 instants différents (t1, t2 et t3) y a-t-il un moyen de vérifier si le mouvement est bien rectiligne ? (je parle toujours du la direction du viseur, pas du déplacement du joueur ;)).
 
Merci !

Reply

Marsh Posté le 02-09-2010 à 14:59:37    

Comme disais mon prof de maths, rien ne vaut un petit crobard (sauf qu'il le disait en allemand) :o  
Si j'ai bien compris, ton problème c'est de savoir si on est dans le cas vert (bot) ou bleu (humain) ?
http://hfr-rehost.net/img227.imageshack.us/img227/7549/cssourcev.jpg
 
Dans ce cas là j'aurais tendance à dire naïvement qu'il suffit de vérifier si  
( pitch(B)-pitch(A) )  /  ( pitch(C)-pitch(A) ) = ( yaw(B)-yaw(A) )  /  ( yaw(C)-yaw(A) )
Si le personnage est immobile pas en tout cas.


---------------
Nous vous souhaitons de beaux rêves, c'est le cinéma gratuit.
Reply

Marsh Posté le 02-09-2010 à 14:59:37   

Reply

Marsh Posté le 02-09-2010 à 15:17:29    

Dans tous les cas c'est un joueur unique derrière, le but est de savoir s'il utilise un bot qui vise tout seul (donc avec des mouvements calculés de façon mathématique.).
 
Merci, je teste ta solution et je vous tiens au courant.

Reply

Marsh Posté le 02-09-2010 à 17:07:01    

Le yaw/pitch ne te donne rien, puisque le bot/joueur peut slider/sauter... (dumoins faire une translation non liée à l'orientation de l'avatar).
 
Et des joueurs humains qui ont une trajectoire rectiligne, ça existe (surtout sur console :D).
 
Tu veux faire quoi, choper les cheaters ?

Message cité 1 fois
Message édité par bjone le 02-09-2010 à 18:48:31
Reply

Marsh Posté le 02-09-2010 à 17:45:09    

bjone a écrit :

Et des joueurs humains qui ont une trajectoire rectiligne, ça existe (surtout sur console :D).

sur certaines distances, pas possible dans notre cas :o mais le but est d'adapter tous les paramètres possibles pour éviter les faux positifs

bjone a écrit :


Tu veux faire quoi, choper les cheaters ?

:jap:  
J'essaie d'abord en local avec moi et des bots et j'observe les différences. Les méthodes précédentes (dont celle que je viens d'essayer) n'ont rien donné. :/

Reply

Marsh Posté le 02-09-2010 à 18:34:12    

Pour moi pour gauler les bots et les cheaters:
 
Tu crées un histogramme qui te donne la distribution du temps passé dans une atitude donnée:
 
Pour l'orientation avec le yaw/pitch, tu as un vecteur.
 
Tu prends un top et une orientation de référence, et tant que l'avatar est colinéaire (un dot de vecteurs entre l'orientation courante et la référence), tu continue à compter le temps.
 
Lorsque l'écart est trop important (>1°), tu prends le temps écoulé et tu rajoutes une occurence dans l'histogramme dans l'entrée correspondant à ce temps. (genre un histo de uint qui va de 10 ms à 4secs par pas de 10ms)
Ensuite tu reprends la nouvelle orientation comme référence et tu te remets à compter.
 
La même chose avec le vecteur de déplacement normalisé, en faisant le différentiel de position entre deux frames, par rapport à un vecteur de référence.
 
Déjà avec ça tu peux voir une diff stat entre un bot et un humain.
 
Un naab ou un bot aura un histogramme à droite, un mec nerveux qui contrôle tous ses angles aura un histogramme à gauche.
 
Pour les cheaters, c'est les temps de réaction qu'il faudrait plustôt prendre en compte.
 
Donc genre pour chaque joueur, voir comment il réagit lorsque un autre joueur rentre dans son frustum, et deviens géométriquement visible, et avec quelle vitesse et quelle "stabilité" il vise.
 
Donc genre un histogramme qui donne le temps de réaction (changement d'atitude) lorsque un joueur est dans le frustum mais caché, combien de temps il ne vise pas un joueur caché dans son frustum, combien de temps il ne se dirige pas vers ledit joueur, combien de temps il se dirige, combien de temps il est à 5° du (ou d'un) joueur caché.
Pareil pour un histogramme pour le joueur visible. (l'histo du temps de réaction, l'histo du temps d''établissement de la visée à 5° près )
 
Tu peux aussi faire un histogramme avec l'angle en abscisse et le temps en ordonnée lorsqu'un mec est visé dans les 10°.
 
Si l'histo te fais souvent un gros pic en ^ dans les 2°, tu sais qu'il marche pas qu'à l'eau.
Si il te fait un U, t'as un naab qui panique :D
 
(Alors peut-être pas en degrée, mais en % du fov, car forcément un sniper pétera plus facilement les scores)
 
Tu peux aussi faire un histo du comportement par rapport à une cible (je sais pas un truc qui donnerait le temps passé à accompagner une cible soit par le slide, soit à faire un changement d'orientation qui soit toujours dans le bon "sens" pour suivre la cible)
 
Enfin ce genre de trucs...


Message édité par bjone le 02-09-2010 à 18:54:46
Reply

Marsh Posté le 03-09-2010 à 18:10:17    

Ok merci beaucoup :) je vais explorer toutes ces pistes ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed