几何向量(4):直线和平面

这一篇我们来看一下直线和平面在计算机中的数学表示,因为我们程序中不可能用笔和纸去画一个直线或者平面,我们只能通过函数或者向量组合表示这些抽象的概念,这样才能带入并实现具体的功能。

首先来看一下二维xy坐标轴下直线的表示,如下图:

image.png

一个二元一次方程就能表示直线在坐标系中所有坐标点的集合了,可以看作a*x+b*y+c = 0。


接下来的问题是如何表示一个空间xyz坐标系中的直线,如果平面坐标系中直线是a*x+b*y+c = 0,那么空间坐标系中难道不是


a*x + b*y + c*z + d = 0么?我们仔细思考一下,在二维坐标系中拓展出第三个维度z,那么c*z是一个动量,c*z的值是不断变化的,我们想一下,在一条直线AB上,一手握着端点A,一手握着端点B,双手往外拉动,不就是拓展出了一个跟老式打字机一样不断扫描的动点Z = c*z,那么不就是拉出一张“复印纸”么,这不就是一个平面(或者一个扭曲的曲面),反正不是一根三维空间中的直线。


接下来我们通过向量的形式来绘画一下空间直线,如下图:

image.png

我们求直线的动点P的坐标公式,就是求出了这条直线的表示,因为向量OP = OA + AP,我们已知AB两点的坐标(ps:我们至少得知道一条直线上的两个不同点的坐标,不然我们也没办法推出直线),这时候我们引入一个数值变量t(也就是上面推出的m*n)就能表示出这个直线了,p(???) = (x,y,z) + t(a-x,b-y,c-z),动点P的坐标就随着t数值的变化而变化。




下面我们同样来用数字描叙一下平面,上面我们随便猜想了一下a*x + b*y + c*z + d = 0表示一个平面或者曲面(暂时未推导所以未知),下面我们来绘画一个平面,如下图:


image.png

这里我来解释一下,首先我们要确定一个平面Ground(简称G),那么我们必须得先测量出G上的三个点ABC,或者说我们知道三个点ABC,求ABC组成的平面G,因为只有不共线的三点ABC才能确定一个平面,此时,我们确定了ABC三个坐标点,两两连接得到向量AB,AC,就能通过叉积求出法向量AN,当我们求出了法向量AN后,因为平面其实就是一个动点的所有坐标的集合,我们记为P(x,y,z)动点,那么平面G其实变成了求P(x,y,z)的集合了,这时候根据点积,因为AN为法向量,那么AN·AP = 0,此时建立公式计算就能得到u*x+v*y+w*z+(-ua-vb-wc) = 0,其中a,b,c为坐标A(a,b,c)已知,u,v,w为求出的法向量AN可以得出,这就推导出了平面的实际方程表示了。


我们简化为a*x + b*y + c*z + d = 0。


平面方程的实际应用呢,我们可以看出现在市面上的ARsdk几乎都有平面检测功能,实际上原理就是:


拍摄当前画面比如一张桌面,选取三个极值特征点,假设特征点为ABC,这样就能推导出桌面的平面方程,这时候我们不仅可以计算出桌面的法向量n,同时也可以根据a*x + b*y + c*z + d = 0计算出桌面上任意一个动点P(x,y,z),这时候我们随便放置一个模型在桌面上,根据动点P(x,y,z)和法向量n就能稳稳的“正立”在桌面上。

image.png

如上图,我们取到特征点ABC后(特征点选取算法暂时不讨论),得到平面方程,然后随意计算一个动点P(x,y,z),计算方法可以先假设x,y的值然后求z,然后根据法向量N就能把茶杯稳稳摆在平面G上


————————————————

版权声明:本文为CSDN博主「羊羊2035」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yinhun2012/article/details/79453948


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864