最近在做一个项目,已知三维空间中的一个点和构成直线的两个点的三维坐标,需要计算空间中点到直线的距离。
网上查了查,pcl有自带的计算函数,pcl::sqrPointToLineDistance如下,需要提供…方向?

好吧,反正我是不会搞。
后来又在网上查了查资料,发现可以用海伦公式,通过已知三角形三个边的长度计算三角形的面积!问题就非常简单了。

这样就可以先计算三个点之间的距离,作为三角形三个边的长度。然后利用三角形的面积公式:S = (h*a)/2计算空间中点到直线的距离啦。
感觉比网上求叉积的方式要容易些,但是具体会出现哪些问题,还没有深入探讨。
代码如下(我这里需要计算的是点到房间四条边的距离,仅做参考):

double Point_2_4line(Point cluster_pt,edge_pt component_info)
{vector<edge_pt> lines;//计算点到每条边界线的距离并筛选出最小距离double distance = 1000;for (size_t i = 0; i < lines.size(); ++i){//利用海伦公式计算三角形面积,然后通过三角形面积算距离double delt_x_a = cluster_pt.x() - lines[i].pt[0].x();double delt_y_a = cluster_pt.y() - lines[i].pt[0].y();double delt_z_a = cluster_pt.z() - lines[i].pt[0].z();double delt_x_b = cluster_pt.x() - lines[i].pt[1].x();double delt_y_b = cluster_pt.y() - lines[i].pt[1].y();double delt_z_b = cluster_pt.z() - lines[i].pt[1].z();double delt_x_c = lines[i].pt[1].x() - lines[i].pt[0].x();double delt_y_c = lines[i].pt[1].y() - lines[i].pt[0].y();double delt_z_c = lines[i].pt[1].z() - lines[i].pt[0].z();double A = sqrt(pow(delt_x_a,2) + pow(delt_y_a, 2) + pow(delt_z_a, 2));double B = sqrt(pow(delt_x_b, 2) + pow(delt_y_b, 2) + pow(delt_z_b, 2));double C = sqrt(pow(delt_x_c, 2) + pow(delt_y_c, 2) + pow(delt_z_c, 2));double p = (A + B + C) / 2;double area = sqrt(p*(p-A)*(p-B)*(p-C));double dis = 2 * area / C;if (dis < distance){distance = dis;}}return distance;
}

计算空间中点到直线的距离相关推荐

  1. 点到直线的距离计算原理及MATLAB程序

    在二维和三维空间,有现成的计算点到空间直线的距离的公式: 如: 三维空间有类似的计算公式. 甚至博客直接提出用叉乘和行列式计算点到直线距离的计算方法和程序.但仅限于二维和三维的情况.更高维的就不适用. ...

  2. java点到直线的投影点到经纬度_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...

    12分高考答题必刷题型,"空间向量分析点到线的距离问题" 立体几何大题 立体几何在各地高考中,基本都占据20分以上的比例,在解答方法上,小题技巧相对比较丰富,但大题解答上有明显的规 ...

  3. 点到直线的投影公式_12分高考答题必刷题型,“空间向量分析点到线的距离问题”...

    12分高考答题必刷题型,"空间向量分析点到线的距离问题" 立体几何大题 立体几何在各地高考中,基本都占据20分以上的比例,在解答方法上,小题技巧相对比较丰富,但大题解答上有明显的规 ...

  4. 叉积求点到平面距离_OpenCV计算点到直线的距离 数学法

    我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //== ...

  5. 空间点到直线的距离(hdu1174 爆头)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  6. C++——计算点到直线的距离保留两位小数

    直线方程:Ax+By+C=0 编写程序,输入A,B,C,和点(x,y),计算该点到直线的距离. 点到直线的距离公式: d=|Ax+By+C|/sqrt(A*A+B*B) 其中|z|表示绝对值,程序中使 ...

  7. python计算点到直线的距离_Python求平面内点到直线距离的实现

    近期遇到个问题,需要计算平面内点到直线的距离,发现数学知识都还给老师了,度娘后找到计算方法,特此记录. 点到直线的计算公式: 通过公式推导,得到信息: a:直线斜率 b:固定值-1 c:直线截距b 转 ...

  8. matlab中 点到线的距离,用matlab求解点到直线的距离

    满意答案 cith4gbai 2013.12.31 采纳率:59%    等级:12 已帮助:46219人 用matlab求解点到直线的距离,可自定义函数,方法如下: 先用直线上的一点和代表直线方向的 ...

  9. 使用向量的方法来计算点到直线的距离

    使用向量的方法效率更高,更简单. 首先要了解什么是向量,什么是向量的模 主要用到了解析几何里的几个公式 a * b = | a | * | b | * cos(x),其中x为向量a,b的夹角 | a ...

  10. 使用向量的方法计算点到直线的距离

    基础: 单位向量:模等于1的向量,一个非零向量除以它的模,可得所需单位向量. 向量的加减法: 向量的投影:设两个非零向量a与b的夹角为θ,则将|b|·cosθ 叫做向量b在向量a方向上的投影 向量的点 ...

最新文章

  1. EXCEL-常用函数总结
  2. 超级实用!如何为机器学习算法准备数据?
  3. [渗透攻防] 二.SQL MAP工具从零解读数据库及基础用法
  4. jquery网页刷新后控件失效_jquery动态增减控件如何才能不刷新页面
  5. 新一代数据库TiDB在美团的实践
  6. python爬取酷狗音乐top500_python获取酷狗音乐top500的下载地址 MP3格式
  7. Android控件系列之XML静态资源
  8. 磁盘分区格式化及交换分区
  9. Linux 高阶命令进阶(一)
  10. zabbix 5.0所有依赖包_一杯茶的时间,上手Zabbix
  11. Categories
  12. 线性表之带头双向循环链表
  13. 盘点丨12款数据库建模工具特点,总有一款适合你!
  14. 计算机扫描的配置文件在哪里找,打印机扫描文件到电脑哪里找
  15. java报错NoClassDefFoundError: Could not initialize class
  16. 扫地机器人的喋血江湖
  17. bzoj4484[Jsoi2015]最小表示 拓补排序+bitset
  18. Three TextureLoader纹理贴图不显示图片(显示黑色)
  19. 2010-12-28
  20. docker目录 /var/lib/docker/containers 日志清理

热门文章

  1. 南方cass快捷键命令修改在哪_南方cass快捷键命令
  2. 免费翻译软件哪个好用
  3. SEO外语网站批量翻译软件
  4. python接口测试面试题
  5. idea导入项目后没有被识别为maven项目的解决办法
  6. GitHub如何生成密钥
  7. MSP430+SI4432物联网设备调试踩坑记
  8. 511遇见易语言列表框去重复项目到列表框
  9. mybatis源码详解
  10. SVN客户端详细说明