我在這里有一個簡單的數學/物理問題:在笛卡爾坐標系中,我有一個以已知速度隨時間移動的點。該點位于一個盒子內,并在其墻壁上正交反彈。
這是我在油漆上做的一個簡單的例子:

我們知道:紅點的位置,它的速度由角度 θ 和速度定義。我們當然知道綠盒子的尺寸。
在這個例子中,我用黃色繪制了它的近似軌跡,假設在已知的確定時間段之后,紅點在藍點上。計算藍點位置的最有效方法是什么?
我已經考慮過用三角函式和矢量投影計算每個“反彈點”,但我覺得這是一種資源浪費,因為三角函式通常非常需要處理器。我將有超過一千個點要像這樣計算,所以我真的需要找到一種更有效的方法來做到這一點。
如果有人有任何想法,我將不勝感激。
uj5u.com熱心網友回復:
您不需要一直使用三角函式。而是將歸一化方向向量作為(dx, dy) = (cos(θ), sin(θ))
從垂直壁 x 分量dx = -dx反彈后,其符號發生變化,從水平壁 y 分量反彈后,其符號發生變化dy = -dy。您可以看到計算非常簡單。
如果您(出于奇怪的原因)更喜歡使用角度,請使用
您可以遞回地反映邊界上的虛擬點,直到該點回到參考(初始)框中。這才是真正的重點。現在的問題是如何做這些數學?以及如何找到(x,y)知道(x',y')?
通過代表a和b沿框的大小x和y分別。然后nx = floor(x'/a)和ny = floor(y'/b)以框的數量表示點與參考框的距離。也dx = x'-nx*a和dy = y'-ny*b介紹了其虛擬盒子內的虛擬點的相對位置。
現在你可以找到真正的位置(x,y):如果nx是偶數,那么x = dxelse x = a-dx;同樣,如果ny是偶數,那么y = dyelse y = b-dy。換句話說,x 軸和y 軸上的偶數次反射,使真點和虛點處于相同的相對位置,而奇數次反射使它們不同且互補。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382594.html
上一篇:如何轉換為對數刻度并回傳?
