2010-07-27 5 views
2

J'ai créé un carré openGL comme si ..création boîte de sélection autour des objets openGL

  final float array1[] = new float[] { 
      //Front face 
      lx, ly, hz, 
      lx, hy, hz, 
      hx, ly, hz, 
      hx, hy, hz 
    }; 

J'ai aussi un Ray. Je voudrais maintenant mettre des boîtes de délimitation autour de chaque carré que je dessine afin que je puisse vérifier si elles se croisent. Comment ferais-je cela?

Merci.

Répondre

2

Vous n'avez pas besoin de mettre boîtes de délimitation autour des carrés. En fait, dans le cas d'un carré, le carré est le carré. Une boîte englobante est simplement un concept: une coque géométrique dans laquelle une autre géométrie (réelle) peut exister conceptuellement. L'idée est qu'il est beaucoup plus facile (et plus rapide) de vérifier les 4 coins d'un rectangle (pour une collision, etc.) que de vérifier chaque sommet d'un objet polygonal complexe. En ce qui concerne votre problème particulier de détection de collision, vous devez simplement projeter votre rayon sur le plan défini par chacun de vos carrés. Si le point sur le plan se trouve entre tous vos coins, alors le rayon frappe le carré.

1

OpenGL n'a pas de concept de boîte englobante, c'est juste un concept mathématique lié à la détection de collision. Donc, fondamentalement, créez simplement une structure de données de boîte, et stockez des boîtes de délimitation le long de vos sommets (idéalement dans le même espace de coordonnées), et faites la vérification de collision quand c'est nécessaire.

Questions connexes