2012-01-28 85 views
2

我曾經在谷歌的某個解決方案上嗅過一點,但我相信我的術語是錯誤的,所以請在這裏忍受。計算在質量任意位置給定任意推力器的偏置推力器位置的推力

我正在研究一個簡單的遊戲,人們可以在這艘宇宙飛船上建造簡單的太空飛船並將推進器放置在太空船上。

我們叫說質量我太空船的中心是五

飛船推進器具有在與任意鉗任意推力方向向量的任意位置的任意數目。

我有一個輸入角速度矢量(角度/軸符號)和世界速度(矢量),我希望船「去」。

我將如何計算船舶加速到所需速度的每個推進器的理想推力?

我目前的解決方案適用於均勻放置的推進器。本質上,我所做的只是通過推進器對線速度的正常速度點所需的速度。而對於角速度,我只是通過推進器位置越過角速度,並通過推力器正常點出由此產生的偏移速度。當然,如果有任何推進器在質量中心的另一側沒有鏡像,則會產生不希望有的力。

就像我說的,我認爲它應該是一個相當有據可查的問題,但我可能只是在尋找錯誤的術語。

回答

2

我認爲你可以分解成兩部分。首先是根據當前和期望的速度決定每幀的加速度。此

acceleration = k * (desired velocity - current velocity) 

其中k一個簡單的規則是確定「響應」系統是如何爲常數。換句話說,如果你太慢了,加快了速度(正向加速度),並且如果你的速度太快,減速(負向加速度)。

第二部分有點難以形象化;你必須弄清哪些推進器組合可以給你想要的加速度。我們打電話c_i每個推進器推力的數量。你想解決耦合方程

sum(c_i * thrust_i) = mass * linear acceleration 
sum(c_i * thrust_i X position_i) = moment of interia * angular acceleration 

其中X是交叉produxt的系統。我的物理可能有點偏離,但我認爲這是正確的。

這是一個包含6個方程(3D)和N個未知數的方程式,其中N是小數點數,但是您有額外的約束條件c_i> 0(假設推進器不能向後推)。

這是一個棘手的問題,但您應該能夠將其設置爲LCP並使用投影高斯賽德爾方法得到答案。你不需要得到確切的答案,只需要接近一點,因爲你將在下一幀中再次解決稍微不同的值。

我希望有幫助...