在计算任意四边形的IOU
时涉及到一些直线与点的计算几何的知识,将相关的公式推导做一个记录
1.已知两点求直线方程
直线方程一般式为:
A
x
+
B
y
+
C
=
0
(1-1)
Ax + By + C = 0 \tag{1-1}
Ax+By+C=0(1-1)
已知两个不同的点
P
1
(
x
1
,
y
1
)
P_{1}(x_{1},y_{1})
P1(x1,y1),
P
2
(
x
2
,
y
2
)
P_{2}(x_{2},y_{2})
P2(x2,y2)
①
x
1
=
x
2
x_{1} = x_{2}
x1=x2时,直线方程为
x
=
x
1
x=x_{1}
x=x1
②
y
1
=
y
2
y_{1} = y_{2}
y1=y2时,直线方程为
y
=
y
1
y=y_{1}
y=y1
③
x
1
≠
x
2
∧
y
1
≠
y
2
x_{1} \neq x_{2} \wedge y_{1} \neq y_{2}
x1=x2∧y1=y2 时,由直线方程两点式
y
−
y
1
x
−
x
1
=
y
2
−
y
1
x
2
−
x
1
\frac{y-y_{1}}{x-x_{1}} = \frac{y_{2}-y_{1}}{x_{2}-x_{1}}
x−x1y−y1=x2−x1y2−y1展开得到:
(
y
1
−
y
2
)
x
+
(
x
2
−
x
1
)
y
+
x
1
y
2
−
x
2
y
1
=
0
(y_{1}-y_{2})x+(x_{2}-x_{1})y+x_{1}y_{2}-x_{2}y_{1}=0
(y1−y2)x+(x2−x1)y+x1y2−x2y1=0
x
1
=
x
2
∨
y
1
=
y
2
x_{1} = x_{2} \vee y_{1} = y_{2}
x1=x2∨y1=y2时,上式也成立,因此
A
=
y
1
−
y
2
,
B
=
x
2
−
x
1
,
C
=
x
1
y
2
−
x
2
y
1
A = y_{1}-y_{2}, B = x_{2}-x_{1}, C = x_{1}y_{2}-x_{2}y_{1}
A=y1−y2,B=x2−x1,C=x1y2−x2y1
2.已知两直线方程求交点
已知两直线
A
1
x
+
B
1
y
+
C
1
=
0
(2-1)
A_{1}x + B_{1}y + C_{1} = 0 \tag{2-1}
A1x+B1y+C1=0(2-1)
A
2
x
+
B
2
y
+
C
2
=
0
(2-2)
A_{2}x + B_{2}y + C_{2} = 0 \tag{2-2}
A2x+B2y+C2=0(2-2)
对(2-1)式乘A2
,对(2-2)式乘A1
得:
A
1
A
2
x
+
A
2
B
1
y
+
A
2
C
1
=
0
A_{1}A_{2}x + A_{2}B_{1}y + A_{2}C_{1} = 0
A1A2x+A2B1y+A2C1=0
A
1
A
2
x
+
A
1
B
2
y
+
A
1
C
2
=
0
A_{1}A_{2}x + A_{1}B_{2}y + A_{1}C_{2} = 0
A1A2x+A1B2y+A1C2=0
两式相减得:
y
=
A
1
C
2
−
A
2
C
1
A
2
B
1
−
A
1
B
2
y = \frac{A_{1}C_{2}-A_{2}C_{1}}{A_{2}B_{1}-A_{1}B_{2}}
y=A2B1−A1B2A1C2−A2C1
同理可得
x
=
B
1
C
2
−
B
2
C
1
A
1
B
2
−
A
2
B
1
x = \frac{B_{1}C_{2}-B_{2}C_{1}}{A_{1}B_{2}-A_{2}B_{1}}
x=A1B2−A2B1B1C2−B2C1
若 A 2 B 1 − A 1 B 2 = 0 A_{2}B_{1}-A_{1}B_{2} = 0 A2B1−A1B2=0则说明两条直线平行
3.判断点是否在线段上
已知线段由
P
1
(
x
1
,
y
1
)
P_{1}(x_{1},y_{1})
P1(x1,y1),
P
2
(
x
2
,
y
2
)
P_{2}(x_{2},y_{2})
P2(x2,y2)两点构成,求点
P
(
x
,
y
)
P(x,y)
P(x,y)是否在线段
P
1
P
2
P_{1}P_{2}
P1P2上。
①
P
,
P
1
,
P
2
P,P_{1},P_{2}
P,P1,P2三点共线
→
\rightarrow
→
P
1
P
2
→
×
P
1
P
→
=
0
\overrightarrow{P_{1}P_{2}} \times \overrightarrow{P_{1}P} = 0
P1P2×P1P=0
② 点
P
P
P在由
P
1
P
2
P_{1}P_{2}
P1P2作为对角线的矩形范围内
同时满足①②,则点
P
P
P在线段
P
1
P
2
P_{1}P_{2}
P1P2上
由①可得
(
x
2
−
x
1
,
y
2
−
y
1
)
×
(
x
−
x
1
,
y
−
y
1
)
=
(
x
2
−
x
1
)
(
y
−
y
1
)
−
(
y
2
−
y
1
)
(
x
−
x
1
)
=
0
(x_{2}-x_{1},y_{2}-y_{1})\times(x-x_{1},y-y_{1}) = (x_{2}-x_{1})(y-y_{1}) - (y_{2}-y_{1})(x-x_{1}) = 0
(x2−x1,y2−y1)×(x−x1,y−y1)=(x2−x1)(y−y1)−(y2−y1)(x−x1)=0
由②可得
(
x
−
x
1
)
(
x
2
−
x
)
≥
0
且
(
y
−
y
1
)
(
y
2
−
y
)
≥
0
(x-x_{1})(x_{2}-x)\geq0 且 (y-y_{1})(y_{2}-y)\geq0
(x−x1)(x2−x)≥0且(y−y1)(y2−y)≥0