参考博客
用的时候才发现这些基础知识还真忘了不少。
1.俩点之间的直线
直线的一般表达式是:Ax+By+C=0。如果一直俩点(x1,y2)、(x2,y2).那么对于过着俩点的一般式是这样:
- A=y2-y1
- B=x1-x2
- C=X2×Y1-X1×Y2
所以用Python代码来表示是这样:
#已知俩点求直线一般式
def GeneralEquation(x1,y1,x2,y2):
# 一般式 Ax+By+C=0
A=y2-y1
B=x1-x2
C=x2*y1-x1*y2
return A,B,C
测试一下:
A,B,C = GeneralEquation(0,0,1,1)
输出为:1 -1 0
也就是y=x,所以是正确的。
2.俩点之间的中垂线
同样是点(x1,y1)、(x2,y2)。那么这俩点的中垂线一般表达式Ax+By+C=0表示如下:
- A=2(x2-x1)
- B=2(y2-y1)
- C=(x1^2-x2^2)+(y1^2-y2^2)
Python代码如下:
#求俩点之间中垂线
def medLine(x1,y1,x2,y2):
A = 2*(x2-x1)
B = 2*(y2-y1)
C = x1**2-x2**2+y1**2-y2**2
return A,B,C
测试代码如下:
A,B,C=medLine(0,2,-2,0)
结果:
-4 -4 0
也就是y=-x,正确
3.俩直线交点
二条直线:A1X+B1Y+C1=0与A2X+B2Y+C2=0,他们焦点是(x,y)。则:
- x=(C2×B1-C1×B2)/(A1×B2-A2×B1)
y=(C1×A2-C2×A1)/(A1×B2-A2×B1)
Python代码如下:
def GetIntersectPointofLines(x1,y1,x2,y2,x3,y3,x4,y4):
A1,B1,C1=GeneralEquation(x1,y1,x2,y2)
A2, B2, C2 = GeneralEquation(x3,y3,x4,y4)
m=A1*B2-A2*B1
if m==0:
print("无交点")
else:
x=(C2*B1-C1*B2)/m
y=(C1*A2-C2*A1)/m
return x,y
即求过(x1,y1)(x2,y2)的直线与过(x3,y3)(x4,y4)的直线他们的交点坐标。下面进行测试,输入:
x,y = GetIntersectPointofLines(0,0,2,2,0,2,2,0)
print(x,y)
输出为:1.0 1.0
也就是y=x和x+y=2交点在(1,1),正确!