利用python求两个相交直线的交点

本文介绍了一种计算空间中两条直线交点坐标的数学方法。通过输入两条直线的点向式方程中的点坐标及方向向量,利用参数化方程求解交点坐标。并提供了Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

calCoordinateFrom2Lines

功能

已知两直线的“点向式”方程,分别输入两条直线的点和方向向量,计算两直线的交点坐标。

原理

如图所示,空间上两条直线对应的点坐标 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1) Q ( x 2 , y 2 , z 2 ) Q(x_2,y_2,z_2) Q(x2,y2,z2),对应的方向向量 s 1 ( m 1 , n 1 , z 1 ) s_1(m_1,n_1,z_1) s1(m1,n1,z1) s 2 ( m 2 , n 2 , p 2 ) s_2(m_2,n_2,p_2) s2(m2,n2,p2),两条直线相交于 M ( x , y , z ) M(x,y,z) M(x,y,z)

https://gitee.com/zhaoqiushan/pic/raw/master/0da58f3802b2472ccfebdb17169a3e0.png

根据空间直线的一点与该直线的方向向量可得到直线的点向式方程:
l 1 : x − x 1 m 1 = y − y 1 n 1 = z − z 1 p 1 l 2 : x − x 2 m 2 = y − y 2 n 2 = z − z 2 p 2 l_1:\frac{x-x_1}{m_1}=\frac{y-y_1}{n_1}=\frac{z-z_1}{p_1}\\ l_2:\frac{x-x_2}{m_2}=\frac{y-y_2}{n_2}=\frac{z-z_2}{p_2} l1:m1xx1=n1yy1=p1zz1l2:m2xx2=n2yy2=p2zz2
利用中间参数 t t t可将直线上某点坐标表示为:
x = x 1 + m 1 t y = y 1 + n 1 t z = z 1 + p 1 t x=x_1+m_1t\\ y=y_1+n_1t\\ z=z_1+p_1t x=x1+m1ty=y1+n1tz=z1+p1t
将该点坐标带入 l 2 l_2 l2中,计算出 t t t的值为:
t = m 2 ( y 1 − y 2 ) − n 2 ( x 1 − x 2 ) m 1 n 2 − m 2 n 1 t=\frac{m_2(y_1-y_2)-n_2(x_1-x_2)}{m_1n_2-m_2n_1} t=m1n2m2n1m2(y1y2)n2(x1x2)
t t t代入该点坐标即可求出该点坐标值。

使用

输入

直线 l 1 l_1 l1的任意点坐标 P ( x 1 , y 1 , z 1 ) P(x_1,y_1,z_1) P(x1,y1,z1)和该直线的方向向量 s 1 ( m 1 , n 1 , p 1 ) s_1(m_1,n_1,p_1) s1(m1,n1,p1)

直线 l 2 l_2 l2的任意点坐标 Q ( x 2 , y 2 , z 2 ) Q(x_2,y_2,z_2) Q(x2,y2,z2)和该直线的方向向量 s 2 ( m 2 , n 2 , p 2 ) s_2(m_2,n_2,p_2) s2(m2,n2,p2)

输出

空间两直线的交点 M ( x , y , z ) M(x,y,z) M(x,y,z)

DEMO

import geomeas as gm
import numpy as np

P_1 = np.array([-108.45, 174.45, 0])
s_1 = np.array([-335.6, -77.27, 0])
Q_1 = np.array([227.15, 174.45, 0])
s_2 = np.array([335.6, -77.27, 0])

print(gm.Coordinate().calCoordinateFrom2Lines(P_1, s_1, Q_1, s_2))

代码链接

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hunter206206

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值