欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

话题:给出2个平面方程,求解交线方程
A 1 x + B 1 y + C 1 z + D 1 = 0 A_1x+B_1y+C_1z+D_1=0 A1x+B1y+C1z+D1=0

A 2 x + B 2 y + C 2 z + D 2 = 0 A_2x+B_2y+C_2z+D_2=0 A2x+B2y+C2z+D2=0

基本思路

一条直线可以用以下形式表示
P = O + t ⋅ D P=O+t·D P=O+tD

O 为 直 线 上 一 点 , D 为 方 向 向 量 O为直线上一点,D为方向向量 O线D


对于两个平面,只要确定D和O就可以确定这条交线。

就可以将问题分解成两个子问题:

  1. 求解直线方向向量
  2. 求解交线上一点

求解直线方向向量


交线肯定在平面1和平面2上,所以跟平面1,平面2的法线都垂直。
只需要将N1,N2 作叉乘即可求出交线方向。
当N1, N2平行时,按照无交线处理

求解交线上一点

在上述条件有交线的情况下,求解交线上一点。
可设z=0, 得到2条方程
A 1 x + B 1 y + D 1 = 0 A_1x+B_1y+D_1=0 A1x+B1y+D1=0

A 2 x + B 2 y + D 2 = 0 A_2x+B_2y+D_2=0 A2x+B2y+D2=0

解出上述x, y即可得到一点。

特殊情况
当遇到z=?, x=?, y=? 特殊平面方程时,要换0坐标轴。
可使x=0或y=0。

总结

通过以上两步解出交线上一点O和直线方向后D。
直线方程为 P=O+t·D。


本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐