2

Like everyone else, I am doing a Thrust clone just to brush up. I have arrived at the stage where the ship picks up the pod.

Essentially I have two masses (consider centre of sphere only) connected with a rigid, massless rod. L never changes, doesn't break.

balls!

In this case, the ship(ma) has mass 1.0, and the pod(mb) has mass 2.0. What is the math required to compute new positions? When I apply thrust to the ship(ma), how do I apply that to pod(mb)? (and make it swing around as expected) Doing the ship itself was straight forward, usual velx-=sin(angle)*thrust, vely+=cos(angle)*thrust. posx+=velx. etc. I know I used to know how to do this, but school was soo many years ago.

4

2 回答 2

1

这里有两种方法供您参考。

第一个比较简单。放松僵硬。使连接两者的杆成为弹簧。它对它们施加的相等且相反的力与它的长度位移量成正比。如果您使弹簧非常刚性,您将非常简单地获得几乎刚性的杆。

第二个是使酒吧实际上是刚性的。在这种情况下,整个系统可以用质心的位置和速度,以及整个系统的旋转角度和速率来描述。质心是系统中各点位置的加权平均值乘以该点的质量。在您的情况下,它将是沿杆朝向吊舱的 2/3 点。(因为吊舱的重量是船的两倍。)无论你在哪里推动,重心都会移动,就好像你在重心处推动一样,所以你已经知道如何移动重心了。

现在你必须考虑旋转速度。当您在船上施加力时,其中一小部分与杆成直角。这一部分除了移动质心外,还使系统旋转。那部分力量正在加速飞船,而不是吊舱。对船施加力,您可以计算出加速度。质心以船的 1/3 速度加速。因此,从质心的角度来看,船侧向加速度的 2/3 将用于使系统旋转。将重心到船的距离除以 2/3,就得到角加速度。

于 2011-02-10T08:31:57.783 回答
1

通过将旋转部分与平移部分分开,这是最容易编码的。

您有一个施加在球 A 上的力的总和 - 例如重力 + 来自发动机的推力 + 摩擦力。设这是FA(一个向量)。您有一个施加在球 B 上的力的总和 - 例如重力 + 摩擦力。让它成为FB(一个向量)。

物体的质心位于杆上。它位于 (ma A + mb B ) / (ma+mb) 位置。它是距质量 A 的距离 ca,其中 ca = mb/(ma+mb)。| AB | 以及与质量 B 的距离 cb,其中 cb = ma/(ma+mb)。| AB |。令UAB的标准化版本(即U具有单位长度)。

对系统进行建模,以便获得质心 = X的位置和角度 theta。您还可以存储速度V和旋转速度 w。我们希望找到线性加速度A和旋转加速度 w'。

质心的运动由牛顿定律使用系统上的总力和总质量来控制,因此:

FA + FB = (ma + mb)。一个

旋转由所涉及的扭矩控制。(标量)扭矩 =来自质心的x向量。因此,每个物体上的扭矩为:

TA = FA x ca.- U

TB = FB x cb。ü

请注意,这是二维叉积,即 TA = FA [x] * ca.- U [y] - FA [y] * ca.- U [x]

转动惯量定义为

我 = ca*ca*ma + cb*cb*mb

然后

TA + TB = Iw'

给定X和 theta的每个质量的位置的推导留给读者作为练习:)

于 2011-02-10T15:40:00.020 回答