射线与平面的相交检测(Ray-Plane intersection test)

简介:

射线的定义

在欧几里德几何中,射线的定义是:直线上一点和它一旁的部分。由此可知,射线有两个性质,一是只有一个端点,二是一端无限延伸。

射线的参数方程

2011021710145872.png

其中p0是射线的起点, u是射线的方向向量,t >= 0,根据t的取值不同,可得射线上不同的点,所有这些点便构成了整个射线,如图o_ray.JPG

平面的定义

平面可以由法向量和平面内的一点来确定,因为过一点,有且只有一个平面与已知直线垂直

o_plane.JPG

平面的参数方程

2011021710173028.png

其中n是平面的法向量,p0是已知的平面内一点,符号表示 点积,因n与平面垂直,所以n与平面内任意直线垂直, 而(p-p0)则是平面内的一个向量,所以n (p-p0)垂直,而互相垂直的向量其点积为0,见下图

o_plane1.JPG

 

向量的点积公式
2011021710002942.png

 射线与平面的交点 

有了射线和平面的参数方程,那么求二者的交点相当于解下面的方程组

2011021709542781.png

注意这里两个方程中的p0是不同的,为区别彼此,将平面方程中的p0改为p1,并将射线方程代入平面方程,整理得到

2011021709544283.png

若t >= 0, 则射线与平面相交,且交点为p0 + tu,若t < 0,则不相交。(注意这里,n不可约去,因为做的是点积,而不是普通乘法)  



本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/archive/2009/10/17/1585281.html,如需转载请自行联系原作者

相关文章
|
4月前
|
存储 Kubernetes 调度
数据平面(Data Plane)
数据平面(Data Plane)和控制平面(Control Plane)是Kubernetes集群中的两个重要概念。它们分别负责处理集群中的数据和控制信息,共同实现对容器化应用的高效管理。
76 1
|
4月前
[Halcon&几何] 线段中点、端点和角度的计算
[Halcon&几何] 线段中点、端点和角度的计算
53 0
|
9月前
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
ENVI Classic:如何进行图像融合(HSV变换/Brovey变换/PC变换)?
573 0
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
219 0
三维旋转详细解读(Rodrigues‘ Roatation Formula 罗德里格旋转公式)
|
10月前
|
人工智能 数据可视化
跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算
跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算
711 1
|
算法 异构计算 Python
【Python】向量叉积和凸包 | 引射线法 | 判断点是否在多边形内部 | 葛立恒扫描法 | Cross Product and Convex Hul
这个系列似乎反响不错, 所以我继续水下去 (bushi)。本篇博客是关于经典的 Cross Product and Convex Hull (向量叉积和凸包)的,我们将介绍引射线法,葛立恒扫描法。在讲解之前我会对前置知识做一个简单的介绍,比如向量叉积,如何确定直线是在顺时针上还是逆时针上等。算法讲解部分是为后面练习题做准备的,比如如何判断内点是否在多边形内,如何计算多边形面积等,还将简单介绍一下葛立恒扫描法,在提供的练习题中就能碰到.
643 0
【Python】向量叉积和凸包 | 引射线法 | 判断点是否在多边形内部 | 葛立恒扫描法 | Cross Product and Convex Hul
|
机器学习/深度学习
平面上有 n n个坐标相异的点,请问当中有多少组非共线的三个点,这三个点的 外心 也在这 nn 个点之中?
有一个正整数 nn 代表平面上的点数。 接下来有 nn 行,当中的第 ii 行包含两个整数 x_i, y_i,xi​,yi​ 代表第 i 个点的坐标是 (x_i, y_i)(xi​,yi​)。
84 0
ROS TF2当前坐标系如何计算其它历史坐标系的坐标变换
ROS TF2当前坐标系如何计算其它历史坐标系的坐标变换
ROS TF2当前坐标系如何计算其它历史坐标系的坐标变换
|
图形学
Unity【Bounds & Vector3 Cross】- 如何判断一个物体是否在一个凸边体三维区域内
Unity【Bounds & Vector3 Cross】- 如何判断一个物体是否在一个凸边体三维区域内
367 0
Unity【Bounds & Vector3 Cross】- 如何判断一个物体是否在一个凸边体三维区域内
|
图形学
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用
331 1
Unity【RaycastHit】- 关于射线投射碰撞信息中normal法线向量的运用