三维空间中的两直线相交
很多资料上提供的两直线相交求点问题一般都是基于二维空间的,而且是直接使用坐标系进行求解。实际上知道二维空间中的求法(使用坐标系进行求解的),要想从中推导到三维空间中的求法是不容易的。在进行几何问题求解时,除了使用坐标系求解问题外,使用向量求解问题也许更容易。向量空间是隐藏坐标系的,使用向量空间求解几何问题比使用坐标系求解问题更好的是,它将问题的解法提升到了一个宏观的高度,并且有了基于向量空间的解法,那么可以把这个解法直接延伸到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)。
三维空间中的两直线相交相关推荐
- 判断平面上两直线相交
直线相交 首先引出计算几何学中一个最基本的问题:如何判断向量在的顺时针方向还是逆时针方向? 把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2).向量的叉积(cross produc ...
- cad两直线相交画圆弧_CAD两直线,如何用圆弧连接?
回答: CAD圆弧连接.连续圆弧怎么画 使用CIRCLE命令绘制圆时,默认的画圆方法是指定圆心和半径,此外,还可通过两点或三点来画圆.CIRCLE命令也可用来绘制过渡圆弧,方法是先画出与已有对象相切的 ...
- cad两直线相交画圆弧,CAD 两直线,怎么用圆弧连接?
回答: CAD圆弧连接.连续圆弧怎么画 使用CIRCLE命令绘制圆时,默认的画圆方法是指定圆心和半径,此外,还可通过两点或三点来画圆.CIRCLE命令也可用来绘制过渡圆弧,方法是先画出与已有对象相切的 ...
- 【POJ 1269】判断两直线相交
题 利用叉积解方程 #include <cstdio> #define MAX 1<<31 #define dd double int xmult(dd x1,dd y1,dd ...
- 三维空间中的圆与三角形(二):圆与外切三角形
圆的参数方程(字母所代表含义可参见[第六回]OCCT之Package Geom的曲线曲面参数方程解析): P(U) = O + R*Cos(U)*XDir + R*Sin(U)*YDir 已知△ABC ...
- 向量叉乘求三维空间中两直线(或线段)的交点
1.2D空间的直线相交 在二维空间中,利用两个直线方程y = kx + b我们可以直接计算出交点,但是这种方法麻烦了些,并且套用到三维空间用公式就更麻烦了,接下来介绍的是如何利用向量叉乘求出直线交点. ...
- 三维空间中两直线交点
文章目录 一.原理概述 二.实现代码 三.实现效果 一.原理概述 为了获取三维空间中的两条相交直线,这里我们采用点向式来表示直线,通过两个点和其法向量来创造直线相交情况,具体操作如下: (1)确定轴向 ...
- CAD中如何快速找到两直线交点?
CAD是在很多行业都是必备的绘图软件,那么CAD中如何快速找到两直线交点?在CAD制图过程中,想要找出两直线交点该如何操作呢? 1.首先打开CAD制图工具迅捷CAD编辑器专业版,标准版同样也可以进行操 ...
- 求两直线交点程序 C
const double EPS = 1e-5; // 计算精度 const int CROSS ...
最新文章
- [UE4]射击和直线追踪
- matplotlib包的学习(一)
- 【数据结构与算法】之深入解析“H指数II”的求解思路与算法示例
- PyTorch基础(part8)--LSTM
- markdown改字体和背景颜色(html)
- 自学python好找工作么-学完Python好找工作吗?为什么有人学完找不到工作?
- PHP 大文件下载(方式3 支持断点续传)
- colab 挂载谷歌云盘
- 阵列信号处理——研究背景与现状
- 2021南航计算机专硕上岸经验贴
- 模糊控制洗衣机c语言程序,模糊控制洗衣机
- ppt快速美化四步法
- 转:一个硕士应届生的面试总结.(很精彩,特别是具体的各公司面试信息)
- 城南花未开,老程已不在;
- 哈尔滨工业大学2022计算机系统大作业
- sql server从插入数据到用游标操作数据库(2/3部分)--用心造
- XXL-Job 适配 Postgre 数据库的完整流程
- cpu性能评测(i5-4460,i5-4400,i5-3470,i5-2400s,i3-3220T,G860)
- 安装Linux引导windows双系统,不出现引导界面
- 7-10 集合相似度 (25分)
热门文章
- nginx正向代理与反向代理的配置
- 引进RFID仓库管理系统解决方案,究竟能给企业仓库管理带来什么优势呢-新导智能
- 产品PM和项目PM到底有啥区别?本文告诉你
- OpenGL核心模式详细讲解[结合LearnOpenGL]
- 动态时间规整matlab和python代码
- 诚意分享:2021年是意义非凡的一年
- 22个常用Excel函数大全,直接套用,提升工作效率!
- 南林蓝桥杯计算机大赛,我院计算机系在2019年第十届蓝桥杯大赛(省赛)中获得5项一等奖...
- 蒋鑫鹏:百度搜索算法总结—关键词分词算法
- python列表的嵌套_Python-嵌套列表list的全面解析