2011-03-28 118 views
3

這是在我的頭上,有人能解釋給我更好嗎? http://mathworld.wolfram.com/Reflection.html反思?我該怎麼做?

我正在做一個2D突破格鬥遊戲,所以我需要球能夠反映它何時擊中牆壁,槳或敵人(或敵人擊中它)。

所有的公式都是這樣的:x_1 ^' - x_0 = v-2(v·n ^^)n ^^。

我不能休耕。 (什麼是「意味着或者X_0?或^^?)

+1

您遇到鏈接問題。 – 2011-03-28 04:25:08

+0

已修復。謝謝^ _^ – CyanPrime 2011-03-28 04:30:15

+6

如果你沒有強大的數學基礎,這是你嘗試構建自己的遊戲平臺時遇到的很多很多問題中的第一個。我建議閱讀一些關於三角和幾何以及一般數學原理的教科書。 – 2011-03-28 04:37:55

回答

27

如果您考慮「點積」操作的幾何意義,則反射公式更容易理解。

兩個3D矢量之間的點積在數學上被定義爲

<a, b> = ax*bx + ay*by + az*bz 

,但它有一個很好的幾何解釋

一個b之間的點積是長度 的投影a超過b以拍攝如果兩個向量指向 的相反方向,則爲負號,再乘以b的長度。

dot product geometric interpretation

的東西,是用這個定義顯而易見的,如果你只是看公式這不是明顯的是,例如,如果座標系是兩個向量的點積不改變旋轉,兩個垂直矢量的點積是0(在這種情況下投影的長度明顯爲零),或者矢量本身的點積是其長度的平方。

使用幾何解釋反而不太明顯的一點是點積是可交換的,即<a, b> = <b, a>(事實上,考慮到公式)是明確的。

的重要一點考慮也是如果b長度爲1,則點積<a, b>是一個簡單的一個超過b(與適當的符號採取)的突出的長度。

鑑於這種解釋的公式用於在平面計算反射是很容易理解:

vector reflection

爲了計算反射矢量ř,給定一個向量一個和平面正常ñ你只需要使用的公式:

r = a - 2<a, n> n 

的高度h在這個圖中是<a, n>(注意,n被假定爲單位長度),所以應該清楚你需要在正常方向上移動兩倍的高度。

如果您認爲合適的點積的跡象,你應該看到的是,公式也適用的事件時有矢量一個,飛機正常ň都面臨着相同的方向。

2

')表示數/點/結構的第二形式。在這種情況下,x 1'是指x 1的反射形式。

0)示出了相同的各種狀態。在這種情況下,x 0是反射點。

插入符號^)顯示某物是矢量。在這種情況下,n是法向量。

+0

數字/點/結構的第二種形式? – CyanPrime 2011-03-28 04:38:31

+0

是的,第二種形式。雙重素數('')是第三種形式,三重素數(''')是第四種,依此類推。 – 2011-03-28 04:39:40

0

這是關於方程格式?因爲我看到格式良好的方程式,而不是出現在你的問題中的LaTeX風格的標記。所以第1步:嘗試在不同的Web瀏覽器中查看頁面,看看它是否看起來更清晰。

更實質性地,我會推薦一種不同類型的資源。從根本上說,你在看collisions,這通常比物理文本更好地處理物理文本。任何入門物理教科書都會有一章關於碰撞的內容,應該直接適用於您的遊戲。