Public Type Point
X As Double
Y As Double
End Type
Public Type Lines
P1 As Point
P2 As Point
End Type
Const CROSS As Long = 0 '相交
Const COLINE As Long = 1 '共线
Const PARALLEL As Long = 2 '平行
Public Function GetPoint(L1 As Lines, L2 As Lines, P As Point) As Long
Dim A1 As Double, B1 As Double, C1 As Double
Dim A2 As Double, B2 As Double, C2 As Double
Dim D As Double, R As Double
A1 = L1.P2.Y - L1.P1.Y
B1 = L1.P1.X - L1.P2.X
C1 = L1.P2.X * L1.P1.Y - L1.P1.X * L1.P2.Y
A2 = L2.P2.Y - L2.P1.Y
B2 = L2.P1.X - L2.P2.X
C2 = L2.P2.X * L2.P1.Y - L2.P1.X * L2.P2.Y
D = A2 * B1 - A1 * B2
If D = 0 Then
If (A1 = A2) And (B1 = B2) Then
GetPoint = COLINE
Else
GetPoint = PARALLEL
End If
Else
P.X = (C1 * B2 - C2 * B1) / D
P.Y = (A1 * C2 - A2 * C1) / D
GetPoint = CROSS
End If
End Function
全部评论