在 Python 中查找从曲线中最近点到有界 n 维 space 中任意点的距离

Finding distance from closest point in curve to any arbitrary point in bounded n dimensional space in Python

我正在与 Python 合作解决这个问题。

假设我有一些点 p 和 n 维(紧凑)中的一维任意曲线 space。如何找到曲线中最接近指定点 p 的点?我在 Find minimum distance from point to complicated curve 中找到了答案,但 Shapely 仅适用于平面,我正在使用的曲线的表达式驻留在 spaces 中,由于参数的数量,其维数范围为 2 到 16定义曲线。 这些曲线的表达式总是明确已知的。

我也尝试过使用 scipy.optimizeSLSQP 来最小化距离函数,但它并不总是有效。例如,如果曲线是 np.sin(15*x),并且点仅位于以 (0.5, 0.5) 为中心的单位正方形中,则曲线的某些部分仅在两个维度之一的正方形内,并且最小化失败对于某些点。

如果你知道曲线的解析形式,你总是知道从点 x(t)、y(t) 到你的外部点的距离。您可以将距离写成解析形式。 因此,您需要从距离表达式中找到导数并找到根。