2012-01-09 70 views
0

你好,新年快乐!带贝塞尔曲线的简单2D平面轨迹

让我从严格的事实开始,而不是写这里的整个场景。

enter image description here

这是我

  • 在二维空间的平面(X,Y)
  • 目的地这架飞机在二维空间中飞(X, Y)
  • 从4个点(A,B,C,D)产生贝塞尔曲线的贝塞尔曲线类

这就是我需要做的

  • 当用户单击X空间“ Y”我需要生成一个贝塞尔曲线 这种飞机飞到那里。

这些都是一些假设

  • 据了解,飞机不能在一个地方旋转,它必须做出一些最小转弯
  • 据了解,当目的地在飞机前面它不作任何转动

  • 贝塞尔曲线必须从4点计算,其中

  • 点A =实际平面位置
  • 点B =实际平面位置+实际平面方向* 2(所以它前进一点? )
  • 点C =需要计算
  • 点d =平面目的地

这里有一些这些场景的绘制:

enter image description here

enter image description here

enter image description here

问题

  • 如何计算这个贝塞尔曲线,我已经有了点A,d但我需要的B,C,使这把适当的。

  • 我该如何描述这个贝塞尔,让我们说planeA比planeB有更小的转弯?

我已经差不多了,但在这种情况下几乎没有什么,所以我最好在你的帮助下重写这个。

感谢您的任何帮助,我用这个挠我的脑袋,发现它不是那么容易,我在想......或者?

回答

0

您所描述的B点(“实际平面位置+实际平面方向”)工作得很好。当飞机开始转弯时,你沿飞机方向走多远就会调整。

对于C点,将其设置为与点D(目的地)相同将会很好地工作。至于转折率,我不确定你会用(立方)贝塞尔曲线得到很多控制。他们都是关于位置和方向,没有什么可以调整二阶曲率。调整B点可能是一个很好的折中,但它更多地调整反应时间和路径,而不是调整速度。

+0

是的,但是如果我完全点击飞机后面,它仍然不起作用 - 它会在到达B后在一个地方转身并继续转向C(这是D)。好的,这是如此火箭科学,它不能完成? – PeeS 2012-01-10 09:45:29

+0

你是那个想用贝塞尔曲线做的人。在我看来,这样做会很容易处理所有情况,即可能会让事情变得更加困难而不是简单。也许你可以从你的飞机的最佳转弯速度开始,然后在你指向正确的方向时用一条直线。 – wxffles 2012-01-12 22:29:43

+0

好吧,我会用另一种方法,只是计算到目的地的角度,旋转我的飞机,直到它的角度+ - 等于目的地角度,飞向那个方向。发现贝塞尔过于复杂这个简单的游戏.. – PeeS 2012-01-13 13:42:13