Algorithm 控制坦克式车辆运动的公式?

Algorithm 控制坦克式车辆运动的公式?,algorithm,language-agnostic,Algorithm,Language Agnostic,有人知道控制简单坦克式车辆运动的公式吗 要“操纵”它,需要改变左右“车轮”施加的力。两个轮子上各有一个力单位使它前进-1两个车轮上的力单位使其向后移动。对一个车轮施加比另一个车轮更大的力,车轮就会转动 你将如何计算两个车轮上的力的大小,以使油箱向任意方向转动一定的度数 还是我想的不对 编辑: 正如威廉·凯勒所说,我忽略了坦克的速度。假设两个车轮上都有1个单位的力,使油箱以每秒1个单位的速度向前移动 对于任何感兴趣的人,我刚刚在gamedev.net上找到了以下线索: 另一个线程: 事实证明,

有人知道控制简单坦克式车辆运动的公式吗

要“操纵”它,需要改变左右“车轮”施加的力。两个轮子上各有一个力单位使它前进-1两个车轮上的力单位使其向后移动。对一个车轮施加比另一个车轮更大的力,车轮就会转动

你将如何计算两个车轮上的力的大小,以使油箱向任意方向转动一定的度数

还是我想的不对

编辑: 正如威廉·凯勒所说,我忽略了坦克的速度。假设两个车轮上都有1个单位的力,使油箱以每秒1个单位的速度向前移动

对于任何感兴趣的人,我刚刚在gamedev.net上找到了以下线索:

另一个线程:


事实证明,找到公式的关键在于知道正确的术语(“滑移转向”):p

请记住,您在这里也谈到了持续时间。你需要找出考虑到坦克在(1,-1)处转弯速度的力

也就是说,如果坦克在(1,-1)旋转360˚需要一秒钟,而你想在一秒钟内旋转180˚,(.5,-.5)就可以了。如果你想在半秒内旋转相同的量,那么(1,-1)就行了


如果您使用abs(lrate),这将更加复杂abs(rrate),在这种情况下,你可能需要拿出一支铅笔

你想得不对。问题是,轨道上不同的力不会使坦克转动一定的角度。相反,不同的力会改变转动率

力和转动率之间的关系将根据油箱的机械结构而变化。油箱越宽,转弯越慢。坦克开得越快,转弯就越快

另外,还有一些想法:我认为如果不以真实世界的坦克为基础,就不可能有一个基于物理的答案。有几个答案涉及到了这个转折点的物理性质,但所有答案都隐含着一个假设,即系统具有无限的力量。油箱真的能在1,-1下工作吗?它能瞬间达到那个速度吗?加速度也适用于转弯


最后,踏板有长度和宽度。这意味着在任何转弯情况下,踏板都会发生一些侧向滑动,转弯越快,所需的此类滑动就越多。这将在一个急转弯中消耗能量,即使发动机有动力做1,-1转由于摩擦损失,它不会像那样转得快。

我已经有一段时间没有做任何物理实验了,但我认为两个轨道在相反方向上移动的并置力会产生一个围绕油箱质心的扭矩


正是这个力矩产生了坦克的角动量,这只是坦克开始旋转的另一种说法。

这不是一个力的问题-它取决于两侧之间的速度差,以及这个差保持多久(还有坦克的宽度,但这只是一个常数)

基本上,您应该沿着以下几条线进行计算:

  • 两侧之间的速度比与半径比相同
  • 水箱的宽度是两个RASIUSE(sp?)之间的实际差值
  • 使用这两个数字,找到半径的实际值
  • 将一条边的速度乘以它移动的时间,得到它移动的距离
  • 通过将一整圈的周长除以该周长来计算它所经过的部分

我得说你想得不对

增加两个踏板之间的速度差不会导致转向度-它们与时间(不同速度下的距离)结合会导致转向度

踏面速度差异越大,实现X度转弯所需的时间越短

所以,为了得出一个公式,你必须做一些假设。以固定速率转弯,并使用时间作为转弯X度的变量,或设置完成转弯的固定时间量,并使用履带速度差作为变量

Change in angle (in radians/sec) = (l-r)/(radius between treads)
Velocity = l+r
对于dtheta,假设你的双手之间有一根木杆,你想计算它旋转的程度,这取决于你的手按压的力度和方式-你想计算出:


你每秒在杆子上覆盖多少表面距离->每秒旋转多少次->每秒多少弧度(即乘以2pi)

以下是我解决坦克问题的方法

坦克的中心可能会以左右履带的平均速度移动。同时,油箱将围绕其中心顺时针旋转([左履带速度]*-[右履带速度]/[宽度]

这会给你速度和方向向量


免责声明:我没有测试过这个…

你可以这样看:每首曲目都描述了一个圆圈。 如果一条轨道正在转弯(比如说向左),而另一条轨道没有转弯,则面将取决于左轨道转弯的时间和距离

该距离将是轨道的速度x时间

现在用这个距离画一个三角形,用铅笔画出轴距,加上一些正反方程和近似值,你可能会得到一个近似方程,如:

端面变化=轨道行驶的距离/轴距

然后你可以加入一些加速度来更真实一些:更多的物理

速度不是恒定的-它加速(和减速)

在一段时间内,速度从0增加到0.1。。。0.2 ... 0.3到一个极限

当然,随着速度的变化,脸的变化率也会发生变化——比速度(和)更真实一点
So = Si * ((r+d)/r)
c1 = 2*PI*r
'r' is radius of circle origin to track/wheel
c2 = 2*PI*(r+d)
'r' is radius of circle origin to inner track/wheel
'd' is the distance between the Inner and Outer wheels/track.
X = c2 / c1
X = 2*PI*(r+d) / 2*PI*r
X = (r+d)/r
So = Si * ((r+d)/r)
'So' = Speed of outer track
'Si' = Speed of inner track
'r'  = turn radius from inner track
'd'  = distance between vehicle tracks.


               ********* <---------------- Outer Track
           ****    |    ****                     
        **         |<--------**----------- 'd' Distance between tracks
       *        *******<-------*---------- Inner Track
      *      ***   ^   ***      *  
     *      *      |<-----*------*-------- 'r' Radius of Turn
     *     *       |       *     * 
     *     *       O       *     * 
     *     *               *     * 
     *      *             *      * 
      *      ***       ***      *  
       *        *******        *   
        **                   **    
           ****         ****       
               *********