Punkt zwischen 4 Geraden ? (PB)
Tja.. ich zerbrech mir hier den Kopf über ein kleines Problem und mir gehen die Ideen aus, woran es liegen könnte.
Folgendes Problem:
Ich möchte wissen ob sich der MausCursor innerhalb der von mir gezeichneten Map befindet. Die Map bildet eine Raute.
Der Ansatz ist, von den 4 Kanten der Map Geradenfunktionen zu bilden, den MausX-Wert einzusetzen und den MausY dann mit den Ergebnissen zu überprüfen.
Komischerweise ist einzig und allein der 1. Wert der Ausreißer der immer größer als MausY ist, obwohl er kleiner sein sollte..
Zitat:
Procedure IsPointeronMap(MausX, MausY)
xStart = Map(0,0)\xPos
yStart = Map(0,0)\yPos + (#Kachel_Hoehe/2)
bG0.f = yStart - (#Kachel_Steigung*xStart)
bGX.f = bG0 + (MapSizeY*#Kachel_Hoehe)
yG0.f = #Kachel_Steigung*MausX + bG0
yGX.f = #Kachel_Steigung*MausX + bGX
bF0.f = yStart + (#Kachel_Steigung*xStart)
bFX.f = bF0 - (MapSizeY*#Kachel_Hoehe)
yF0.f = -#Kachel_Steigung*MausX + bF0
yFX.f = -#Kachel_Steigung*MausX + bFX
result = 0
If MausY > yG0 And MausY < yGX And MausY < yF0 And MausY > yFX
result = 1
EndIf
ProcedureReturn result
EndProcedure
Ich kann leider keine Skizze liefern.. aber ich hoffe ihr könnt den obigen Code nachvollziehen... Wie gesagt ist immer der Wert yG0 größer als MausY, auch wenn er nach der Logik her kleiner sein müßte. Ich erkenne aber keinen Fehler in meiner Berechnung...
Ich hoffe ihr könnt mir helfen..
PS: Falls etwas unklar ist, sagen und ich liefer Infos nach.
PPS: xStart und yStart sind die Pixelkoordinaten des linken Eckpunktes der Raute..
Edit: Problem ist gelöst.. in Ruhe nachdenken hilft (Vorzeichen an einigen Stellen falsch *vorKopfschlag*)