vb 两线相交

来源:百度知道 编辑:UC知道 时间:2024/07/08 16:16:51
在VB中,怎么判断画的2条线是否交叉?给出程序,谢谢,好的再加分

可用数学的方法,如果一条直线的两个端点都在另一直线的同一侧,则没有交叉,否则,就有交叉。代码如下:
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