【问题标题】:TrigMath, 2 masses, rigid rod computing velocityTrigMath,2 个质量,刚性杆计算速度
【发布时间】:2011-06-24 15:34:56
【问题描述】:

像其他人一样,我正在做一个 Thrust 克隆只是为了刷一下。我已经到了船接吊舱的阶段了。

基本上我有两个质量(仅考虑球心)与一个刚性的、无质量的杆相连。 L 永不改变,永不中断。

在这种情况下,ship(ma) 的质量为 1.0,pod(mb) 的质量为 2.0。计算新位置所需的数学是什么?当我对船(ma)施加推力时,如何将其应用于吊舱(mb)? (并让它按预期摆动)做船本身是直截了当的,通常 velx-=sin(angle)*thrust, vely+=cos(angle)*thrust。 posx+=velx。等等。我知道我曾经知道如何做到这一点,但是很多年前的学校。

【问题讨论】:

  • 嘿,奇怪,我浏览了一个回复,但在电视完成之前保存了它,但现在它不见了。删除了吗?
  • 删除,因为我发现了一个错误,我已经来不及修复它了。我现在将添加一个正确的答案。
  • 谢谢大家,我认为我最大的问题是我一直认为这艘船是主要演员(因为直到我们到达吊舱)。但是在连接到吊舱后,我应该从跟踪船的位置切换到跟踪 2 质量物体的质心。向其中心施加推力(根据船舶方向的角度差异和杆的角度在运动和旋转之间划分)。放置球和船只是将它们绘制在正确位置的功能。我相信我现在有足够的时间继续前进,谢谢你们。

标签: c math trigonometry game-physics gravity


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    通过将旋转部分与平移部分分开来最容易编码。

    你有一个施加在球 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)。A

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

    TA = FA x ca.- U

    TB = FB x cb.U

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

    惯性矩定义为

    I = ca*ca*ma + cb*cb*mb

    然后

    TA + TB = I.w'

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多