三维坐标点按剖面分类

2024-05-03 05:44
文章标签 分类 坐标 三维 剖面

本文主要是介绍三维坐标点按剖面分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、写在前面

①配套文件:根据剖面对三维坐标点(X,Y,Z)分类资源-CSDN文库

②脱敏处理:蚀变数据已采用随机数生成覆盖

③剖面坐标按顺序排列在“剖面坐标点.xlsx”文件中

二、3点确定空间中平面方程

原理:

设3点A,B,C
计算向量AB和AC
法向量n = AB × AC (叉乘
得到n(ni,nj,nk)后,设方程为
ni * X + nj * Y + nk * Z = D
代入A,B,C任意一点的坐标得出D值后就可以得到平面方程

代码:

输入:p1、p2、p3为平面上的3个点

输出:Ax+By+Cz+D=0平面方程中的系数

def plane_from_points(p1, p2, p3):# 将点转换为numpy数组,如果已经是数组则不转换a = np.array(p1)b = np.array(p2)c = np.array(p3)# 计算法向量normal = np.cross(b - a, c - a)# 归一化法向量并计算dd = -np.dot(normal, a)print("平面方程: {}x + {}y + {}z + {} = 0".format(normal[0],normal[1],normal[2],d))return normal[0], normal[1], normal[2], d

三、确定空间中一点到平面的距离

原理:点到平面距离_百度百科 (baidu.com)

代码:

输入:①平面方程中的4个系数;②待求与平面方程距离的点

输出:点到平面距离

def point2area_distance(Ax, By, Cz, D,p):mod_d = Ax * p[0] + By * p[1] + Cz * p[2] + Dmod_area = np.sqrt(np.sum(np.square([Ax, By, Cz])))d = abs(mod_d) / mod_areareturn d

四、完整代码

dataSample = pd.read_excel(r"C:\Users\zsllsz2022\Desktop\坐标分类.xlsx")import numpy as npdef plane_from_points(p1, p2, p3):# 将点转换为numpy数组,如果已经是数组则不转换a = np.array(p1)b = np.array(p2)c = np.array(p3)# 计算法向量normal = np.cross(b - a, c - a)# 归一化法向量并计算dd = -np.dot(normal, a)print("平面方程: {}x + {}y + {}z + {} = 0".format(normal[0],normal[1],normal[2],d))return normal[0], normal[1], normal[2], ddef point2area_distance(Ax, By, Cz, D,p):mod_d = Ax * p[0] + By * p[1] + Cz * p[2] + Dmod_area = np.sqrt(np.sum(np.square([Ax, By, Cz])))d = abs(mod_d) / mod_areareturn dpointData = data = pd.read_excel(r"C:\Users\zsllsz2022\Desktop\剖面坐标点.xlsx")point = []for index in range(63):     x = pointData["X"].iloc[index]y = pointData["Y"].iloc[index]z = pointData["Z"].iloc[index]point.append([x,y,z])fileIndex = 1
for x in [3*x for x in range(3,4)]:  #range21p1 = point[x]p2 = point[x+1]p3 = point[x+2]a,b,c,d = plane_from_points(p1, p2, p3)dataSample = pd.read_excel(r"C:\Users\zsllsz2022\Desktop\坐标分类.xlsx")classifyIndex = []for index in range(len(dataSample)):xTo = dataSample["Xto"].iloc[index]yTo = dataSample["Yto"].iloc[index]zTo = dataSample["Zto"].iloc[index]toPoint = [xTo,yTo,zTo]xFrom = dataSample["Xfrom"].iloc[index]yFrom = dataSample["Yfrom"].iloc[index]zFrom = dataSample["Zfrom"].iloc[index]fromPoint = [xFrom,yFrom,zFrom]if point2area_distance(a,b,c,d,toPoint) < 5:classifyIndex.append(index)if point2area_distance(a,b,c,d,fromPoint) < 5:classifyIndex.append(index)dataSample = dataSample.iloc[classifyIndex]list_to_append = [np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,np.nan,dataSample["Dep2200"].mean(),dataSample["IC"].mean(),dataSample["Pos2200"].mean(),dataSample["Dep2250"].mean(),dataSample["Pos2250"].mean(),dataSample["Dep1900"].mean()]new_row = pd.DataFrame([list_to_append], columns=list(dataSample.columns))dataSample = dataSample.append(new_row,ignore_index=True)print("剖面完成:",fileIndex)dataSample.to_excel(r"C:\Users\zsllsz2022\Desktop\剖面{}.xlsx".format(fileIndex))fileIndex += 1

这篇关于三维坐标点按剖面分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955948

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

hdu4826(三维DP)

这是一个百度之星的资格赛第四题 题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=500 题意:从左上角的点到右上角的点,每个点只能走一遍,走的方向有三个:向上,向下,向右,求最大值。 咋一看像搜索题,先暴搜,TLE,然后剪枝,还是TLE.然后我就改方法,用DP来做,这题和普通dp相比,多个个向上

Vector3 三维向量

Vector3 三维向量 Struct Representation of 3D vectors and points. 表示3D的向量和点。 This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doin

用Pytho解决分类问题_DBSCAN聚类算法模板

一:DBSCAN聚类算法的介绍 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,DBSCAN算法的核心思想是将具有足够高密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。 DBSCAN算法的主要特点包括: 1. 基于密度的聚类:DBSCAN算法通过识别被低密

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

SW - 引入第三方dwg图纸后,修改坐标原点

文章目录 SW - 引入第三方dwg图纸后,修改坐标原点概述笔记设置图纸新原点END SW - 引入第三方dwg图纸后,修改坐标原点 概述 在solidworks中引入第三方的dwg格式图纸后,坐标原点大概率都不合适。 全图自动缩放后,引入的图纸离默认的原点位置差很多。 需要自己重新设置原点位置,才能自动缩放后,在工作区中间显示引入的图纸。 笔记 将dwg图纸拖到SW中

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

PMP–一、二、三模–分类–14.敏捷–技巧–原型MVP

文章目录 技巧一模14.敏捷--原型法--项目生命周期--迭代型生命周期,通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈,因此原型法比较好用。23、 [单选] 一个敏捷团队的任务是开发一款机器人。项目经理希望确保在机器人被实际建造之前,团队能够收到关于需求的早期反馈并相应地调整设计。项目经理应该使用以下哪一项来实现这个目标?