1.空间中平面方程的一般形式为:

Ax+By+Cz+D=0 (参数,A,B,C,D是描述平面空间特征的常数)

已知空间中3个点的坐标(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),求解平面方程。

解法1.根据已知的3个点,建立3个联合方程组,进行消元;
2.根据克莱姆法则,

求解的结果中,(A,B,C)表示平面的法向量。下面给出OpenCV中具体代码实现:

//根据3个点,计算空间平面的方程
//Ax+By+Cz+D=0
//输入参数:point3fArray---空间中3个点的坐标,大小为3;输入点>3时,只取前3个点
//输出参数A,B,C,D
//返回值:true---计算成功;false----计算失败
bool GetPanelEquation(vector<cv::Point3f> &point3fArray, float &A, float &B, float &C, float &D)
{if( point3fArray.size() <3 ){cerr<<"GetPanelEquation(...)函数中输入点的数量小于3."<<endl;return false;}A = point3fArray[0].y*(point3fArray[1].z-point3fArray[2].z) +point3fArray[1].y*(point3fArray[2].z-point3fArray[0].z) +point3fArray[2].y*(point3fArray[0].z-point3fArray[1].z);B = point3fArray[0].z*(point3fArray[1].x-point3fArray[2].x) +point3fArray[1].z*(point3fArray[2].x-point3fArray[0].x) +point3fArray[2].z*(point3fArray[0].x-point3fArray[1].x);C = point3fArray[0].x*(point3fArray[1].y-point3fArray[2].y) +point3fArray[1].x*(point3fArray[2].y-point3fArray[0].y) +point3fArray[2].x*(point3fArray[0].y-point3fArray[1].y);D = -point3fArray[0].x*(point3fArray[1].y*point3fArray[2].z - point3fArray[2].y*point3fArray[1].z) -point3fArray[1].x*(point3fArray[2].y*point3fArray[0].z - point3fArray[0].y*point3fArray[2].z) -point3fArray[2].x*(point3fArray[0].y*point3fArray[1].z - point3fArray[1].y*point3fArray[0].z);return true;//    //以下方式计算结果和上面一致
//    float a,b,c,d;
//    a = (point3fArray[1].y - point3fArray[0].y)*(point3fArray[2].z - point3fArray[0].z) -
//        (point3fArray[1].z - point3fArray[0].z)*(point3fArray[2].y - point3fArray[0].y);
//
//    b = (point3fArray[1].z - point3fArray[0].z)*(point3fArray[2].x - point3fArray[0].x) -
//        (point3fArray[1].x - point3fArray[0].x)*(point3fArray[2].z - point3fArray[0].z);
//
//    c = (point3fArray[1].x - point3fArray[0].x)*(point3fArray[2].y - point3fArray[0].y) -
//        (point3fArray[1].y - point3fArray[0].y)*(point3fArray[2].x - point3fArray[0].x);
//
//    d = 0 - (a * point3fArray[0].x + b*point3fArray[0].y + c*point3fArray[0].z);
//
//
//    return true;
}

2.计算空间点到空间平面距离

float point2panelDistance(cv::Point3f &pt, float A, float B, float C, float D)
{float distance = -10000;float temp = sqrt(A * A + B * B + C * C);if( temp <= 0.001){cerr<<"point2panelDistance(...)函数中,平面方程参数A,B,C为0."<<endl;return distance;}distance = 1.0*abs(A*pt.x+B*pt.y+C*pt.z+D) / temp;return distance;
}

空间中平面方程求解及点到平面的距离相关推荐

  1. 3D点云处理:平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点

    文章目录 1. 平面度 2. 平行度 3. 两平面之间的夹角 4. 点到平面的投影 5. 代码实现--平面度|平行度(增加精度的平行度优化)|平面之间的夹角|点到平面的投影点 1. 平面度 根据最新I ...

  2. 搬运——证明线性空间中,平面方程的系数就是平面的法向量

    最近,有所疑惑,网上查找,找到有一个相关回答,所以此处记录. 找自:https://zhidao.baidu.com/question/461037831369263405.html 变换方程为一般式 ...

  3. 空间平面方程 java,空间平面及其方程

    <空间平面及其方程>由会员分享,可在线阅读,更多相关<空间平面及其方程(16页珍藏版)>请在人人文库网上搜索. 1.一.平面的点法式方程,二.平面的一般方程,平面及其方程,一. ...

  4. 空间平面方程 java,空间平面方程

    <空间平面方程>由会员分享,可在线阅读,更多相关<空间平面方程(13页珍藏版)>请在人人文库网上搜索. 1.一.平面的确定条件,返回,下一页,上一页,空间平面方程,三.平面的一 ...

  5. pcl求平面法向量_线性代数6——平面方程与矩阵

    线性方程的几何意义 二元线性方程 该方程是一个二元线性方程组,包含两个方程,每个方程是一条直线,两条直线的交点就是该方程有唯一解,这就是二元线性方程的几何意义. 平面方程 空间内不在同一直线上的三点构 ...

  6. Cloudcompare 点到平面的距离以及点到平面的投影点

    Cloudcompare 点到平面的距离以及投影点坐标 引言 一.软件操作 二.源码解读 2.1 准备工作 2.2 计算距离 2.3 投影点坐标 引言 对比两组点云的相似度,一般都是使用距离来量化重合 ...

  7. 2. 计算点到平面的投影

    参考 https://www.cnblogs.com/nobodyzhou/p/6145030.html 2. 计算投影点 所以用各种平面提取算法后,得到的平面方程, 注意此处的平面方程abcd已经是 ...

  8. 高维空间中椭圆的基本方程

    二维空间下椭圆基本方程为                                                  (1) 这个是我们大家都熟知的,但是,如果背景空间不是二维空间,而是N维欧式 ...

  9. 三维向量的简单运算(点积、叉积及点到直线的距离)

    三维向量的点积(Dot Product) 点乘比较简单,是相应元素的乘积的和:    V1( x1, y1, z1)·V2(x2, y2, z2) = x1*x2 + y1*y2 + z1*z2; 注 ...

最新文章

  1. KRIA SOM,赛灵思自适应计算最近一发“王炸”!
  2. block引用外部变量原理
  3. LeetCode:Minimum Depth of Binary Tree,Maximum Depth of Binary Tree
  4. SalesOrder Text determination
  5. mysql plsql cursor_Oracle--plsql游标创建和使用
  6. 将Ubuntu安装到U盘
  7. 2017-10-08 前端日报
  8. IIS Express 启用目录浏览
  9. zend新建php文件夹,php - 对于Zend的项目模块基于一步一步转化成文件夹结构 - SO中文参考 - www.soinside.com...
  10. Python编程学习笔记:列表
  11. php执行postgresql中的函数,4.3. 调用函数 - [ PostgreSQL 手册 ] - 在线原生手册 - php中文网...
  12. 【技巧】谷歌Chrome浏览器清理缓存的两种方式
  13. 磁珠的原理与应用注意事项
  14. 一条对“失控的腾讯帝国:企鹅无法把控手机市场”的评论
  15. 【量化交易】 量化因子 情绪类因子计算
  16. python贺卡编程_一种卡片编程机及其编程方法与流程
  17. uniapp 获取网络状态_uni-app 获取网络状态
  18. iPhone 15 高端版本万元起步;华为授权 OPPO 使用其 5G 技术;DeepMind 推出 AI 编剧|极客头条
  19. Cobbler自动化部署
  20. cms php 带商城系统下载,开源免费PHP商城CMS系统集合

热门文章

  1. phpmoadmin 远程代码执行 (CVE-2015-2208)
  2. 铸造工艺问题2——倾斜浇注高度,好处,注意事项?什么是大孔出流理论?灰铸铁有一定的自补缩能力,为什么还要设置冒口?什么是孕育处理?
  3. 精易模块中普通填表初始化失败的解决方案
  4. ForkJoin原理
  5. 学生书桌护眼灯哪个牌子好?光照不刺眼的智能护眼台灯
  6. 什么品牌的护眼台灯比较好?推荐四款品质好的护眼台灯
  7. ifttt山寨火速出炉:如果云、如果就
  8. 二叉树练习题(一) 二叉树的遍历
  9. 旺财和小强的三生三世
  10. rk3368 开机内核启动不了