【问题标题】:Sliding on a plane在飞机上滑行
【发布时间】:2019-12-11 23:02:44
【问题描述】:

我有一个平面(点,法线)和一个圆(点,半径)。 圆圈移动并撞到飞机。 圆的位置被重置为与平面的接触点。 到目前为止,一切都很好。 但是我怎样才能修改圆的速度,所以它只会移动 与平面相切?

因此,如果它在平面内发生碰撞,则速度矢量的部分为 负责在飞机上燃烧是消耗。 因此,在下一步中,它不会与飞机相撞,而是可以继续前进。

它在飞机上“滑动”。

有什么想法吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow。你的问题有点令人困惑。你提到了一架飞机,所以你显然是在处理 3D 笛卡尔空间。但是在这样的空间里,一个圆需要不止(point, radius)来定义它。它还需要指定通过半径的平面。你对圆的完整定义是什么?此外,在与飞机撞击时,圆圈是如何移动的。圆的方向是固定的吗?圆的速度是如何表示的:用笛卡尔速度矢量表示?请详细说明。

标签: math game-physics


【解决方案1】:

既然你没有给出代码,那我就说几个没有代码的想法吧。

如果法线向量是单位向量(长度为 1),则平面的 (Point, normal) 定义更简单。如果不是,则将该向量除以它的长度,它就成为一个单位向量。

如果圆的速度由 3D 笛卡尔速度矢量给出,您可以通过取这两个矢量的点积来找到该速度矢量沿平面单位法线矢量的分量。结果是向量沿法线的定向大小。然后,您可以通过将单位法线向量乘以该点积,然后从圆的速度向量中减去该分量来移除该分量。减法的结果是圆沿平面的速度。这显然是你想要找到的。

如果您在我的评论中回答我的问题,我可以用我当前的首选语言 Python 3 向您展示一些代码。

【讨论】:

  • 谢谢罗里。是的,这就是解决方案。不需要代码。
猜你喜欢
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 2018-02-11
相关资源
最近更新 更多