python 直线交点
时间: 2023-11-16 10:02:17 浏览: 90
Python中可以通过计算两条直线的解析式,然后求解它们的交点来得到直线交点。可以使用两种方法来实现这个功能,一种是通过理论推导,另一种是通过编写代码实现。下面是两种方法的示例代码:
方法一:理论推导
可以使用解析几何中的知识,计算出两条直线的解析式,然后求解它们的交点。具体实现可以参考以下代码:
```python
def calc_abc_from_line_2d(x0, y0, x1, y1):
a = y0-y1
b = x1-x0
c = x0*y1-x1*y0
return a, b, c
def get_line_cross_point(line1, line2):
a0, b0, c0 = calc_abc_from_line_2d(*line1)
a1, b1, c1 = calc_abc_from_line_2d(*line2)
D = a0*b1-a1*b0
if D==0:
return None
x = (b0*c1-b1*c0)/D
y = (a1*c0-a0*c1)/D
return x, y
line1 = [0, 0, 1, 1]
line2 = [0, 1, 1, 0]
print(get_line_cross_point(line1, line2))
```
输出结果为:(0.5, 0.5)
方法二:编写代码
可以编写一个函数来计算两条直线的交点。具体实现可以参考以下代码:
```python
def cross_point(line1,line2):
x1=line1[0]
y1=line1[1]
x2=line1[2]
y2=line1[3]
x3=line2[0]
y3=line2[1]
x4=line2[2]
y4=line2[3]
k1=(y2-y1)*1.0/(x2-x1)
b1=y1*1.0-x1*k1*1.0
if (x4-x3)==0:
k2=None
b2=0
else:
k2=(y4-y3)*1.0/(x4-x3)
b2=y3*1.0-x3*k2*1.0
if k2==None:
x=x3
else:
x=(b2-b1)*1.0/(k1-k2)
y=k1*x*1.0+b1*1.0
return [x,y]
line1 = [0, 0, 1, 1]
line2 = [0, 1, 1, 0]
print(cross_point(line1, line2))
```
输出结果为:[0.5, 0.5]
阅读全文