如何在python中相交两个平面并导出相交的坐标

问题描述

我在 3d 空间中有一堆点(xyz),我想从中提取一些点。我复制了一个带有两个链接在一起的数组的简化示例:

all_points=[[np.array([[6.8,1.,0.1],[6.8,3.,6.,\
                       [4.8,2.],[4.8,\
                       [3.8,3.],[3.8,\
                       [2.8,4.1],[2.8,4.1]]),\
             np.array([[5.,[5.,\
                       [4.,[4.,\
                       [6.,[6.,\
                       [7.,4.],[7.,\
                       [3.,[3.,4.]])]]

首先,我想检查数组是否正常。如果我根据 z 值对普通数组进行排序,则 srted 数组的 x 值将增加或减少。第一个阵列(上图中的蓝点)清楚地显示一个正常的集合。对于普通数组,我只做一个简单的任务并导出显示它们角的四个点(在我的图中用黄色和绿色箭头显示)。这些点是根据 xyz 的最小值和最大值找到的。以下代码给了我法线的四个角:

four_corners=[]
for points in all_points:
    for sub_points in points:
        sorted_sub=np.sort(sub_points.view('i8,i8,i8'),order=['f2','f1'],axis=0).view('float')
        le_st=sorted_sub[np.where(sorted_sub[:,2] == sorted_sub[0,2])]
        le_st=len(le_st)
        le_en=sorted_sub[np.where(sorted_sub[:,2] == sorted_sub[-1,2])]
        le_en=len(le_en)
        cor=np.array([sorted_sub[0,:],sorted_sub[int((le_st-1)),sorted_sub[-1,sorted_sub[-le_en,:]])
        four_corners.append(cor)

在异常集合中(我的无花果中的黑色方块)通常有些点非常接近正常集合(可以定义一个限制),然后它们就会消失。我想通过创建两个平面来提取四个点。第一个平面是使用为法线点找到的四个角点中的三个创建的。第二个表面是使用不接近正常点的异常点的每三个点创建的(在我的图中用红线突出显示)。然后,我想找到两个曲面的交线,并在xzy)的最小值和最大值中找到16十字路口。我所有角点(正常或异常)的 y 值是最小值或最大值。其他两个点是通过将来自法线平面的具有较高 y 值(由黄色箭头突出显示)的两个角点的 zz 值代入方程异常集平面。我只知道如何基于 this solution 创建表面。实际上,我可能有几个正常和异常的集合,它们都与正常相关联。在此之前,我非常感谢在 Python 中做我想做的事情的任何帮助和贡献。

enter image description here

解决方法

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

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

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