2013-10-22 33 views
-1

我有兩個光盤可以在鍵盤幫助下單獨移動。這兩個圓盤代表兩個球員,我想代碼:想要識別兩個光盤是否互相接觸

  1. 如果DISC1倒是DISC2然後盤2的大小減少一點點
  2. 無論是光盤不應該走出屏幕的
+0

我試圖檢測兩個光盤的碰撞,它很混亂。我只是opengl的初學者。 :-( – user2051037

+0

到目前爲止,我有兩個盤可以與WASD和方向鍵移動不同 – user2051037

+0

這是一個非常簡單的幾何問題...什麼是常見的循環內的所有點相對於中心? –

回答

1

鑑於它們是光盤,碰撞檢測實際上非常簡單直接。給定兩個圓盤具有半徑ř和R 2 ,如果兩個對象的中心之間的距離小於或等於R 1 + R ,那麼他們已經相撞。

您可以使用畢達哥拉斯定理計算兩個中心點之間的距離:距離等於ΔX平方和ΔY平方和的平方根。

如果你經常這樣做,你可能想避免這個平方根。幸運的是,這很容易:將兩個半徑的總和平方,並將其與三角洲X和三角洲Y的平方和相加。

+0

空盤1() { \t 在glBegin(GL_POLYGON); 浮子X1,Y1,X2,Y2; 浮動角; 雙半徑= 0.1; X1 = 0.5,Y1 = 0.6; glColor3f(0.0,1.0,0.0); 在glBegin(GL_TRIANGLE_FAN); glVertex2f(X1,Y1); 爲(角度= 1.0F;角<180.0f;角+ = 0.2) { x2 = x1 + sin(角度)* radius; \t y2 = y1 + cos(角度)* radius; glVertex2f(x2,y2); } glEnd(); } – user2051037

+0

這是我的光盤 – user2051037

+0

@ user2051037:你可能想要編輯的代碼放到你的問題所以它會被格式化(和更明顯他人閱讀和可能回答這個問題)。但是,最終繪製光盤和進行碰撞檢測通常是分開的。 –