Entwickler-Ecke
Multimedia / Grafik - Die Punkte die auf einer Linie liegen...
Crazy K - Mo 24.03.03 13:06
Titel: Die Punkte die auf einer Linie liegen...
Hi,
Könnt ihr mir vielleicht bei einem Problem helfen.
Wenn ich eine einfache simple Linie zeichne,
canvas.LineTo(X,Y);
Wie kann ich dann ermitten, welche Punkte auf der Linie liegen. Habt ihr da eine Idee. Ich danke für jeden Vorschlag!
Crazy K
UGrohne - Mo 24.03.03 13:19
Du stellst eine Geradengleichung auf (wie in Geometrie) nach der Form y:=m*x+c und zwar mit der Punkt-Steigungsform (m=(x-x1)/(y-y1)) und durch einsetzen des Ursprungspunktes, um c auszurechnen. Dann kannst Du die zu prüfenden Koordinaten einsetzen und wenn sich eine wahre GLeichung ergibt, ist der Punkt auf der Linie. Ein Funktionkönnte wie folgt aussehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function punktauflinie(x1,y1,x2,y2,x,y:double):Boolean; var m,c:double; begin Result:=False; m:=(x2-x1)/(y2-y1); c:=y1/(m*x1); if y=m*x+c then Result:=True; end; |
Hab das jetzt nur so hingeschrieben, ich hoffe, das funktioniert.
Gruß
EDIT:X1/Y1 und X2/Y2 sind zwei sichere Punkte auf der Geraden, also am besten die Daten von MoveTo und LineTo
Crazy K - Mo 24.03.03 13:33
Schönen dank, das sollte wirklich funktionieren. Ich erinnere mich dunkel an meinen Matheunterricht...
THX Crazy K
Andreas Pfau - Mo 24.03.03 18:36
Sollte es nicht funktionieren (hab's nicht probiert), nimm LineDDA() (Win-API), die macht nämlich nix anderes. Läuft über eine Callback, so kannst Du z.B. einen Array mit dem Koordinaten füllen. Der Unterschied: LineDDA() sagt dir, welche Punkte du zeichnen musst, ist aber ungeeginet für Hover-Effekte ("ist-cursor-auf-der-linie"). Die Methode von UGrohne sagt die, ob ein Punkt drauf ist, z.B. für Hover-Effekte, aber zum Zeichnen ungeeignet.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!