Ist Punkt (x,y) in einer bestimmten Geometrischen Figur - wie umsetzen?



  • Hallo alle,

    da dies mein erster Post ist, kurz ein paar Worte zu mir: Ich bin 24 Jahre alt und versuche gerade mein erstes Spiel in C++ mit DirectX selbst zu programmieren.

    Mein Problem ist, dass mein Spielfeld aus isometrischen Feldern besteht. Damit ich das Feld über dem sich die Maus befinden "highlighten" oder auswählen kann, muss ich es natürlich bestimmen. Bei einem Rechteck ist das Verfahren klar, ich prüfe einfach über die Eckkoordinaten und die Seitenlängen. Aber wie mache ich das bei einem isometrischen Feld, also einem Parallelogramm oder gar bei einem Kreis?

    Hier eine ASCII Skizze um klarzumachen wie die Felder ungefähr aussehen:

    *****************
    * * *
    * * *
    * * *
    *****************

    Vielen Dank im Voraus!



  • *Arg* Das Forum hat meine Skizze zerlegt, ich versuchs nochmal:

    ***************
    ............*
    ............*
    ............*
    ***************



  • tipp, wenn du einen Text als Code markierst, wird er in einer Festbreitenschriftart angezeigt ([code] ... [ /code])



  • Danke schön 🙂 Was man doch nicht alles beim Posten so lernt, neuer Versuch:

    *********************
       *       *       *
      *       *       *
     *       *       *
    *****************
    

    Puuh, ich hoffe dafür ist jetzt klar, was genau ich meine. 😉



  • .   *****************
       *       *       *
      *       *       *
     *       *       *
    *****************
    

    So?

    Ich persönlich würde die Mauszeigerkoordinaten in die Koordinaten der Spielwelt transformieren und dann den bekannten Rechteck-Test machen. Andererseits hab ich keine Erfahrung mit Spielen, vielleicht macht man das auch anders.



  • Die Frage ist nur, wie transformiere ich die Koordinaten in die Spielwelt? 🙂 Hast du da eine Idee, einen Ansatz?



  • Du transformierst doch auch die Spielfeldkoordinaten in Bildschirmkoordinaten, sonst würde man ja nichts sehen 😉 und das einfach rückwärts ...



  • Ich muss gestehen, ich steh gerade auf dem Schlauch, an welchem Punkt transformiere ich denn die Koordinaten vom Spielfeld auf den Bildschirm.

    Ich pinsele die Sprites in einem Grafikprogramm und dann blitte ich sie auf eine Surface.

    Kannst du mir vielleicht ein einfaches Beispiel geben?

    Danke 🙂



  • http://www.djs4life.de/Iso-Tut/Teil1.htm
    da gibt es auch was zum thema mousemapping.
    mfg olli



  • man kann folgendermaßen vorgehen.

    Nimm Dir ein Dreieck/Viereck und den Punkt.

    Bilde die Winkel zwischen dem Punkt und den einzelnen Eckpunkten ( bei einem Dreieck ists einfacher, quasi Dreiecke PAB, PBC, PCA) und addiere diese.

    Liegen die Winkel zusammen bei genau 360°, so ist der Punkt im Dreieck.
    (p.s.: hier wäre ein bild doch genial, oder?)

    A
          ************ B
         * \ _ -- *** 
        *  /° ***  
       * / ***
      */***
     **
     C
    

    Außerhalb - und sei es auch nur knapp - ist der Winkel größer oder Kleiner ( je nach Position des Punktes...)



  • Vielen Dank für beide Beiträge, ich denke damit werde ich mein Problem lösen können! 🙂


Anmelden zum Antworten