VB 如何判断两条线段是否相交?
来源:百度知道 编辑:UC知道 时间:2024/09/27 22:14:16
注意:是线段! 不是直线!
添加2个line控件~一个按钮
Private Sub Command1_Click()
Dim X1 As Long, Y1 As Long, X2 As Long, Y2 As Long
Dim A1 As Long, B1 As Long, A2 As Long, B2 As Long
Dim a As Long, b As Long
X1 = Line1.X1: X2 = Line1.X2: Y1 = Line1.Y1: Y2 = Line1.Y2
A1 = Line2.X1: A2 = Line2.X2: B1 = Line2.Y1: B2 = Line2.Y2
a = F(X1, Y1, X2, Y2, A1, B1)
b = F(X1, Y1, X2, Y2, A2, B2)
If a * b = 0 Then
Print "两直线有交叉。"
ElseIf a * b > 0 Then
Print "两直线没有交叉。"
Else
a = F(A1, B1, A2, B2, X1, Y1)
b = F(A1, B1, A2, B2, X2, Y2)
If a * b <= 0 Then
Print "两直线有交叉。"
Else
Print "两直线没有交叉。"
End If
End If
End Sub
Private Function F(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X As Long, ByVal Y As Long) As Long
Dim K As Long
K = (Y2 - Y1) * X - (X2 - X1) * Y + X2 * Y1 - X1 * Y2
F = Sgn(K)
End Function