2010-09-06 4 views
1

Possible en double:
Collision detection between two general hexahedronsDétection de collision entre deux cubes rotation

En ce moment, je détection de collision en trouvant le min et max et de faire bondissant contrôle de boîte. Malheureusement, le cube de mon lecteur tourne avec la caméra et cela donne des résultats gênants lorsque le joueur est à un angle de 45 degrés. Les contraintes sont que chaque cube est aligné sur l'axe et a 8 verticies, mais le joueur peut être pivoté (en fait, je fais sin, cos, à chaque sommet et tourne autour du centre du cube. mon lecteur est mis en rotation?

Merci

+2

Ai-je raté quelque chose ou posez-vous la même question encore et encore? – Eiko

+0

Cela peut ne pas être une copie exacte. Milo utilise un vocabulaire non-standard: par "cube", il signifie hexaèdre (c'est-à-dire figure solide à six faces), et "axe aligné" n'est pas parfaitement clair mais peut signifier "faces opposées sont parallèles". Il ne fait pas de distinction claire entre les nombreuses classes de régularité et de droiture disponibles. Cette question peut être légèrement plus contraignante que la plus récente, mais il a été présenté avec deux algorithmes de travail pour le cas général. En tout cas, je ne peux plus être dérangé. – dmckee

+0

"Axe aligné" dans le langage vernaculaire signifie que les faces sont toutes parallèles aux trois axes principaux, c'est-à-dire celles à X = 0, Y = 0 et Z = 0. Où je suis allé à l'école, "cube" est défini comme un hexaèdre avec des angles droits entre tous les bords et tous les bords de la même longueur. –

Répondre

-1

Si l'un des cubes n'est pas pivoté, il est facile de vérifier si un seul point se trouve dans le cube (avec des contrôles de bornes). Prenez donc chacun des 8 nœuds du cube pivoté et vérifiez s'il tombe dans le cube non-réorienté.

+2

Est-il possible que deux cubes puissent se croiser mais ne pas avoir de vertices à l'intérieur de l'autre? – andand

+0

Nous avons survolé cet algorithme dans chacune des deux incarnations précédentes de cette question. Ça ne marche pas. – dmckee

+0

Je suis d'accord sur cette limitation. hmmm ... – ja72

1

Trouver la ligne d'intersection de chaque paire de plans, puis déterminer si cette ligne d'intersection est au moins en partie dans les deux polygones.

Ou, pour une simple solution, prétendre que le joueur est une sphère

+0

Ok comment puis-je faire une détection de collision de cube AABB? – jmasterx

+0

Parfois, le cylindre pourrait être meilleur que la sphère. C'est ainsi que la détection de collision a été faite dans Quake I par exemple. – doc

+0

Lequel est le plus simple à mettre en œuvre – jmasterx

Questions connexes