直线的信息可以以两个端点的形式给出,也可以以一个直线上的点和直线的方向向量给出。本文中假设这两条直线不共线,即这两条直线既不重合也不相交。

1.如果这两条直线是以两个端点的形式给出,那么假设直线l0的两端点为:P0、P1;直线l1的两端点为Q0、Q1,;求两直线的最短距离?

直线l0我们可以用方程表示为:

(1)

直线段l1我们也可以用方程表示为:

  (2)

式中,P、Q分别表示两直线段上的点。

那么点P和点Q的距离为:

(3)

我们将(3)式等式两边平方得到:

     (4)

那么求解这两条空间直线段的最短距离就变成了一个求解最小二乘法的最小值问题了,即求解方程:

(5)

那么这个方程怎么求解呢?下面我们来求解(5)式:由式(1)和式(2)我们有:

(6)

将(6)式带入(5)式有:

   (7)

那么就变为求解超静定方程:     (8)

我们将(8)式变形得到求解超静定方程:

 (9)

令A=(P0-P1,Q0-Q1),x=(a,-n)T,b=Q1-P1;则式(9)变为:

 (10)

两边同时乘以矩阵A的装置得到:

      (11)

则x可以求解得到:

  (12)

求解得到a和n之后带入式(6)就可以求解得到点P和点Q了,然后代入式(3)就可以求解得到最小距离了。

2.如果这两条直线是以直线上的点和该直线的方向向量给出,那么假设直线l0上有一点P0,它的方向向量为n;直线l1上有一点Q0,它的方向向量为m;那么直线l0上的点可以表示为:

(13)

直线l1上的点可以表示为:

(14)

点P和点Q的距离为:

(15)

将式(13)和式(14)带入式(15)得到:

(16)

两边平方得到:

(17)

那么求解两条直线的最短距离,就变为了求解式(17)的最小二乘方程组,即:

 (18)

变形得到:

(19)

同理,令A=(n,m),x=(a,-b)T,b=Q0-P0,则(19)式变为:

(20)

同理求得x为:

(21)

求得a,b之后带入式(13)和式(14)就可以求得点P和点Q,根据式(15)就可以求得最短距离了。

空间两条直线的最短距离及最近点计算相关推荐

  1. 空间两条直线段的最短距离及最近点计算

    如果这两条直线段不共线,假设直线段l0的两端点为:P0.P1:直线段l1的两端点为Q0.Q1,:求两直线段的最短距离? 直线段l0我们可以用方程表示为:     (1) 直线段l1我们也可以用方程表示 ...

  2. 求空间两条直线之间的距离

    1. 前言 最近老板让写一段空间点匹配的代码, 其中涉及到求空间两直线之间的距离,写起来满费劲的, 这里做一个记录. 2. 处理思路 空间两直线之间的位置关系主要可以分为: 重合, 平行, 相交, 异 ...

  3. 两条直线的交点 c语言,计算两条直线的交点(C#)

    PS:从其他地方看到的源码是有问题的.下面是修正后的 /// /// 计算两条直线的交点 /// /// L1的点1坐标 /// L1的点2坐标 /// L2的点1坐标 /// L2的点2坐标 /// ...

  4. 求空间中两条直线的交点

    求空间中两条直线的交点 求交点坐标的问题完全可以用数学的方法求得结果的表达公式来解决啊 设P1(x1,y1,z1),P2(x2,y2,z2) L2:P3(x3,y3,z3),P4(x4,y4,z4) ...

  5. 两条线段相切弧_两条直线间的圆弧连接

    教学重点 两条直线间圆弧连接的步骤. 教学难点 如何确定连接圆弧的圆心. 学情分析 1 .对"圆弧连接"定义里 "光滑连接"的理解有些模糊. 2 .对作图时要求 ...

  6. 如何计算空间一条直线外一点到这条直线的垂足点坐标

    如何计算空间一条直线外一点到这条直线的垂足点坐标  示例代码: /计算空间一条直线外一点到这条直线的垂足点坐标. Point3f CoreAlgorithm::GetFootOfPerpendicul ...

  7. POJ1269:Intersecting Lines(判断两条直线的关系)

    题目:POJ1269 题意:给你两条直线的坐标,判断两条直线是否共线.平行.相交,若相交,求出交点. 思路:直线相交判断.如果相交求交点. 首先先判断是否共线,之后判断是否平行,如果都不是就直接求交点 ...

  8. visio2013画图时两条直线交叉 如何让它不弯曲

    visio2013画图时两条直线交叉时交叉处会自动弯曲,这样在画复杂的图时,显示效果会比较乱.如何让它不弯曲呢? 1.在最上面的工具栏中选择"设计" 2.右上角选择"选择 ...

  9. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

最新文章

  1. 从Elasticsearch来看分布式系统架构设计,真是666~
  2. print格式化输出,以及使用format控制
  3. python关于路径需使用的方法笔记
  4. (转)基于Metronic的Bootstrap开发框架经验总结(7)--数据的导入、导出及附件的查看处理...
  5. 点击流日志分析项目实战开发流程
  6. C++ std::set insert 失败 原因和解决方案 operator
  7. 电脑常用的十款工具软件
  8. 群晖DS220+ 应用小笔记
  9. 小字符喷码机和高解析喷码机的区别
  10. 计算机常见故障有那些,电脑有哪些常见故障?如何排除?
  11. 高中英语语法(005)-五大句型(下)
  12. SpringBoot2.x系列教程84--SpringBoot中整合日志功能
  13. 每日题解:LeetCode 718. 最长重复子数组
  14. Rasa 文档 中英文翻译版本 3 - Tutorial: Building Assistants
  15. 油价又双叒叕涨,司机教你如何开车更省油?
  16. Unity 数据存储与读取_JSON
  17. 100万算大钱还是小钱?
  18. 中兴笔试题目总结(四)软件工程部分
  19. C语言itoa()函数
  20. appium学习笔记

热门文章

  1. 全自动测试治具7寸触摸串口屏+电流读取+电压读取+称重模块
  2. 基础加强 -- 反射
  3. 流场可视化工程dlb-dynamicdr部署日志:阶段五:实验室服务器程序运行
  4. Xib文件使用(一)——xib文件解析
  5. HBase的Nonce实现分析
  6. jQuery(一)jQuery的认识和使用
  7. 我是如何把大象装进冰箱里的……
  8. speedoffice(Excel)怎么给文字加粗
  9. php+fastcgi+apache2+php-fpm配置
  10. mongodb建索引遇到的一个错误解决办法