Herausfinden ob eine Linie geklickt wurde

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
fingeg
User
Beiträge: 1
Registriert: Mittwoch 17. Oktober 2018, 11:00

Mittwoch 17. Oktober 2018, 11:11

Hallo,

Ich habe ein Programm in dem einige Linien ein Netzwerk darstellen, dafür nutze ich PyQt4.
Jetzt möchte ich, dass man durch klicken auf eine Linie eine Aktion erhält.

Das heißt, ich habe den Punkt an dem geklickt wurde (A) und den start- und endpunkt einer Linie (B und C) und möchte jetzt herausfinden, ob sich Punkt A mit einem Maximalen Abstand von 10px von der Linie BC befindet.

Hat da jemand eine Idee, wie ich das ausrechnen kann oder gibt es da vielleicht sogar schon fertige Funktionen in PyQt?

Danke schonmal im Vorraus :)
L.G. Finn
Benutzeravatar
__blackjack__
User
Beiträge: 1450
Registriert: Samstag 2. Juni 2018, 10:21

Mittwoch 17. Oktober 2018, 13:28

@fingeg: Wenn man auf einen Klick auf eine Linie reagieren möchte, würde ich ja spontan sagen das man das über die entsprechenden Events auf dem `QGraphicsItem` erledigen kann, also im konkreten Fall dem `QGraphicsLineItem`.

Code: Alles auswählen

    **** COMMODORE 64 BASIC V2 ****
 64K RAM SYSTEM  38911 BASIC BYTES FREE
   CYBERPUNX RETRO REPLAY 64KB - 3.8P
READY.
█
__deets__
User
Beiträge: 3750
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 17. Oktober 2018, 15:22

Wenn das nicht gut genug geht, dann musst du von selbst ran, und das Skalarprodukt des Vektors A-C und des Kreuzproduktes/Normalenvektors (B-C) berechnen. Beide Vektoren muessen auf Einheitsvektor-Laenge normiert werden, und das Skalarprodukt gibt dir dann den Abstand in Pixeln.
Antworten