0

XY で描画された球と平面があり、ボールを動かすことができるとします。飛行機に衝突したか知りたいです。私の考えは:

・球体の位置(中心)を取得

- (球の位置 (Z 座標) + 半径) を座標 Z = 0 と比較します。

true の場合、de sphere が平面に衝突したことを意味します。

しかし、球の位置を取得するにはどうすればよいでしょうか。変換行列を使用できますか? お気に入り:

GLfloat 行列[4][4];

glGetFloatv(GL_MODELVIEW_MATRIX, &matrix[0][0]);

球を描画するコードは次のとおりです。

glPushMatrix();

glTranslatef(1.0, altura_braco, 0.0);

glScalef(1.0, 1.0, 1.0);

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

glutSolidSphere(0.2, 100.0, 100.0);

glPopMatrix();

4

1 に答える 1

4

openglの目的を誤解していると思います。その目的は、物事をレンダリングすることだけです。

そうは言っても、衝突検出はサポートされていません。自分で実装するか、ゲームエンジンを使用する必要があること。

true の場合、de sphere が平面に衝突したことを意味します。しかし、球の位置を取得するにはどうすればよいでしょうか。

球方程式と平面方程式の両方があり、それらを使用します。交差を検出すると、衝突します。この回答は、オブジェクトが球と交差するかどうかを検出する方法を説明しています。

平面の方程式は次のとおりです。

a*x + b*y + c*z = d

球の方程式は次のとおりです。

(x-x0)^2 + (y-y0)^2 + (z-z0)^2 = r^2

この一連の方程式を解くことで、それらが交差するかどうかを確認できます。

于 2013-03-26T06:24:40.650 に答える