求平面方程的几种方法_平面及其方程

求平面方程的几种方法_平面及其方程假设在三维世界中存在一个平面,如图  一个平面可以通过如下表达式表达                      (1)其中,(x,y,z)是在该平面上上的点的3D坐标。(A,B,C)能够构成该平面的一个法向量n。 那么,怎么通过一堆离散的点来求解这个平面呢?首先我们可以简单的用一个平面的法向量来表征一个平面。 方法1:假设在某个平面中存在着三个坐标点分别…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

假设在三维世界中存在一个平面,如图

  求平面方程的几种方法_平面及其方程

一个平面可以通过如下表达式表达

求平面方程的几种方法_平面及其方程                                            (1)

其中,(x,y,z)是在该平面上上的点的3D坐标。(A,B,C)能够构成该平面的一个法向量n。

 

那么,怎么通过一堆离散的点来求解这个平面呢?首先我们可以简单的用一个平面的法向量来表征一个平面。

 

方法1:

假设在某个平面中存在着三个坐标点分别是M1(x1,y1,z1),M2(x2,y2,z2),M2(x2,y2,z2),那么我们可以得到该平面上的两个向量

   M1M2=M2-M1

   M1M3=M3-M1

那么,我们需要求解的平面是不是就和这两个向量都平行呢?当然平行!换而言之,这两个向量所构成的平面就是我们所求解的平面。所以我们所求平面的法向量也就必定和这两个向量所构成的平面垂直。最后,也就是说法线必定与上述两个向量垂直。

根据叉积的定义(https://baike.baidu.com/item/%E5%90%91%E9%87%8F%E7%A7%AF/4601007?fr=aladdin&fromid=2812058&fromtitle=%E5%8F%89%E7%A7%AF),我们可以找到和上述两个向量都垂直的向量

   n= M1M2 x M1M3

最终,我们通过平面中的3个点求解出来平面的法向量来表征该平面。

 

方法2:

方法1比较简单,利用高中的几何知识就可以轻易解决,那么大家有没有想过一个问题:在实际情况中,我们得到的某个平面的点集可能是存在一定的误差的,换而言之,某一些点虽然被归为某一个平面,但是由于测量误差的存在,它们可能是在三维坐标系中的位置是高于或者低于我们所求平面的。所以,当我们从中选取3个点去求解平面的时候就会存在比较明显的误差。所以,要是能够充分利用所有测量到的平面中的点的信息,则会增加我们的估计精度。

假如我们有N个点,这N个点都是基本满足公式(1),虽然存在一些误差。那么,它们应该基本满足下面的公式:

 求平面方程的几种方法_平面及其方程

针对上述问题,我们可以将它归为一个最小二乘问题:

 求平面方程的几种方法_平面及其方程

这是一个AX=0的线性欠定方程。在假设法线模为1的前提下,忽略对D的求解,我们可以对左边矩阵进行SVD分解,得到在未知向量模为1下的解。最终实现对平面法线的求解,当然这是一个近似解啦~

 

方法3

那么问题来了,要是这一对点中有少数特别离谱的点怎么办?这肯定会影响我们的求解精度啊!其实也简单,用RANSAC方法(https://en.wikipedia.org/wiki/Random_sample_consensus就可以啦!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234078.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Spring JpaTransactionManager事务管理

    Spring JpaTransactionManager事务管理    首先,在做关于JpaTransactionManager之前,先对Jpa做一个简单的了解,他毕竟不如hibernate那么热门,其实二者很相识,只不过后期hibernate和JDO版本都已经兼容了其Jpa,目前大家用的少了。   JPA全称JavaPersistenceAPI.JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化…

    2022年10月26日
  • IIC总线协议详解[通俗易懂]

    转自:https://www.cnblogs.com/aaronLinux/p/6218660.html1 I2C总线物理拓扑结构     I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻…

  • ubuntu11.04发售啦

    ubuntu11.04发售啦

  • phpstorm激活码永久[最新免费获取]2022.02.11「建议收藏」

    (phpstorm激活码永久)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html4K…

  • spring的事务隔离级别「建议收藏」

    spring的事务隔离级别「建议收藏」spring的事务隔离级别

  • 深度相机(一)–TOF总结

    深度相机(一)–TOF总结1.1TOF初探TOF是Timeofflight的简写,直译为飞行时间的意思。所谓飞行时间法3D成像,是通过给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲的飞行(往返)时间来得到目标物距离。这种技术跟3D激光传感器原理基本类似,只不过3D激光传感器是逐点扫描,而TOF相机则是同时得到整幅图像的深度信息。TOF相机与普通机器视觉成像过程也有类似之处,都是由光源

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号