很多资料上提供的两直线相交求点问题一般都是基于二维空间的,而且是直接使用坐标系进行求解。实际上知道二维空间中的求法(使用坐标系进行求解的),要想从中推导到三维空间中的求法是不容易的。在进行几何问题求解时,除了使用坐标系求解问题外,使用向量求解问题也许更容易。向量空间是隐藏坐标系的,使用向量空间求解几何问题比使用坐标系求解问题更好的是,它将问题的解法提升到了一个宏观的高度,并且有了基于向量空间的解法,那么可以把这个解法直接延伸到n维都很容易。

假设有两直线l1和l2,它们的参数方程如下所示:(向量v1,v2均为单位向量)

l1: P1 = R1 + t1v1;
l2: P2 = R2 + t2v2.

两直线平行、异面和相交的判断方法

平行:v1×v2 = 0

异面:(R2-R1, v1, v2) ≠ 0;

相交:(R2-R1, v1, v2) = 0且v1×v2 ≠ 0

若相交,那么需要求出两直线的交点。如下图所示:

两直线交点为P,|R1P| = t1,|R2P| = t2。根据三角形正弦定理,△R1R2P中,t1/sinθ1 = t2/sinθ2 = |R1R2|/sinθ3,要求交点,可先求得t1或t2,t1,t2的值可通过正弦定理求得。两向量夹角的正弦值是隐藏在向量外积的长度上的,如上图所示,θ3是向量v1,v2的夹角,则|v1×v2| = sinθ3。

可立方程:(R1-R2)×v2 = t1(v2×v1),因为|(R1-R2)×v2| = |R1R2|sinθ1。可求得:t1 = (R1-R2)×v2/(v2×v1),同理,可求得t2 = (R2-R1)×v1/(v1×v2),将t1代入l1方程即可得到交点P,或将t2代入l2方程也可得到交点P,两者只需求其一。

但是在计算机中,由于同一直线,它的参数方程可有多种描述(起点可选不同的点,或者单位方向向量可不同),参数t可为正值也可为负值。所以需要将对两直线相交的情况分为四种,上述是第一种情况,第二种是只需对l1做反向延长线进行求交,第三种是只需对l2做反向延长线进行求交,第四种是需要对l1和l2均做反向延长线进行求交。

第二种情况和第三种情况可视为同一种情况,这里只对第三种情况进行分析。第三种情况如下图所示:

则相对第一种情况,在这种情况下,t1' = t1 = (R1-R2)×v2/(v2×v1), t2' = t2 = (R2-R1)×v1/(v1×v2),只不过t1‘的值为正值,t2’的值为负值。

第三种情况如下图所示:

则相对第一种情况,在这种情况下,t1'‘ = t1 = (R1-R2)×v2/(v2×v1), t2'’ = t2 = (R2-R1)×v1/(v1×v2),只不过t1''和t2''的值均为负值。

综上四种情况,t1和t2的求解公式都是一样的,即t1 = (R1-R2)×v2/(v2×v1),t2 = (R2-R1)×v1/(v1×v2)。

三维空间中的两直线相交相关推荐

  1. 判断平面上两直线相交

    直线相交 首先引出计算几何学中一个最基本的问题:如何判断向量在的顺时针方向还是逆时针方向? 把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2).向量的叉积(cross produc ...

  2. cad两直线相交画圆弧_CAD两直线,如何用圆弧连接?

    回答: CAD圆弧连接.连续圆弧怎么画 使用CIRCLE命令绘制圆时,默认的画圆方法是指定圆心和半径,此外,还可通过两点或三点来画圆.CIRCLE命令也可用来绘制过渡圆弧,方法是先画出与已有对象相切的 ...

  3. cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?

    回答: CAD圆弧连接.连续圆弧怎么画 使用CIRCLE命令绘制圆时,默认的画圆方法是指定圆心和半径,此外,还可通过两点或三点来画圆.CIRCLE命令也可用来绘制过渡圆弧,方法是先画出与已有对象相切的 ...

  4. 【POJ 1269】判断两直线相交

    题 利用叉积解方程 #include <cstdio> #define MAX 1<<31 #define dd double int xmult(dd x1,dd y1,dd ...

  5. 三维空间中的圆与三角形(二):圆与外切三角形

    圆的参数方程(字母所代表含义可参见[第六回]OCCT之Package Geom的曲线曲面参数方程解析): P(U) = O + R*Cos(U)*XDir + R*Sin(U)*YDir 已知△ABC ...

  6. 向量叉乘求三维空间中两直线(或线段)的交点

    1.2D空间的直线相交 在二维空间中,利用两个直线方程y = kx + b我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘求出直线交点. ...

  7. 三维空间中两直线交点

    文章目录 一.原理概述 二.实现代码 三.实现效果 一.原理概述 为了获取三维空间中的两条相交直线,这里我们采用点向式来表示直线,通过两个点和其法向量来创造直线相交情况,具体操作如下: (1)确定轴向 ...

  8. CAD中如何快速找到两直线交点?

    CAD是在很多行业都是必备的绘图软件,那么CAD中如何快速找到两直线交点?在CAD制图过程中,想要找出两直线交点该如何操作呢? 1.首先打开CAD制图工具迅捷CAD编辑器专业版,标准版同样也可以进行操 ...

  9. 求两直线交点程序 C

    const   double   EPS                 =   1e-5;           //   计算精度  const   int   CROSS             ...

最新文章

  1. [UE4]射击和直线追踪
  2. matplotlib包的学习(一)
  3. 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
  4. PyTorch基础(part8)--LSTM
  5. markdown改字体和背景颜色(html)
  6. 自学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?
  7. PHP 大文件下载(方式3 支持断点续传)
  8. colab 挂载谷歌云盘
  9. 阵列信号处理——研究背景与现状
  10. 2021南航计算机专硕上岸经验贴
  11. 模糊控制洗衣机c语言程序,模糊控制洗衣机
  12. ppt快速美化四步法
  13. 转:一个硕士应届生的面试总结.(很精彩,特别是具体的各公司面试信息)
  14. 城南花未开,老程已不在;
  15. 哈尔滨工业大学2022计算机系统大作业
  16. sql server从插入数据到用游标操作数据库(2/3部分)--用心造
  17. XXL-Job 适配 Postgre 数据库的完整流程
  18. cpu性能评测(i5-4460,i5-4400,i5-3470,i5-2400s,i3-3220T,G860)
  19. 安装Linux引导windows双系统,不出现引导界面
  20. 7-10 集合相似度 (25分)

热门文章

  1. nginx正向代理与反向代理的配置
  2. 引进RFID仓库管理系统解决方案,究竟能给企业仓库管理带来什么优势呢-新导智能
  3. 产品PM和项目PM到底有啥区别?本文告诉你
  4. OpenGL核心模式详细讲解[结合LearnOpenGL]
  5. 动态时间规整matlab和python代码
  6. 诚意分享:2021年是意义非凡的一年
  7. 22个常用Excel函数大全,直接套用,提升工作效率!
  8. 南林蓝桥杯计算机大赛,我院计算机系在2019年第十届蓝桥杯大赛(省赛)中获得5项一等奖...
  9. 蒋鑫鹏:百度搜索算法总结—关键词分词算法
  10. python列表的嵌套_Python-嵌套列表list的全面解析