我有 x,y,z 格式的数据点。它们形成闭合流形的点云。如何使用 R-Project 或 Python 对它们进行插值? (如多项式样条)
最佳答案
这取决于点最初代表什么。仅拥有点数组通常不足以从中导出原始流形。您需要知道哪些点是相辅相成的。
最常见的低级边界表示(“brep”)是一堆三角形。这是例如OpenGL 和 Directx 获取什么作为输入。我写了一个Python software可以转换 STL 中的三角形网格格式为例如PDF 图像。也许您可以根据您的目的进行调整。对三角形进行插值通常不是必需的,但也很简单。创建三个新点,每个点位于两个原始点之间。这三个点形成一个内三角形,曲面的其余部分形成三个三角形。这样你就将一个三角形变成了四个三角形。
如果这些点是样条曲面面片的控制点(例如 NURBS 或 Bézier surfaces ),您必须知道哪些点一起形成面片。由于这些是参数曲面,一旦知道控制点,就可以确定曲面上的所有点。下面是贝塞尔曲面的函数。参数 u 和 v 是表面的参数坐标。它们沿着补丁的两个相邻边缘从 0 运行到 1。控制点是k_ij。
B函数是每个控制点的权重函数;
假设您想通过 10x10 点的网格来近似贝塞尔曲面。为此,您必须以 10 个步骤评估 u 和 v 从 0 到 1 的函数 p(使用 numpy.linspace
可以轻松生成这些步骤)。
对于每个 (u,v) 对,p 返回一个 3D 点。
如果您想可视化这些点,您可以使用 mplot3d来自 matplotlib。
关于python - 如何插值 3D 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534813/