如何插入3D坐标

时间:2012-09-21 16:54:26

标签: python r 3d interpolation splines

我有x,y,z格式的数据点。它们形成闭合流形的点云。如何使用R-Project或Python对它们进行插值? (与多项式样条相似)

2 个答案:

答案 0 :(得分:4)

这取决于最初代表的点数。只有一个点阵列通常不足以从中得到原始流形。你需要知道哪些点在一起。

最常见的低级边界表示(“brep”)是一堆三角形。这是例如什么是OpenGL和Directx作为输入。我编写了一个Python software,它可以将STL格式的三角形网格转换为例如一张PDF图片。也许你可以根据自己的需要调整它。插入三角形通常不是必需的,而是需要做的事情。在两个原点之间的中间创建三个新点。这三个点形成内三角形,表面的其余部分形成三个三角形。因此,您已将一个三角形转换为四个三角形。

如果这些点是样条曲面贴片的控制点(如NURBSBézier surfaces),则必须知道哪些点一起形成贴片。由于这些是参数曲面,一旦您知道控制点,就可以确定曲面上的所有点。以下是Bézier曲面的功能。参数u和v是曲面的参数坐标。它们沿贴片的两个adjecent边缘从0到1运行。控制点是k_ij。

formula of Bézier patch

B功能是每个控制点的权重函数;

weight functions

假设您想要通过10x10点的网格逼近Bézier曲面。要做到这一点,你必须为u和v评估函数 p ,分为10步,从0到1运行(使用numpy.linspace轻松完成步骤。)

对于每个(u,v)对, p 返回3D点。

如果您想要显示这些点,可以使用matplotlib中的mplot3d

答案 1 :(得分:1)

“紧凑流形”是指像嵌入3d中的轨迹或曲面等低维函数?根据您希望的“参数”或“非参数”的方式,R有几种替代表面问题。各种类型的回归样条可以在估计平均值f(x,y)的框架内应用,如果这些值“紧密”间隔,则可以得到相对准确和简单的概要估计。有几种非参数方法,例如包'locfit','akima'和'mgcv'。 (我不确定如何统计估计3空间的1-d流形。)

编辑:但是如果我确实想要看到3D分布并想知道是否是参数曲线或轨迹,我会找到包:rgl并将其绘制在可旋转的3D框架中。

如果你试图形成凸包(对于插入词可能是错误的选择),那么我知道有2-d解决方案,并且怀疑搜索也会找到3-d解。构建正确的搜索策略将取决于迄今为止缺少2条评论的具体细节。我推测,如果你想用回归努力来创建边界,可以尝试模拟像第一和第99百分位数这样的低阶和高阶统计量作为(x,y)的函数。 Roger Koenker有一个分位数回归软件包'rq'得到了很好的支持。

相关问题