2011-07-29 2 views
0

J'essaie de mettre en œuvre un comportement d'évitement d'obstacles à partir des comportements de direction de papier pour les agents autonomes. Ce à quoi je suis bloqué, c'est comment puis-je convertir les coordonnées globales (2d) en coordonnées locales pour mon personnage? Fondamentalement Dis je suis à 1,0 et l'ennemi est 10,0. Je voudrais déplacer l'origine à 1,0 donc j'obtiens 9,0 comme coordonnées de l'ennemi.Conversion de coordonnées globales en coordonnées locales de caractères et retour

Ce que je fini par faire,

à traduire au niveau local,

 

[1 0 -tx] [x] 
[0 1 -ty] x [y] 
[0 0 1] [1] 
 

puis retour au global à l'aide,

 

[1 0 tx] [x] 
[0 1 ty] x [y] 
[0 0 1] [1] 
 

tx, ty est coords locale char et x, y est l'ennemi char coords.

+0

est-ce un "ce qui est un opérateur mathématique qui obtient 1 et 10 et retourne 9" question, vraiment? – unkulunkulu

Répondre

1

Il suffit de soustraire les points. Relatif = Position - point de l'axe déplacé

Relative = Position.

(10,0) - (1,0) = (9,0)

Displacement

Edit:

Utilisation d'un Affine transformation pour convertir la totalité du plan x, y:

Juste pour les questions numériques, permet de choisir un autre point de vue: (3,7)

[x] = [ 1 0 -3 ] = [x`] = x -3 
[y] [ 0 1 -7 ] = [y`] = y -7 
[1] [ 0 0 1 ] = [1 ] = we don't care 

Transformation matrix

+0

C'était la première chose que j'ai essayé, ça ne marche pas. AFAIK Je suis supposé multiplier les coordonnées avec une matrice de transformation mais je ne sais pas construire cette matrice. –

+0

Vous souhaitez effectuer une transformation pour l'ensemble des coordonnées afin de pouvoir le visualiser à partir d'un nouveau point d'axe? –

+0

Oui, je voudrais convertir toutes les coordonnées d'obstacle (dans l'espace global) en coordonnées de caractères locaux. –

Questions connexes