Hey
für ein Programm möchte ich mir selber eine Vektorfunktion bauen.
Ich möchte den Startpunkt, den Winkel und die Länge übergeben und das Programm soll mir eine Linie ziehen, welche vom Startpunkt zum berechneten Endpunkt geht.
Meine Frage ist nun, wie ich auf den Punkt komme, auf welchen der Vektor zeigt.
Bei 0° soll der Vektor senkrecht nach oben zeigen.
Zeichnerisch wäre das alles ja leicht zu lösen,
aber das kann ein Programm ja schlecht tun.
Vielen Dank.
Hendrik
Guten Morgen
Ich möchte den Startpunkt, den Winkel und die Länge übergeben
Startpunkt habe die Koordinaten x_start, y_start
Meine Frage ist nun, wie ich auf den Punkt komme, auf welchen
der Vektor zeigt.
Bei 0° soll der Vektor senkrecht nach oben zeigen.
x_ende=x_start+länge*sin(winkel)
y_ende=y_start+länge*cos(winkel)
Liebe Grüße.
Alex
Hallo!
Meine Frage ist nun, wie ich auf den Punkt komme, auf welchen
der Vektor zeigt.
Bei 0° soll der Vektor senkrecht nach oben zeigen.
Nennen wir die Achse nach rechts x-Achse und die nach oben y-Achse, dann gilt:
x = r * sin α
y = r * cos α
(r ist die Länge des Vektors in Pixeln).
Jetzt muss man nur noch mit den Vorzeichen aufpassen. So wie ich es geschrieben habe, läuft α im mathematisch positiven Sinne, also zeigt 90° nach links. Wenn man es andersherum haben möchte, schreibt man statt „α“ einfach „-α“.
Es ist zwar über 10 Jahre her, als ich zuletzt programmiert habe, aber ich vermute, dass es heute ähnlich ist, wie damals. Die Pixel werden von der linken oberen Ecke an durchnummeriert. Dann berechnet sich der Zielpunkt wie folgt:
Ziel_x = Start_x - x
Ziel_y = Start_y - y
Beispiel: Du möchtest vom Punkt (300,300) einen Vektor nach rechts oben zeichnen, der 100 Pixel lang ist:
Start_x = 300
Ziel_x = 300 - x = 300 - 100 * sin 315° = 371
(für y entsprechend)
(Ach ja, wahrscheinlich musst Du den Winkel in Bogenmaß umrechnen: φ = α*π/180. Das Endergebnis musst Du außerdem runden, um auf eine Integer-Zahl zu kommen).
Michael
Danke für die Antworten.
Ich hatte die Lösung inzwischen genauso.
Hatte da wohl einen Knoten im Kopf.