python计算点到面的距离
python计算点到面的距离
已知M个点,记P∈R^(M*3),目的是求M个点到平面Z= aX + bY + c的距离解法1: 使用平面的法向量来求解
平面Z= aX + bY + c的法向量为[a,b,-1];解法2: 使用系数[a,b,c]来求解
- code1
# 加入normal就为法向量[a,b,-1]
def point_plane_dist(normals,pcd):max_dist = 0.4a1 = normals[0] # aa2 = normals[1] # ba3 = normals[2] # -1normals = normals.reshape(3,1)FM = np.sqrt(a1**2 + a2**2+a3**2)dists = abs(np.dot(normals,A)+a3)/FM# 求点集中于平面距离小于阈值的点集的索引ground_idx = (dists <= max_dist).ravel()ground_points = pcd[ground_idx]pre_cloud = pcd[np.logical_not(ground_idx)]# 输出地面背景点和前景点return ground_points, pre_cloud
- code2
def point_plane_dist(normals,pcd):max_dist = 0.4a1 = normals[0]a2 = normals[1]a3 = normals[2]FM = np.sqrt(a1**2 + a2**2+1)A = np.array([a1,a2,-1]).reshape(3,1)dists = abs(np.dot(pcd,A)+a3)/FMground_idx = (dists <= max_dist).ravel()ground_points = pcd[ground_idx]pre_cloud = pcd[np.logical_not(ground_idx)]return ground_points, pre_cloud
- code2(c++版本代码)
#include<iostream>
#include<vector>using namespace std;vector<float> mat(vector<vector<float>> P, vector<float> N)
{float c = N[2];N[2] = -1;float FM = sqrt(pow(N[0], 2.0) + pow(N[1], 2.0) + 1);vector<float> res(P.size(), 0);for (int i = 0; i < P.size(); i++){for (int j = 0; j < N.size(); j++)res[i] += P[i][j] * N[j];res[i] += c;res[i] = res[i] / FM;}return res;
}int main()
{// 平面Z = aX + bY + cvector<float> normals(3, 0);//法向量[a,b,c]int N;cin >> N;vector<vector<float>> points(N, vector<float>(3, 0));vector<float> dist = mat(points, normals);return 0;}
python计算点到面的距离相关推荐
- HDU3662(求三维凸包表面的多边形个数,表面三角形个数,体积,表面积,凸包重心,凸包中点到面的距离)
题目:3D Convex Hull 题意:给定空间中的n个点,求这n个点形成的凸包的表面的多边形个数. 增量法求解:首先任选4个点形成的一个四面体,然后每次新加一个点,分两种情况: 1> 在 ...
- python计算点到直线的距离_Python求平面内点到直线距离的实现
近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: a:直线斜率 b:固定值-1 c:直线截距b 转 ...
- python求点到曲线距离_Python。如何从点和偏移距离的x,y列表中获取偏移样条曲线的x,y坐标...
在特殊情况下,坡度为无穷大/零,但基本方法是使用插值计算某个点的坡度,然后找到垂直坡度,然后计算该距离处的点.在 我修改了来自here的示例,以添加第二个图.它与data file you provi ...
- java jts点到面的距离_jts-空间索引
前言: 如果您对JTS这三个词还是没有一个概念,那么推荐您关注一下sinoly的博客.这个我能够找到为数不多的关于jts的中文资料. http://www.blogjava.net/sinoly/ar ...
- python计算平面两点距离公式_python距离公式坐标平面误差
我的目标是使用围绕圆的边缘和恒定起点(圆圈的中间)的随机端点在pygame中使用线条形成圆形.所以我决定将pygame.draw.line函数:screen,aRandomColor,starting ...
- python 求点到线段距离
1 点和线段的参数 # 点的坐标 p = [0,0]# 线段的参数 # 线段的端点1 a = [-1,1] # 线段的端点2 b = [1,1] 2 求取距离 import numpy as np d ...
- CloudComparePCL 点云点匹配(基于点到面的距离)
文章目录 一.简介 二.PCL中的匹配类型 三.实现代码 四.实现效果 参考文献 一.简介 在ICP算法中经常会使用到一个点到另一个点切平面的垂直距离("点到平面"误差度量,如下图 ...
- creo怎么测量点到面的距离
要点: 分析–测量–选"距离", 这时候会让选两个特征,选完第一个特征后,按住ctrl,才能选第二个!
- python实现点到平面的距离
python实现点到平面的距离 目录 python实现点到平面的距离 1.三点定面 2.点到面的距离 3.python实现点到面的距离 关于点线面之间关系可以参考:平面方程与点到平面的距离_西檬饭-C ...
最新文章
- 近期活动盘点:2019第六届世界互联网大会、面向智慧城市的人本尺度城市形态:理论方法与实践讲座、高级管理人员AI大数据能力研修班...
- [每日短篇] 1D - 消除 if 的一种方法
- Ts + React + Mobx 实现移动端浏览器控制台
- Spring框架的事务管理之基于AspectJ的XML方式(重点掌握)
- 静态程序分析chapter4 - 基于格(Lattice)理论的数据流分析
- IBM营收持续下滑 不过蓝色巨人证明自己非老矣
- Guava之Ordering
- python一行行写文件_python一行行写文件-女性时尚流行美容健康娱乐mv-ida网
- Android Studio 安装ASM插件
- 混合使用Objective-C,C++和Objective-C++
- 笔记本相机测试软件,联想笔记本人脸识别软件(Lenovo VeriFace)
- Python | 实现双色球选号(educoder)
- IP的子网和超网划分
- 苹果开场铃声 android,为何苹果用户喜欢用手机默认铃声?原因在这4点,真是非常现实...
- php在广告策划方面需要什么,网上推广网店运营 系统是基于PHP+MySQL的B2B(电子商务)行业门户解决方案”是什么意思呢,谢谢...
- 自学iOS开发系列----UI(视图编程入门:UIScrollView)
- 平面直角系【坐标系旋转】、【点绕坐标系旋转】、【A点绕B点旋转】
- LVS的模式一:DR(直接路由)模式
- led灯珠型号及使用参数
- pytorch实战(四)——模型的保存与读取