查看“︁线面交点”︁的源代码
←
线面交点
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{unreferenced|time=2015-12-05T03:55:25+00:00}} [[File:Plane-line_intersection.svg|right|thumb|350x350px|线面交点的三种情况:<br> 1. 没有交点;<br> 2. 有且只有一个交点;<br> 3. 有无数个交点。]] 在[[解析几何]]中, 一条[[直线]]与一个[[平面 (数学)|平面]]的交点可能是[[空集]]、一个[[点]]或一条直线。在计算机图形学、运动规划和碰撞检测中,经常需要分析相交类型,以及计算出点坐标或线的方程。 ==代数形式== 空间中一个平面可以表示为点 <math>\mathbf{p}</math> 的集合 :<math>(\mathbf{p}-\mathbf{p_0})\cdot\mathbf{n} = 0</math> 其中 <math>\mathbf{n}</math> 是该平面的[[法线]],<math>\mathbf{p_0}</math>是平面上任意一点。(<math>\mathbf{a}\cdot\mathbf{b}</math>表示[[向量]] <math>\mathbf{a}</math> 和 <math>\mathbf{b}</math> 的[[数量积]]) 而直线可表示为 :<math>\mathbf{p} = d\mathbf{l} + \mathbf{l_0} \quad d\in\mathbb{R}</math> 其中 <math>\mathbf{l}</math>是该直线的方向向量,<math>\mathbf{l_0}</math>是直线上任意一点,<math>d</math>是[[实数]]范围内的标量。将直线方程代入平面方程得 :<math>(d \mathbf{l} + \mathbf{l_0} - \mathbf{p_0})\cdot\mathbf{n} = 0</math> 展开得 :<math>d \mathbf{l}\cdot\mathbf{n} + (\mathbf{l_0}-\mathbf{p_0})\cdot\mathbf{n} = 0</math> 解得 <math>d</math> :<math>d = {(\mathbf{p_0}-\mathbf{l_0})\cdot\mathbf{n} \over \mathbf{l}\cdot\mathbf{n}}.</math> 若 <math>\mathbf{l}\cdot\mathbf{n} = 0</math>,则直线与平面平行。此时,如果(<math>\mathbf{p_0}-\mathbf{l_0})\cdot\mathbf{n} =0</math>,则该直线在平面内,即直线上所有的点都是交点。否则,直线与平面没有交点。 若 <math>\mathbf{l}\cdot\mathbf{n} \ne 0</math>,则直线与平面有且只有一个交点。解得 <math>d</math>,则交点的坐标为 :<math>d\mathbf{l} + \mathbf{l_0}</math>. ==参数形式== [[Image:Line plane.svg|thumb|300px|right|直线与平面的交点]] 空间中一条直线可以用一个点和一个给定的方向来描述。则一条直线可以表示为如下点的集合 :<math>\mathbf{l}_a + (\mathbf{l}_b - \mathbf{l}_a)t, \quad t\in \mathbb{R}</math> 其中 <math>\mathbf{l}_a=(x_a, y_a, z_a)</math> 和 <math>\mathbf{l}_b=(x_b, y_b, z_b)</math> 是直线上两个不同的点。 相似地,一个平面可以表示为如下点的集合 :<math>\mathbf{p}_0 + (\mathbf{p}_1-\mathbf{p}_0)u + (\mathbf{p}_2-\mathbf{p}_0)v, \quad u,v\in\mathbb{R}</math> 其中 <math>\mathbf{p}_k=(x_k,y_k,z_k)</math>,<math>k=0,1,2</math> 是平面上不共线的三个点。 直线和平面的交点可以表示为将直线上的点代入平面方程内,则参数方程如下: :<math>\mathbf{l}_a + (\mathbf{l}_b - \mathbf{l}_a)t = \mathbf{p}_0 + (\mathbf{p}_1-\mathbf{p}_0)u + (\mathbf{p}_2-\mathbf{p}_0)v</math> 即 :<math>\mathbf{l}_a - \mathbf{p}_0 = (\mathbf{l}_a - \mathbf{l}_b)t + (\mathbf{p}_1-\mathbf{p}_0)u + (\mathbf{p}_2-\mathbf{p}_0)v,</math> 用[[矩阵]]表示为 :<math> \begin{bmatrix} x_a - x_0 \\ y_a - y_0 \\ z_a - z_0 \end{bmatrix} = \begin{bmatrix} x_a - x_b & x_1 - x_0 & x_2 - x_0 \\ y_a - y_b & y_1 - y_0 & y_2 - y_0 \\ z_a - z_b & z_1 - z_0 & z_2 - z_0 \end{bmatrix} \begin{bmatrix} t \\ u \\ v \end{bmatrix} </math> 可得点的坐标为 :<math>\mathbf{l}_a + (\mathbf{l}_b - \mathbf{l}_a)t</math> 若直线与平面平行或在平面内,那么向量 <math>\mathbf{l}_b - \mathbf{l}_a</math>,<math>\mathbf{p}_1-\mathbf{p}_0</math> 及 <math>\mathbf{p}_2-\mathbf{p}_0</math>是[[线性无关|线性独立]]的,且矩阵为奇异矩阵。 若满足 <math>t \in [0,1]</math>,则交点在直线上 <math>\mathbf{l}_a</math> 与 <math>\mathbf{l}_b</math> 之间。 若满足 :<math>u,v \in [0,1], \;\;\; (u+v) \leq 1,</math> 则交点位于平面上 <math>\mathbf{p}_0</math>,<math>\mathbf{p}_1</math> 及 <math>\mathbf{p}_2</math>所构成的三角形中。 该问题可用矩阵的形式表示解答: :<math> \begin{bmatrix} t \\ u \\ v \end{bmatrix} = \begin{bmatrix} x_a - x_b & x_1 - x_0 & x_2 - x_0 \\ y_a - y_b & y_1 - y_0 & y_2 - y_0 \\ z_a - z_b & z_1 - z_0 & z_2 - z_0 \end{bmatrix}^{-1} \begin{bmatrix} x_a - x_0 \\ y_a - y_0 \\ z_a - z_0 \end{bmatrix}.</math> ==应用== 在[[计算机图形学]]中的[[光线追踪]]算法中,一个面可以被表示为几个平面的集合。一个面的图像可以用光线与每个面的交点表达。在基于视觉的三维重建中(计算机视觉的一个子场),深度通常是由“三角测量法”测算的。 == 外部链接 == * [http://geomalgorithms.com/a05-_intersect-1.html Intersections of Lines, Segments and Planes (2D & 3D) from GeomAlgorithms.com] {{Wayback|url=http://geomalgorithms.com/a05-_intersect-1.html |date=20210428000731 }} [[Category:计算物理学]] [[Category:欧几里得几何]]
该页面使用的模板:
Template:Unreferenced
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
线面交点
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息