2016-09-25 69 views
0

我想在openGL C++中實現以下場景。假設有一個球在表面上移動,並且在四個方向上都有一條邊界線。當球擊中其中一條線時,它反射到一個方向。我的問題是,有沒有什麼方法可以找到或計算在哪個方向上,球擊中牆後會發生什麼?找到撞牆後球的方向

+0

當然,你正在尋找'矢量反射'。看看這幾個鏈接:http://math.stackexchange.com/questions/13261/how-to-get-a-reflection-vector和http://www.3dkingdoms.com/weekly/weekly.php ?a = 2 - 請注意,這種方法允許您以任何方向將牆壁上的球彈出牆壁 - 而不僅僅是框的軸對齊牆的簡單情況。 – enhzflep

回答

1

對於沒有變形和等熵接觸的完美球體,球體會以相同的角度進行反​​射,但90度通過。所以如果你的球在距離牆30度處進入,它將在離牆30度處脫落,但在距離牆的法線的另一側。 Ball Reflecting

-1

如果你不想改變速度,但只有目錄,那麼它很容易計算。你只需要根據水平或垂直速度分別是垂直還是水平邊界來切換方向。

假設您的水平和垂直速度分別爲vx, vy。如果球擊中左邊界或右邊界然後vx = -vx,如果球擊中頂部或底部邊界然後vy = -vy。無論當前速度的方向如何,這都將起作用,即,球現在是左右移動還是上下移動並不重要。碰撞後它只會切換正確的方向。

+0

通過編程,這可能是最好的方法! – Cedric