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

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: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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`.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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