空间两个直线之间的距离和公垂线 您所在的位置:网站首页 异面直线的公垂线段怎么求 空间两个直线之间的距离和公垂线

空间两个直线之间的距离和公垂线

2024-07-15 11:18| 来源: 网络整理| 查看: 265

已知

直线1:直线任意一点 P 1 P_1 P1​直线方向 V 1 V_1 V1​ (单位向量) 直线2:直线任意一点 P 2 P_2 P2​直线方向 V 2 V_2 V2​ (单位向量) 在这里插入图片描述

求解过程

需要用到点到直线的距离和垂足相关内容,参考 这里 下文中 ⋅ \centerdot ⋅代表点乘 ∗ * ∗代表乘 × \times ×代表叉乘。 首先判断是否平行 V 1 = = V 2 V_1==V_2 V1​==V2​ (如果写程序需要注意误差)

如果平行 就利用点到直线的距离方法计算 P 1 P_1 P1​到直线2的距离就可以,公垂线有无数个,看你怎么定义了不平行 判断是否相交 ( V 1 × V 2 ) ⋅ ( P 2 − P 1 ) = = 0 (V_{1}\times V_{2})\centerdot(P_{2}-P_{1})==0 (V1​×V2​)⋅(P2​−P1​)==0 相交 直接就是0 公垂线退化为一个点不相交 我们假设公垂线与直线2的交点为 P p 2 = P 2 + K 2 ∗ V 2 P_{p2} =P_2+K_2*V_2 Pp2​=P2​+K2​∗V2​ 根据点到直线距离里面的垂足公式,可以得到过 P p 2 P_{p2} Pp2​与直线1对应的垂足表达式(也就是公垂线的另一个点) P p 1 = P 1 + [ ( P p 2 − P 1 ) ⋅ V 1 ] ∗ V 1 P_{p1}=P_1+[(P_{p2}-P_1)\centerdot V_1]*V1 Pp1​=P1​+[(Pp2​−P1​)⋅V1​]∗V1 即 P p 1 = P 1 + [ ( P 2 + K 2 ∗ V 2 − P 1 ) ⋅ V 1 ] ∗ V 1 P_{p1}=P_1+[(P_2+K_2*V_2-P_1)\centerdot V_1]*V1 Pp1​=P1​+[(P2​+K2​∗V2​−P1​)⋅V1​]∗V1 向量 P p 1 − P p 2 P_{p1}-P_{p2} Pp1​−Pp2​同时与 V 2 V_2 V2​垂直 所以可以列出方程 ( P p 1 − P p 2 ) ⋅ V 2 = 0 (P_{p1}-P_{p2})\centerdot V_2 = 0 (Pp1​−Pp2​)⋅V2​=0 即 ( P 1 + [ ( P p 2 − P 1 ) ⋅ V 1 ] ∗ V 1 − P p 2 ) ⋅ V 2 = 0 (P_1+[(P_{p2}-P_1)\centerdot V_1]*V1-P_{p2})\centerdot V_2 = 0 (P1​+[(Pp2​−P1​)⋅V1​]∗V1−Pp2​)⋅V2​=0 ( P 1 + [ ( P 2 + K 2 ∗ V 2 − P 1 ) ⋅ V 1 ] ∗ V 1 − P 2 − K 2 ∗ V 2 ) ⋅ V 2 = 0 (P_1+[(P_2+K_2*V_2-P_1)\centerdot V_1]*V1-P_2-K_2*V_2)\centerdot V_2 = 0 (P1​+[(P2​+K2​∗V2​−P1​)⋅V1​]∗V1−P2​−K2​∗V2​)⋅V2​=0 整理得到 K 2 = ( P 1 − P 2 + ( ( P 2 − P 1 ) ⋅ V 1 ) ∗ V 1 ) ⋅ V 2 V 2 ⋅ V 2 − ( V 1 ⋅ V 2 ) ∗ ( V 2 ⋅ V 1 ) K_2 =\frac{(P_1-P_2+((P_2-P_1)\centerdot V_1)*V_1)\centerdot V_2}{V_2\centerdot V_2-(V_1\centerdot V_2)*(V_2\centerdot V_1)} K2​=V2​⋅V2​−(V1​⋅V2​)∗(V2​⋅V1​)(P1​−P2​+((P2​−P1​)⋅V1​)∗V1​)⋅V2​​ 由于方向都是单位向量式中 V 2 ⋅ V 2 = 1 V_2\centerdot V_2=1 V2​⋅V2​=1可以减少一次点乘运算 有了 K 2 K_2 K2​其他就都可以求出了

补充 如果只需要求解距离,可以通过两个直线方向的叉乘获得公垂线方向,再利用向量 P 1 − P 2 P_1-P_2 P1​−P2​与公垂线方向的单位向量的点积,即可获得距离。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有