Mathematik Problem
-
Hi!
Ich habe eine TPaintBox und habe dort eine etwa so aussehende Grafik: http://home.arcor.de/profeich/hlp.jpg
Also das schwarze und das grüne ist sichtbar gezeichnet.
Von den grünen Punkten besitze ich die X und Y Positionen. Insgesamt werden Sie später frei verschiebbar sein.Das rote Kreuz soll der Mauszeiger darstellen.
Nun möchte ich rausfinden an welcher Linie der Mauszeiger etwa am nähesten liegt.
Ich dachte mir von jeder Linie eine Gerade durch den Mauszeiger zu ziehen und die Länge zu messen. Jedoch weiss ich nicht wie man sowas möglichst schnell berechnet.
Sonst würde ich von jeder Linie den Winkel berechnen und dann 90 Grad in Richtung Mauszeiger gehen. Dann würd ich eine weitere Strecke mit dem Satz des Pythagoras messen. Jedoch woher weiss ich wo ich auf der Wandlinie (schwarz) die Gerade anfangen muss?
Weiss jemand ne möglichst schnelle Möglichkeit das zu machen.
Nehmen wir einfach mal als Beispiel folgende Struktur für die Grafik:
typedef struct { long X, Y; } wallstruct; wallstruct walls[5];
Danke im voraus
Benjamin
-
Ich bezweifle, dass es dafür eine BCB-spezifische Lösung gibt.
Verschoben nach "Rund um".
-
Hmmm, ich denke analytische Geometrie wäre hier zu aufwendig. Ich überleg' mal ob's nen einfachen Weg gibt den Abstand von einem Punkt zu einer Linie zu bestimmen...
-
Also wir können doch den oberen Punkt der Linie auf eine gedachte x-Achse setzen. Dann kennen wir noch Richtungsvektor und Aufvektor einer parallelen Linie (durch den Punkt). Wir kennen außerdem den Winkel zwischen x-Achse und Linie. Wenn wir jetzt den Punkt der zweiten Linie (verlängert) auf der x-Achse kennen würden könnten wir mit dem Winkel und dem Abstand der Nullpunkte den tatsächlichen Abstand bestimmen. Naja, kompliziert ausgedrückt. Könnte aber klappen...