0

次の方法で作成した正方形があるとします。

glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f);  
glVertex3f( 1.0f, 1.0f,-1.0f);  
glVertex3f(-1.0f, 1.0f,-1.0f);  
glVertex3f(-1.0f, 1.0f, 1.0f);  
glVertex3f( 1.0f, 1.0f, 1.0f);  

glColor3f(1.0f,0.5f,0.0f);  
glVertex3f( 1.0f,-1.0f, 1.0f);  
glVertex3f(-1.0f,-1.0f, 1.0f);  
glVertex3f(-1.0f,-1.0f,-1.0f);  
glVertex3f( 1.0f,-1.0f,-1.0f);  

glColor3f(1.0f,1.0f,0.0f);  
glVertex3f( 1.0f,-1.0f,-1.0f);  
glVertex3f(-1.0f,-1.0f,-1.0f);  
glVertex3f(-1.0f, 1.0f,-1.0f);  
glVertex3f( 1.0f, 1.0f,-1.0f);  

glColor3f(0.0f,0.0f,1.0f);  
glVertex3f(-1.0f, 1.0f, 1.0f);  
glVertex3f(-1.0f, 1.0f,-1.0f);  
glVertex3f(-1.0f,-1.0f,-1.0f);  
glVertex3f(-1.0f,-1.0f, 1.0f);  

glColor3f(1.0f,0.0f,1.0f);  
glVertex3f( 1.0f, 1.0f,-1.0f);  
glVertex3f( 1.0f, 1.0f, 1.0f);  
glVertex3f( 1.0f,-1.0f, 1.0f);  
glVertex3f( 1.0f,-1.0f,-1.0f);  
glEnd();    

ここで、AABB 構造を使用して、球がこの立方体の側面 (立方体の上部または下部ではなく) に衝突したことを検出し、球体が立方体を通過するのを防ぎたいとします。これを行う方法についてのアイデアはありますか?

また、glutSolidCube を使用してキューブを実装した場合、AABB 構造を使用できますか?

また、AABB を使用せずに衝突を簡単に検出できますか? たぶん、交差のテストのようなものですか?

4

1 に答える 1

2

OpenGL はレンダリング システムです。衝突検出の概念はなく、基本的なレンダリング プリミティブ (点/線/三角形) を超えるオブジェクトさえありません。OpenGL は、衝突検出を行うのに役立ちません。そのためには、物理​​または衝突ライブラリを使用する必要があります。

于 2013-04-01T09:39:17.703 に答える