Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Private Function GetQuadrant(ByVal t1 As Tuple(Of Double, Double, Double, Double),
- ByVal t2 As Tuple(Of Double, Double, Double, Double)) As List(Of Tuple(Of Double, Double, Double, Double))
- Dim pixelMove As Integer = 1 'Um wieviel Pixel das Bilderweitert wird.
- Dim prec As Double = 0.00000000005 'Genauigkeit
- 'Zuerst rechnen wir den xmin,xmax Step aus
- Dim curXmin As Double = t2.Item1
- Dim curXmax As Double = t2.Item2
- Dim curXminDiff As Double = GetAbsolute(t1.Item1, t2.Item1) / Bildgröße.Width
- Dim curXmaxDiff As Double = GetAbsolute(t1.Item2, t2.Item2) / Bildgröße.Width
- Dim curXminStep As Double
- Dim curXmaxStep As Double
- Dim countx As Integer
- Dim county As Integer
- Dim xminStep, xmaxStep As New List(Of Double)
- Do While True
- curXminStep += (curXminDiff * pixelMove)
- curXmaxStep += (curXmaxDiff * pixelMove)
- xminStep.Add(curXminDiff)
- xmaxStep.Add(curXmaxDiff)
- If curXmin < t1.Item1 Then curXmin += curXminDiff
- If curXmin > t1.Item1 Then curXmin -= curXminDiff
- If curXmax < t1.Item2 Then curXmax += curXmaxDiff
- If curXmax > t1.Item2 Then curXmax -= curXmaxDiff
- curXmaxDiff = GetAbsolute(t1.Item2, curXmax) / Bildgröße.Width
- curXminDiff = GetAbsolute(t1.Item1, curXmin) / Bildgröße.Width
- If GetAbsolute(curXmin, t2.Item1) > GetAbsolute(t1.Item1, t2.Item1) - prec Or
- GetAbsolute(curXmax, t2.Item2) > GetAbsolute(t1.Item2, t2.Item2) - prec Then
- Exit Do
- End If
- countx += 1
- Loop
- Dim curYmin As Double = t2.Item3
- Dim curYmax As Double = t2.Item4
- Dim curYminDiff As Double = GetAbsolute(t1.Item3, t2.Item3) / Bildgröße.Height
- Dim curYmaxDiff As Double = GetAbsolute(t1.Item4, t2.Item4) / Bildgröße.Height
- Dim curYminStep As Double = 0
- Dim curYmaxStep As Double = 0
- Dim yminStep, ymaxStep As New List(Of Double)
- Do While True
- curYminStep += (curYminDiff * pixelMove)
- curYmaxStep += (curYmaxDiff * pixelMove)
- yminStep.Add(curYminDiff)
- ymaxStep.Add(curYmaxDiff)
- If curYmin < t1.Item3 Then curYmin += curYminDiff
- If curYmin > t1.Item3 Then curYmin -= curYminDiff
- If curYmax < t1.Item4 Then curYmax += curYmaxDiff
- If curYmax > t1.Item4 Then curYmax -= curYmaxDiff
- curYminDiff = GetAbsolute(t1.Item3, curYmin) / Bildgröße.Height
- curYmaxDiff = GetAbsolute(t1.Item4, curYmax) / Bildgröße.Height
- If GetAbsolute(curYmin, t2.Item3) > GetAbsolute(t1.Item3, t2.Item3) - prec Or
- GetAbsolute(curYmax, t2.Item4) > GetAbsolute(t1.Item4, t2.Item4) - prec Then
- Exit Do
- End If
- county += 1
- Loop
- Dim steps As Integer
- If countx > county Then
- steps = countx
- ElseIf countx < county Then
- steps = county
- Else
- steps = county
- End If
- Dim stepFaktor As New List(Of Tuple(Of Double, Double, Double, Double))
- Dim n As Tuple(Of Double, Double, Double, Double)
- Dim nxr, nxl, nyu, nyd As Double
- For i As Integer = (steps - 1) To 0
- If xminStep.Count - 1 >= i Then
- nxl = xminStep(i)
- Else
- nxl = 0
- End If
- If xmaxStep.Count - 1 >= i Then
- nxr = xmaxStep(i)
- Else
- nxr = 0
- End If
- If ymaxStep.Count - 1 >= i Then
- nyd = ymaxStep(i)
- Else
- nyd = 0
- End If
- If yminStep.Count - 1 >= i Then
- nyu = yminStep(i)
- Else
- nyu = 0
- End If
- n = New Tuple(Of Double, Double, Double, Double)(nxl, nxr, nyu, nyd)
- stepFaktor.Add(n)
- Next
- Return stepFaktor
- End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement