Klick in der nähe einer Strecke

Status
Nicht offen für weitere Antworten.
K

Krause

Gast
Hallo,
ich habe folgendes Problem:

ich zeichne mittels Java2D einige dynamische Strecke auf den Bildschirm.
Jetzt will ich wenn der Benutzer auf oder in die nähe einer der Strecken klickt, diese hervorheben.

Wie kann ich herausfinden, ob die Maustaste in der nähe, oder auf einer dieser Strecken betätigt wurde.

Jede Strecken wird mithilfe von 2 Punkten gezeichnet, ich habe also zu jeder Strecke nur den Anfangs und Ednpunkt.

Wäre cool, wenn jemand ne Idee hätte

Danke

Krause
 

dayy_ands

Mitglied
Wie wärs wenn du ein Polygon außenherum erstellst(und es nicht anzeigst!) und überprüfst ob die Maus sich in dem Polygon befindet?
geht mit:
Code:
boolean reingeklickt = polygon.contains(maus.getX(), Maus.getY())
 
K

Krause

Gast
Wow, hört sich ja gut an :)

Wie erstelle ich denn nen Polygon in Java2D?

Danke

Krause
 

dayy_ands

Mitglied
GeneralPath ist ein Polygon in Java2D...
Der Link verweist auf ein Normales Polygon.
Abwer ich nehme an, dass es mit sowas genauso geht.
 
A

Acrobat

Gast
Andere Idee: Koordinaten des Klickpunktes nehmen und die Fläche des Dreiecks bestimmen, welches von diesem Punkt und den Endpunkten der Linie aufgespannt wird. Wenn diese Fläche kleiner als ein Schwellwert A ist, wurde die Linie getroffen. Sinnvollerweise sollte dies für alle Linien bestimmen und die kleinste Fläche nehmen.
 

chik

Gesperrter Benutzer
Die Idee von Acrobat hört sich auch nicht schlecht an, aber wie bestimme ich die Fläche des Dreiecks, wenn ich nur die 3 Eckpunkte habe?

Besser wäre es doch sogar, wenn ich die beiden Punkte der Strecke als Grundfläche nehme und dann die Höhe des Dreiecks errechne, das ist dann der Abstand von der Strecke, ist dieser unter einem Schwellwert, ist der Klick innerhalb.

Aber wie bestimme ich die Höhe eines Dreiecks, wenn ich nur 3 Punkte habe?

Krause
 

bummerland

Top Contributor
Acrobat hat gesagt.:
Andere Idee: Koordinaten des Klickpunktes nehmen und die Fläche des Dreiecks bestimmen, welches von diesem Punkt und den Endpunkten der Linie aufgespannt wird. Wenn diese Fläche kleiner als ein Schwellwert A ist, wurde die Linie getroffen. Sinnvollerweise sollte dies für alle Linien bestimmen und die kleinste Fläche nehmen.

sehe ich nicht als sehr sinnvoll an. wenn der klick auf der höhe der beiden punkte erfolgt, ist die fläche auch bei weit entferntem klick noch relativ klein.

chick hat gesagt.:
Besser wäre es doch sogar, wenn ich die beiden Punkte der Strecke als Grundfläche nehme und dann die Höhe des Dreiecks errechne, das ist dann der Abstand von der Strecke, ist dieser unter einem Schwellwert, ist der Klick innerhalb.

Aber wie bestimme ich die Höhe eines Dreiecks, wenn ich nur 3 Punkte habe?

das klingt schon besser. die höhe des dreiecks aus drei punkten zu bestimmen sollte meiner meinung nach möglich sein, weiss aber jetzt nicht aus dem kopf, wie das war, müsste ich mnoch mal nachlesen.
 

chik

Gesperrter Benutzer
Ne, geht leider auch nicht mit der Höhe, weil wenn der Punkt nicht unterhalb oder oberhalb der Strecke liegt, ist das mit der Höhe nicht korreckt, weil dann ja kein Rechterwinkel zwishen Höhe und der Grundseite entsteht, oder kann man die Höhe dann auch ausrechnen?

Ansonsten ziehe ich einfach ein Rechteck um die Strecke und überprüfe ob der Punkt darin liegt.

Aber wie kann man überprüfen, ob ein Punkt, also deren Koordinaten (2D) in einem schief liegendem Recheck (2D) sind?

Danke Krause
 

bummerland

Top Contributor
chik hat gesagt.:
Ne, geht leider auch nicht mit der Höhe, weil wenn der Punkt nicht unterhalb oder oberhalb der Strecke liegt, ist das mit der Höhe nicht korreckt, weil dann ja kein Rechterwinkel zwishen Höhe und der Grundseite entsteht, oder kann man die Höhe dann auch ausrechnen?

doch, kann man trotzdem ausrechnen.

chik hat gesagt.:
Aber wie kann man überprüfen, ob ein Punkt, also deren Koordinaten (2D) in einem schief liegendem Recheck (2D) sind?

Schau dir mal in der API die Klasse Rectangle2D an. Die hat ne Methode contains(x, y) - die liefert dir, ob ein punkt in dem rechteck liegt.
 

chik

Gesperrter Benutzer
wollte die matematischen Berechnungen lieber selber programiren.

wie kann man denn die Höhe eines Dreiecks bestimmen, wenn man nur alle 3 Punkte des Dreiecks hat?

Und wie kann man überprüfen ob ein Punkt in einem Rechteck liegt?

Wäre cool, wenn jemand nen mathematischen Ansatz oder die Lösung posten könnte :)

Danke
Krause
 
B

Beni

Gast
Höhe: lege eine Gerade durch zwei Punkte, gibt eine Glg der Form a*x + b*y + c = 0
Der Abstand eines Punktes ( x0, y0 ) ist dann:

d = abs( a*x0 + b*y0 + c ) / sqrt( a^2 + b^2 )

Beni
 

chik

Gesperrter Benutzer
Höhe: lege eine Gerade durch zwei Punkte, gibt eine Glg der Form a*x + b*y + c = 0

Mhh, wie errechne ich denn die Glg der 2 Punkte?

Die Gleichung einer Geraden is doch m*x + b = y oder?


Also ich habe ja eine Strecke, die durch 2 Punkte gegeben ist. Der dritte Punkt ist der Mausklick. Jetzt will ich den Abstand des dritten Punktes zu der Strecke berechnen. Also dachte ich, ich könnte die ersten beiden Punkte als Grundfläche des Dreiecks nehmen und dann die Höhe bestimmen. Aber wie berechne ich das?

Wie bekomme ich die Glg aus den 2 ersten Punkten?

Danke

Krause
 
B

Beni

Gast
m*x + b = y ist so eine Krüppelgleichung mit dem Lehrer versuchen die Schüler dumm zu machen... :twisted:
a*x + b*y + c = 0 ist die allgemeine Gleichung (die jede 2-dimensionale Gerade abdeckt)

Zum lösen: du hast die beiden Punkte (x1, y1) und (x2, y2).

dann musst du das Gleichungssystem

x1*a + y1*b + c = 0
x2*a + y2*b + c = 0

auflösen. (a, b, c sind die Unbekannten).

Weil (a,b) den senkrechten Vektor auf die Gerade beschreibt kannst du a= (y2-y1), b = (x1-x2) setzen.
( (x1-x2)(y2-y1) + (y1-y2)(x1-x2) = 0 sind also senkrecht )

auf c kommst du selber :wink:

Und der Abstand des 3. Punktes ist dann d (siehe Post oben)

mfg Beni
 

chik

Gesperrter Benutzer
Weil (a,b) den senkrechten Vektor auf die Gerade beschreibt kannst du a= (y2-y1), b = (x1-x2) setzen.

Mhh, aber was ist denn, wenn der dritte Punkt von dem Dreieck, nicht senkrecht über der Grundfläche liegt. Also wenn dieser Punkt z.B. viel weiter rechts liegt als die beiden anderen, dann kann ich die Höhe nicht ausrechnen, oder? Oder viel mehr, dann würde ich für meine zwecke die falsche Höhe bekommen, denn ich benötige ja den Abstand des dritten Punktes von der Strecke.

Trotzdem schonmal Danke

Krause
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Vier gewinnt programmieren, Klick-Reihenfolge Spiele- und Multimedia-Programmierung 2
G [LibGDX] Button Klick Probleme Spiele- und Multimedia-Programmierung 1
P JOGL Button-klick-Problem Spiele- und Multimedia-Programmierung 2
B Problem : Button-Klick bewirkt nichts Spiele- und Multimedia-Programmierung 4
L klick auf ComboBox ohne ActionListener --> CPU ausgelaste Spiele- und Multimedia-Programmierung 13
S Behavior deaktivieren/aktivieren - erster Klick geht nicht Spiele- und Multimedia-Programmierung 2
E Durch Klick auf den JButton will ich die Farbe ändern? Spiele- und Multimedia-Programmierung 8
YangLee Ausgabe von einer Bewegung bei mehrzeiligen Strings Spiele- und Multimedia-Programmierung 1
E relevanter bereich einer isometrischen karte zeichnen (AffineTransform) Spiele- und Multimedia-Programmierung 0
M Audio Track einer Musik CD abspielen mittels vlcj-Bibliothek Spiele- und Multimedia-Programmierung 0
Meeresgott LWJGL 3 Problem mit einer Texture Spiele- und Multimedia-Programmierung 4
D Programmierung einer Tor-Anzeige Spiele- und Multimedia-Programmierung 8
C Optimale Wegberechnung einer KI Spiele- und Multimedia-Programmierung 6
T Pong Hilfe bei einer Website Spiele- und Multimedia-Programmierung 4
R Einfärben von Gemeinden auf einer Karte Spiele- und Multimedia-Programmierung 14
S ECS: "deep copy" einer Entity-Vorlage Spiele- und Multimedia-Programmierung 9
R Aufruf einer render-Methode Spiele- und Multimedia-Programmierung 12
E A-Stern Algorithmus Problem und Implementierung einer Map Spiele- und Multimedia-Programmierung 6
J Frage zum Einlesen einer .wav in ein byte Array Spiele- und Multimedia-Programmierung 3
J Spielfiguren laufen lassen auf einer html Tabelle mit Hilfe von Servlets Spiele- und Multimedia-Programmierung 2
T Alle Referenzen zu einer Klasse aus Java Bytecode ersetzt, JVM sucht trotzdem diese Klasse Spiele- und Multimedia-Programmierung 1
M Kamera "am Rande einer Kugel bewegen" Spiele- und Multimedia-Programmierung 4
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
gamebreiti Index eines Elements einer ArrayList abfragen Spiele- und Multimedia-Programmierung 1
F Das sag mir einer Java ist plattform unabhänig ! Spiele- und Multimedia-Programmierung 10
M Scrolling einer 2D Map Spiele- und Multimedia-Programmierung 8
J In einer While-Schleife auf Event warten Spiele- und Multimedia-Programmierung 3
TheSorm Collision an einer bestimmten Seite eine Rectangles abfragen Spiele- und Multimedia-Programmierung 3
windl Frage zu Airplay und zur Mitarbeit bei einer Mediaanlage Spiele- und Multimedia-Programmierung 0
A Aufbau einer JOGL Anwendung Spiele- und Multimedia-Programmierung 12
L Werte aus einer .yml Datei lesen Spiele- und Multimedia-Programmierung 9
H Java3D - Textur aufs innere einer Sphere mappen Spiele- und Multimedia-Programmierung 9
F Download und Update einer Java-Anwendung Spiele- und Multimedia-Programmierung 10
D Problem beim bewegen einer Figur Spiele- und Multimedia-Programmierung 2
B Video von einer IP kamera Spiele- und Multimedia-Programmierung 5
W Java3D: Eckkoordinaten einer Box herausfinden Spiele- und Multimedia-Programmierung 18
W Rotation aller Objekte einer 3D-Szene Spiele- und Multimedia-Programmierung 8
2 Ein Zufallsweg bzw. Weg in einer 2dim Matrix finden. Spiele- und Multimedia-Programmierung 21
aze Schnittmenge zwischen Linie und einer Area wegschneiden Spiele- und Multimedia-Programmierung 3
A Bild einer Webcam auffangen Spiele- und Multimedia-Programmierung 20
G Ballerkennung aus einer Bilddatei Spiele- und Multimedia-Programmierung 24
B Generierung einer Wertetabelle aus einem Bild Spiele- und Multimedia-Programmierung 3
D Problem beim Öffnen einer PHP für eine Highscore Spiele- und Multimedia-Programmierung 5
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
B String zu Objekt einer eigenen Klasse casten Spiele- und Multimedia-Programmierung 13
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
F Simulation einer Magnetischen Flasche Spiele- und Multimedia-Programmierung 17
F Meine Aufgabe: Client-Server am Beispiel einer Implementation eines Tic-Tac-Toe Netzwerkspieles Spiele- und Multimedia-Programmierung 7
J Fehlverhalten einer Spielfigur Spiele- und Multimedia-Programmierung 7
N Jogl Probleme mit dem Buffer beim laden einer Textur Spiele- und Multimedia-Programmierung 2
M Das Frequenzspektrum einer WAV/MP3-Datei anzeigen Spiele- und Multimedia-Programmierung 6
M Rechteck erkennung innerhalb einer Matix Spiele- und Multimedia-Programmierung 4
S Problem beim laden eines Bildes in einer Methode Spiele- und Multimedia-Programmierung 14
E Pinball Abprall an einer schrägen Bande Spiele- und Multimedia-Programmierung 19
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
E Hilfe bei einer GUI Programmierung mit Graph Spiele- und Multimedia-Programmierung 30
A Tutorial für die Entwicklung einer Fussball-KI gesucht Spiele- und Multimedia-Programmierung 7
S Rotation relativ zur Rotation einer anderen Transform Group Spiele- und Multimedia-Programmierung 3
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
G Land aus einer Weltkarte selektieren Spiele- und Multimedia-Programmierung 10
D Kräftesimulation auf einer 2D-Oberfläche Spiele- und Multimedia-Programmierung 5
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
G Ermitteln eines Punktes in einer anderen TransformGroup Spiele- und Multimedia-Programmierung 2
N Background in Java3D ähnlich einer Skybox erzeugen Spiele- und Multimedia-Programmierung 5
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
F Darstellung einer tierischen Zelle Spiele- und Multimedia-Programmierung 3
S Text an einer Seite eines Cubes Spiele- und Multimedia-Programmierung 7
F Das SPiel ruckelt nach einer Zeit Spiele- und Multimedia-Programmierung 19
D wieder einer von anfang an. Spiele- und Multimedia-Programmierung 4
M Darstellung einer schwingenden Membran? Spiele- und Multimedia-Programmierung 23
raptorrs Teile einer CAD-Assembly Gruppe in JAVA animieren? Spiele- und Multimedia-Programmierung 3
K Beschriftung von Punkten in einer "Punktwolke" Spiele- und Multimedia-Programmierung 2
S Zur Laufzeit auf die Methode einer anderen Klasse zugreifen Spiele- und Multimedia-Programmierung 5

Ähnliche Java Themen

Neue Themen


Oben