在飞机上滑行

Sliding on a plane

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

所以如果它在平面上颠簸,速度矢量的一部分是 负责在飞机上燃烧被消耗掉。 所以,在下一步中,它不会与平面相撞,而是可以继续前进。

在飞机上"slides"

有什么想法吗?

既然你不给代码,我就简单的说一些没有代码的想法。

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

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

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