Java 如何定义一个对象在另一个对象的曲面上的运动路径?

Java 如何定义一个对象在另一个对象的曲面上的运动路径?,java,c++,collision-detection,simulation,physics,Java,C++,Collision Detection,Simulation,Physics,我有一个不寻常的问题。有两个三维对象,它们由顶点和三角形数组(.stl文件)表示。每个顶点都包含足够多的顶点:1-10百万个。这些模型的表面粗糙,可能包含不同的尖峰或凹陷 其目的是确定其中一个对象在与另一个对象的表面接触时的路径。此外,该算法应考虑有多少自由度可用。在每种情况下,只有两个对象,其中一个是固定的 例如,对象M1在对象M2的曲面上移动,该曲面是固定的。有必要将M1从点A移动到B。对于M1,它还有一个自由度——沿着垂直于AB的轴(我们称之为AC)。因此,路径只能是平面中的曲线(AC,A

我有一个不寻常的问题。有两个三维对象,它们由顶点和三角形数组(.stl文件)表示。每个顶点都包含足够多的顶点:1-10百万个。这些模型的表面粗糙,可能包含不同的尖峰或凹陷

其目的是确定其中一个对象在与另一个对象的表面接触时的路径。此外,该算法应考虑有多少自由度可用。在每种情况下,只有两个对象,其中一个是固定的

例如,对象
M1
在对象
M2
的曲面上移动,该曲面是固定的。有必要将M1从点
A
移动到
B
。对于M1,它还有一个自由度——沿着垂直于
AB
的轴(我们称之为
AC
)。因此,路径只能是平面中的曲线
(AC,AB)
。但是由于该路径,在运动过程中,
M1
应始终至少有一个接触点

我试着用碰撞检测算法来实现它,但对于普通计算机来说,这似乎是非常复杂的计算。有人能为如何实现这一想法提供一些算法、库或概念吗?
我使用C、C++和java。< /P>你应该查看或。这是一个运动规划问题。碰撞检查只是问题的一小部分。您应该更明确地说明您正试图做什么。在你抽象问题的方式中,有许多未回答的问题,这可能会大大简化答案。你说的这些东西是什么?他们的几何结构有什么样的约束?@JarkkoL我需要描述上下假牙的相互作用,考虑到每个牙齿的几何结构和下颌骨的关节运动。我有每个假牙和可能的关节运动的.stl文件。@Eugene在这种情况下,听起来你应该能够将假牙定义为运动模拟的高度图,这大大简化了问题。@JarkkoL-Hmm。。。这是一个想法。。。谢谢