如何在python中外推3D空间中的一些点

问题描述

我在 3d 中有一些点,想对它们进行某种推断。我的点在常规的 xy 网格中并且有一些分裂。我想推断出分裂之外的点。我复制了一个具有三个分割的简化数据集。我推断出第一个分裂的末端、中间分裂的两侧和第三个分裂的前侧。在 10 分割的情况下,我推断第一个的末端侧,分割数的两侧 29 和最后一个的正面。这些是我的坐标(xyz):

surf_points=[[np.array([[1.,19.,4.],[1.,20.,[2.,4.5],[3.,4.]]),\
              np.array([[4.,3.2],[4.,3.],[5.,3.1],[6.,3.1]]),\
              np.array([[7.,4.1],[7.,4.2]])]]

目前,每个split先在x方向排序,然后在y方向排序。我将其更改为首先基于 y 排序,然后使用 this solution 排序 x。然后 surf_points 将是:

[[np.array([[1.,\
 np.array([[4.,\
 np.array([[7.,4.2]])]]

第一次分割外推

对于第一次拆分,我想在每个 y 网格的末尾添加两个点。第一个 y 网格是 19,第二个是 20。新点的 xy 是固定和定义的:(3.,19.)(4.,19.)z 值是根据每个 y 网格中存在的前两个点计算得出的。如果网格中只有一个点,我只需复制那个点的 z。第一个 y 网格有两个点,z 值为 4.4.5。第一个外推点是该网格中的第三个,其 z 将计算为 4.5 + (4.5-4)/2 = 4.75 (z of last point + (z of last point - z of one point before the last)/2) 并且对于第二个外推点,我更新最后一个点和最后一个点之前的点将其设为 4.75 + (4.75-4.5)/2 = 4.875。因此,第一个 y 网格的两个外推点将是 (3.,4.75)(4.,4.875)。我对第二个 y 网格 (20) 执行相同操作。这个网格有三个点,另外两个点是 (4.,20,3.75 #4+(4-4.5)/2)(5.,3.625# 3.75+(3.75-4.)/2)。这四点会在第一次分裂结束时加上。

中间分裂外推

对于中间分裂,我在前侧添加四个点,在末端添加四个点。端侧与第一次拆分的端侧完全相同。对于前侧 xy 外推点的值将小于现有值。它们将在第一个 (2.,19.) 网格中为 (3.,19.)y,在第二个 (2.,20.) 网格中为 (3.,20.)y。我首先开始计算第二个点的 z 为 (z of first point + (z of first point - z of second point)/2)。它将从现有的下两个点计算为 3.2 + (3.2-3.)/2.,这使得 3.3 然后使用这个 3.3 值来计算这个网格中第一个点的 z 值 3.3 + (3.3-3.2)/2. 这使得3.35。我对第二个 y 网格执行相同操作。

上次分割外推

对于最后一个分割,我想复制我为第二个分割的正面所做的事情,但它在每个 y 网格中只有一个点,我只复制外推值的值。 最后应该将新的外推点添加到以前的点中,我希望我的列表如下:

all_points=[[np.array([[1.,\
                       [3.,4.75],4.875],3.75],3.625]]),\
             np.array([[2.,3.3],3.35],2.923],2.95],\
                       [4.,\
                       [7.,3.15],[8.,3.175],\
             np.array([[5.,4.2],4.2]])]]

为了澄清我的问题,上传了一个无花果。在图中,每个分割的外推点用不同的颜色和符号显示。 我非常感谢在 Python 中将我的想法写成算法的任何帮助。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...