2010-04-23 11 views
3

Relatif à this question Je me demandais si .NET avait des bibliothèques (ou une fonction) que je peux utiliser pour détecter si un point entre en collision avec un autre.Construit en raytracing?

Je ne sais pas ce que je devrais utiliser des angles, mais il est une fonction comme celle

func(point src, rect target, angle, distanceOfVision, listPointOrRectOfWalls) 

assez improbable, mais je ne sais pas une formule ou comment commencer. C'est un prototype rapide et sale. Je pense à l'écriture de la fonction mais en faisant tomber l'angle en faisant de la ligne de visée un rectangle et vérifier si des points de mur sont entre src et cible.

+0

Honnêtement, je n'ai aucune idée, mais cela pourrait-il être ce que [XNA] (http://www.xna.com/) fournit? –

+0

Juste pour le plaisir: http://tirania.org/blog/archive/2007/Nov-16.html ^^ – tanascius

Répondre

3

Je résoudre le problème en tant que tel:

  1. Trois points du rectangle définissent le plan que le rectangle se trouve dans
  2. Au lieu de représenter la ligne comme un point et un angle, représentent comme. un point et un vecteur: source_point + direction_vector * t. Si vous définissez t = 1, vous avez deux points définissant votre ligne.
  3. Calculez l'intersection de la ligne avec le plan: http://en.wikipedia.org/wiki/Line-plane_intersection
  4. Vérifiez si le point d'intersection est contenu dans le rectangle.
Questions connexes