[Java] Maus-Gesten

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Flu, 25. Juli 2011 .

Schlagworte:
  1. 25. Juli 2011
    Maus-Gesten

    Ich habe ein problem bei den mausgestures. wenn ich nen dreieck zeichne, dann erkennt das Programm auch kreise als Dreiecke. ich weiß woran es liegt, weiß aber nicht wie ich es beheben kann. dazu meine frage:
    ich hole mir mit einer Methode OnMouseDown() die anfangskoordinate der Maus. mit OnMouseDrag() speicher ich mir in nem feld die koordinaten während ich die maus ziehe und in OnMouseUp() die Koordinate, wo ich den Klick wieder loslasse. jetzt hab ich versucht mit if bedingungen ecken zu definieren. ein bsp. wäre: if(posList[i-1].y > posLis.y && posList[i-1].x <= posLis.x) dann ist es eine ecke. das wäre dann der fall wenn man nen normales 3eck zeichnet ohne nen rechten winkel. Nur leider tritt die bedingung auch bei nem kreisauf, da irgendwann auch dort ein wendepunkt ist. Jetzt meine frage, wie definier ich am besten, dass eine ecke vorliegt? Ich habe ja nur den startpunkt. ich kenne ja die eckpunkte nicht. die gilt es ja zu bestimmen.
    Oder hat jemand einen anderen Ansatz?

    Hoffe auf schnelle Hilfe mit evtl. pseudocodes oder echten codeausschnitten

    Flu
     
  2. 24. August 2011
    AW: Maus-Gesten

    mhh also ich hab nur kurz nachgedacht aber,...ist die anzahl der gesamtwendepunkte nicht unterschiedlich zwischen einem dreieck und einem kreis?

    dreieck dürfte 3 Wendepunkte haben ( die 3 Ecken) ein Kreis jedoch 4.
    Gibt es eine Möglichkeit das ende der gesteneingabe zu erkennen?


    Gibt es vllt auch andere ansätze als die mathematische? zB vergleichsanalysen?
    also das im hintergrund wie ein Bild gezeichnet wird, und es mit referenzen verglichen wird?!

    (das ist jetzt nur mal meine primitive denkweise... bin nicht so versiert in diesen Themen)


    aber die wendepunkte sollten denk ich mal unterschiedlich sein.
    (oder?)
     
  3. 24. August 2011
    AW: Maus-Gesten

    Hallo!

    Als Idee:

    Programmier doch zu den unterschiedlichen geometrischen Formen Formeln zur Berechnung der (Y-) X-Koordinaten mit unterschiedlichen Parametern. Wenn immer eine Form gezeichnet wird, berechnest du die Parameter (z.B. moeglicher Radius fuer einen Kreis). Danach laesst die Funktionen laufen, die dir ein Array von Punkten geben. Vergleiche die Punkte in dem Funktionen-Array mit den tatsaechlichen Punkten, bestimme die Abweichung (z.B. ueber stochastische Verfahren) und am Ende entscheide Anhand der geringsten Abweichung welche Form (= welche Funktion) fuer die vom Benutzer gezeichneten Punkte am geeignetsten ist.

    Ich sehe die Schwierigkeit hauptsaechlich in der Bestimmung der Parameter (bzw. der Definition der Funktionen in Abhaengigkeit der Parameter).

    So wird ein vom Benutzer gezeichneter Kreis als Kreis erkannt, und ein Dreieck als Dreieck.

    Alternativ (dirty solution) kannst du die oben vorgeschlagene Loesung auch nur fuer den Kreis implementieren, und falls die Abweichung zu gross ist, dann das Dreieck oder aehnliches zeichnen.

    Mfg,

    Kolazomai
     
  4. 24. August 2011
    AW: Maus-Gesten

    Kann mir vorstellen dass das mit einer Support Vector Machine (SVM) funktioniert.
    Das ist ein mathematisches Verfahren, mit dem Vektoren klassifiziert und erkannt werden können.
    Du musst deiner SVM also nur einen Basis-Datensatz liefern mit "Trainingsdaten", und dann erkennt das verfahren, in welche Kategorie später anfallende Daten am ehesten passen.
    Kann dir dazu nicht viel sagen, außer dass Kommilitonen von mir schon damit gearbeitet haben und erstaunlich gute Ergebnisse erzielt haben. Das gute ist, dass man sich nicht mit den mathematischen Grundlagen des Verfahrens auseinandersetzen muss, sondern das ganze als Blackbox nutzen kann. Daten rein -> Ergebnis raus.
    Es gibt diverse Java-Implementierungen, musst einfach mal googlen.

    Gruß,
    Figger
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.