mausklick auf Tile umsetzten



  • Hallo zusammen,

    ich möchte das wenn ich mit der Maus über ein Tile gehe, das ich per SDL auf den Bildschirm bringe, darauf reagiert wird. Sagen wir mal, es soll eine andere Farbe annehmen.

    Mein Problem besteht darin, das ich ein Tile, dessen untere Kanten ja eben nicht parallel zur x Achse des Monitors stehen, in einem Rechteck verpackt auf den Bildschirm bringe.

    Da mir nix besseres einfällt, versuche ich es mal so zu veranschaulichen:

    ------------
    |.....x.....|
    |x........x|
    |.....x.....|
    ------------
    Wenn wir jetzt die x´ses mit Linien verbinden, entsteht eine Art Raute.

    Was ich nun gerne hätte, ist eine Lösung dafür, wie ich darauf Reagieren kann, wenn der Mauscursor sich innerhalb dieser Linien befindet, aber eben nicht, wenn er sich außerhalb der Linien befindet.

    Ich hoffe das ich es nicht komplizierter als nötig dargestellt habe, habe lange darüber gegrübelt, wie ich mein Problem am besten schildern kann.

    Bei einem normalen Rechteck würde ich einfach die Mauskoordinaten darauf prüfen, ob sie größer als der P1 des Rechteckes sind UND kleiner als der P2 (in diesem Fall die untere Rechte Ecke).

    Also fall jemand ne Lösung hat, ich wäre sehr dankbar. Bis dahin werde ich mir erstmal weiter den Kopf zerbrechen, und experimentieren^^.

    Vielen Dank schonmal, allein fürs durchlesen^^



  • Schieß von deinem Punkt aus ne Gerade irgendwohin. Wenn dein Punkt sich in dem Polygon (in deinem Fall ein Rechteck) befindet, kommt ne ungerade Schnittpunktanzahl raus. Wenn er sich außerhalb befindet, ist sie entweder 0 oder gerade.

    edit: bin mir grade nicht sicher ob das für nichtkonvexe Polygone auch geht, sollte für dich aber eh egal sein.

    Vll. gibts auch noch ne einfachere Methode. Ich habs aber bisher immer so gemacht und bin zufrieden damit^^





  • verdammt^^,

    es hat lange gedauert bis ich es geschnallt habe!

    aber jetzt hab ich es gerafft. Mein Problem wird auf exzellente Art und Weise in dem Link meines Vorposters gelöst.

    Vielen Dank,

    bis zum nächsten Mal, hehe


Anmelden zum Antworten