如何计算两个3d圆上的一对最近点?

tfi*_*iga 12 math 3d geometry

我在3d空间中有两个2d圆圈(由中心,法线和半径定义),我试图想出一对点,这是一组最接近的点之一.我知道有1到无限数量的点对,我只需要一对匹配.

有一个简单的方法吗?精度不是必不可少的.两个圆的半径相同,非零值.

如果背景有用,我的整体算法在空间中采用NURBS曲线并沿曲线挤出2d多边形,从而产生变形的圆柱体.我只是在曲线上采样几个点.每个圆的法线是NURBS曲线切线,我试图弄清楚如何对齐相邻的样本,所以我不会得到奇怪的扭曲.似乎相邻样品上的最近点应该对齐.


感谢这里的所有回复..项目的这一部分有点延迟,这就是为什么我还没有测试所有的答案.我肯定会在这里折腾一些图像并在我再次开始工作时给出答案.

par*_*cle 4

您真正想要计算的是一对点,该点对位于 3 维中 2 个不同圆上的点之间的距离最小化。您应该采用的找到精确解的方法(就像在几乎所有优化问题中一样)是将距离表示为所有可能点的函数,并取其相对于自变量的导数,并将结果表达式设置为 0由于您有 2 个圆,因此您将有 2 个自变量(即一个圆上的点和另一个圆上的点的角度)。一旦解出了最小化方程,您还将找到满足约束条件的圆上的点。(基本上,您会在圆上找到您要查找的点对的角度。)

我在网上找到了一篇论文(在此站点),该论文严格地进行了计算,但最终结果是求解八阶多项式方程。您可能会尝试简化方程并提出一个不太精确的解决方案来满足您的需求。

还有一篇论文声称有一种更快的算法来计算 3d 中两个圆之间的距离;但是,我无法查看内容,因此无法判断它是否也给出了满足该条件的一对点。

更新:重新阅读您的问题后,我发现即使您正在寻求一种在 3 维中找到两个圆上最接近的点对的方法,我认为您应该更多地关注 NURBS 曲线的属性您正在尝试沿 2D 多边形挤出。您提到曲线上给定点的圆的方向由该点的切向量指定。然而,3D 曲线不仅仅是切向量;有一个法向(或曲率)向量指向给定点处的曲线曲率中心,然后有一个扭转向量,它基本上指定了曲线从切线给出的平面的“升力”量,法向量。所有这些都定义了一个(所谓的)Frenet 框架。您可以在维基百科文章中阅读更多相关内容。

我怀疑您可以通过连接连续圆的点来实现您想要的效果,每个圆都沿着基础 3D 曲线的法向量方向。这样,只有当曲线实际扭曲时,即当扭转矢量非零并且法线矢量也在改变方向时,才会发生扭曲。在其他情况下,这应该可以满足您的实际需要。

您可能不需要在连续圆上寻找最近​​点的过度杀伤力。