2012-01-28 80 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并使用投影高斯赛德尔方法得到答案。你不需要得到确切的答案,只需要接近一点,因为你将在下一帧中再次解决稍微不同的值。

我希望有帮助...