矩形与矩形碰撞
Public Structure SERect '矩形
Public Loca As SEPoint '位置
Public ValHeight As Single
Public ValWidth As Single
Public Function TestPoint(ByRef inP As SEPoint) As Boolean
'测试是否包含输入的点
Return inP.X < Loca.X + ValWidth AndAlso inP.X > Loca.X - ValWidth AndAlso _
inP.Y < Loca.Y + ValHeight AndAlso inP.Y > Loca.Y - ValHeight
End Function
End Structure
圆形与圆形碰撞
Public Structure SERound '圆形
Public Loca As SEPoint '位置
Public ValRange As Single '半径
Public Function TestPoint(ByRef inP As SEPoint) As Boolean
'测试是否包含输入的点
If (inP.X - Loca.X) * (inP.X - Loca.X) + (inP.Y - Loca.Y) * (inP.Y - Loca.Y) < ValRange * ValRange Then
Return True
End If
End Function
End Structure
矩形与圆形碰撞
Public Structure SERoundRect '圆角矩形
Public Loca As SEPoint '位置
Public RoundRange As Single '半径
Public RectHeight As Single
Public RectWidth As Single
Public Function TestPoint(ByRef inP As SEPoint) As Boolean
'测试是否包含输入的点
Dim tX As Single = Abs(Loca.X - inP.X)
Dim tY As Single = Abs(Loca.Y - inP.Y)
If tX > RectWidth + RoundRange OrElse tY > RectHeight + RoundRange Then
Return False
ElseIf tX < RectWidth OrElse tY < RectHeight Then
Return True
Else
tX -= RectWidth
tY -= RectHeight
Return (tX * tX + tY * tY) < RoundRange * RoundRange
End If
End Function
End Structure