在三维空间中表示平面和直线-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

平面和直线是三维计算机视觉和计算机图形中有用的几何实体。将它们表示为一组点是低效的,这可能会导致大量内存需求,具体取决于用于生成点的步长。

在本文中,我将讨论如何使用向量方程来表示平面和直线。我还将向您展示如何使用向量形式找到直线和平面之间的交点。

3D线条

我们可以使用下面的等式[1]以向量形式表示直线。

p=1₀ + l**d,**d∈ R

式中,I是表示直线方向的向量,l₀ 是直线上的点,d是标量。

P是直线上的一般点,它定义了直线。因此,为了定义一条线,我们只需要知道6个数字/参数,然后我们就可以完全用矢量形式表达它。

我创建了一个类来表示线向量并绘制它。它由一个向量和一个point_on_line参数化,这两个向量都是3x1numpy列向量。

为了在一条线上得到一个点,我们可以使用这个方程。通过缩放矢量来更改d。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

我将展示一些示例线。

矢量(1,1,1)点(0,0,0);

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

如果你想要一条横过二维平面的线,你可以使用一个在两个坐标中只有非零值的向量,你会在二维平面上得到一条线。矢量(1,1,0)点(0,0,0):

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

3D平面

我们可以用下面的等式来表示矢量形式的平面。

(p-p₀) * n=0,其中n是平面的法向(垂直)矢量,p₀ 是平面上的点。

上述方程中所有点p的轨迹定义了平面。(p-**p₀) * * n表示平面的正交向量或法向量。因此,对于平面上所有点p的矢量,两个正交矢量的点积将为零。

用六个数字表示一架飞机是非常优雅的!

下面是上面在Python中定义的平面类。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

接下来,让我们看看如何找到直线和平面的交点。

三维中点与平面的交点

现在我们知道了如何在3D中表示点和平面,我们可以看到如何找到这两个几何图形之间的交点。

如果一条线在点p处与平面相交,它将同时满足直线和平面方程。因此,为了找到交点,将p的值从线姓方程代入平面方程。

((**l)₀ + l***d)-p₀) * n=0

展开这些项可得出以下等式。

(l*n)d+(l₀ — p₀) * n=0

求解d得到:

d=(p₀ — 我的意思是₀) * n/(l*n)

这将我们返回到位于直线和平面上的点。

有三种情况。

首先,直线与平面平行,但直线不在平面内。

接下来是一个交点。

最后,直线与平面平行且在平面内,在这种情况下,直线上的每个点也将在平面内。因此,在这种情况下,将有无限多的点同时满足这两个方程。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

对于前两种情况,l*n=0,因为对于它们,I垂直于法向量n。否则,我们将得到一个实数d,它可以在线姓方程中替换以获得交点:

p=1₀ + l*d

我已经为平面和直线类编写了一个函数,以根据上述等式计算交点。请注意,函数是相同的等式,唯一的区别是代码语法。类别行:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

现在,我们可以使用平面和直线类来找到它们之间的交点。例如:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

我们可以使用Symphy验证结果:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

我们还使用Symphy实现来验证我们的代码。

<img src="http

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 在三维空间中表示平面和直线-600学习网