pfeilspitze an einem vektor < Vektoren < Lin. Algebra/Vektor < Oberstufe < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:16 Di 01.07.2008 | Autor: | Starbuck |
Hi,
ich hab folgendes Problem. Ich hab 2 Punkte in der Ebene die ein Strecke bzw. einen Vektor aufspannen. Ans Ende eines Punktes möchte ich eine genormte Pfeilspitze anbringen.
Dazu benötige ich die Eckpunkte der Pfeilspitze.
Die Schenkel des Pfeils könnten z.B. 1 lang sein und der Winkel zwischen den Schenkeln könnte 90 Grad sein. Ich suche einen möglichst simplen Algorithmus um die Eckpunkte einer einfachen Pfeilspitze zu berechnen.
Ich hoffe ihr konntet mir einigermaßen folgen denn ich weiß selbst nicht so recht wie ich das Problem genau formulieren soll. Vielleicht habt ihr ja eine Lösung parat?
Vielen Dank im voraus und beste Grüße
Felix.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:29 Di 01.07.2008 | Autor: | Herby |
Hallo Starbuck,
und ein recht herzliches
wenn du nachträglich feststellst, dass deine Frage evtl. im falschen Forum gelandet ist, dann schreibe uns bitte eine Mitteilung und wir verschieben die Frage entsprechend. Keine Doppelpostings.
Viel Spaß hier im Forum
Liebe Grüße
Herby
ps: ich habe die andere Frage daher gelöscht
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:32 Di 01.07.2008 | Autor: | abakus |
> Hi,
>
> ich hab folgendes Problem. Ich hab 2 Punkte in der Ebene
> die ein Strecke bzw. einen Vektor aufspannen. Ans Ende
> eines Punktes möchte ich eine genormte Pfeilspitze
> anbringen.
> Dazu benötige ich die Eckpunkte der Pfeilspitze.
>
> Die Schenkel des Pfeils könnten z.B. 1 lang sein und der
> Winkel zwischen den Schenkeln könnte 90 Grad sein. Ich
> suche einen möglichst simplen Algorithmus um die Eckpunkte
> einer einfachen Pfeilspitze zu berechnen.
Hallo, so wie du das beschreibst, soll die Pfeilspitze ein ausgemaltes gleichschenklig-rechtwinkliges Dreieck sein.
Gehe doch einfach von Endpunkt der Strecke ein wenig zurück ins Innere der Strecke und von dort aus senkrecht nach linke bzw. nach rechts weg. Schon hast du die beiden Eckpunkte.
Details:
1) Wenn die Strecke den Anstieg m hat, dann hat die Senkrechte dazu den Anstieg -1/m. Wenn die Strecke den Richtugsvektor [mm] \vektor{x \\ y} [/mm] hat, dann hat die Senkrechte dazu den Richtungsvektor [mm] \vektor{-y \\x}.
[/mm]
2) Um bei jedem Pfeil das gleiche "Stück zurück ins Innere der Strecke" zu gehen, musst du den Richtungsvektor zunächst normieren.
3) Ein Pfeil mit rechtwinkliger Spitze sieht plump aus. Gehe also nicht ganz so weit von der Strecke weg.
Gruß Abakus
>
> Ich hoffe ihr konntet mir einigermaßen folgen denn ich weiß
> selbst nicht so recht wie ich das Problem genau formulieren
> soll. Vielleicht habt ihr ja eine Lösung parat?
>
> Vielen Dank im voraus und beste Grüße
>
> Felix.
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
>
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 08:51 Mi 02.07.2008 | Autor: | Starbuck |
Guten Morgen.
Erstmal Danke für die schnelle Antwort. Die Lösung ist erstmal einleuchtend aber auch relativ komplex. Gibt es nicht noch was einfacheres? Mein Problem ist nämlich, dass ich das ganze in einer Programmiersprache umsetzen muss. Wobei ich nur die beiden Eckpunkte des gleichschnekligen Dreiecks benötige, das die Pfeilspitze ausmacht. Wie die Spitze am Ende aussieht, ob ausgemalt oder nicht, ist erstmal egal.
Beste Grüße und einen schönen Tag!
Felix
|
|
|
|
|
Guten Morgen.
> Die Lösung ist erstmal einleuchtend aber auch relativ komplex.
> Gibt es nicht noch was einfacheres? Mein Problem ist nämlich,
> dass ich das ganze in einer Programmiersprache umsetzen muss.
> Wobei ich nur die beiden Eckpunkte des gleichschenkligen
> Dreiecks benötige, das die Pfeilspitze ausmacht. Wie die
> Spitze am Ende aussieht, ob ausgemalt oder nicht, ist
> erstmal egal.
Hallo Felix,
es ist eindeutig eine geometrische Aufgabe, wie klein auch
deine Pfeilspitzen sein mögen; also kommt man um die
Geometrie nicht herum (falls es in deiner Programmier-
umgebung keine eingebaute Routine gibt, die Pfeile
darstellt). D.h. es gilt eine kleine Prozedur Spitze(A,B:punkt)
zu entwerfen, die die Strecke [mm] \overline{AB} [/mm] mit der
Spitze versieht. Jetzt kommt es drauf an, wie du die Punkte
im Programm darstellst. Falls du die sie z.B. durch komplexe
Zahlen darstellst, gäbe es eine recht elegante Lösung ...
Gruß al-Chw.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 09:33 Mi 02.07.2008 | Autor: | Starbuck |
Hallo Al-Chwarizmi,
also die Punkte sind Koordinatenpaare (x,y) vom Typ Float. Mit komplexen Zahlen sieht es eher schlecht aus. Allein aus Interesse würde ich deine Lösung gerne hören aber ich suche eigentlich nach einem eleganten Lösungsweg ohne komplexe Zahlen.
Der Weg über die Normierung von Vektoren ist schon nicht schlecht. Wenn es da nichts effizienteres gibt. würde ich das umsetzen.
Grüße
Felix
|
|
|
|
|
> also die Punkte sind Koordinatenpaare (x,y) vom Typ Float.
> Mit komplexen Zahlen sieht es eher schlecht aus. Allein aus
> Interesse würde ich deine Lösung gerne hören aber ich suche
> eigentlich nach einem eleganten Lösungsweg ohne komplexe
> Zahlen.
>
O.K., die Drehungen kann man natürlich auch reell
darstellen. Also sei z.B. [mm] \vec{v}=\overrightarrow{AB}=\vektor{v_x\\v_y}
[/mm]
und e und [mm] \varepsilon [/mm] wie im anderen posting definiert.
Dann ist
[mm] \overrightarrow{BC}=\bruch{e}{|\vec{v}|}*D_{\varphi}*\vec{v}
[/mm]
mit der Drehmatrix [mm] D_{\varphi} [/mm] mit dem Winkel [mm] \varphi=\pi-\varepsilon:
[/mm]
[mm] D_{\varphi}=\pmat{ cos \varphi & -sin \varphi \\ sin \varphi & cos \varphi }=\pmat{ -cos \varepsilon & -sin \varepsilon \\ sin \varepsilon & -cos \varepsilon }
[/mm]
Mit den Abkürzungen c=cos [mm] \varepsilon [/mm] und s=sin [mm] \varepsilon [/mm] komme
ich auf:
[mm] \overrightarrow{BC}=\bruch{e}{|\vec{v}|}*\vektor{-c*v_x-s*v_y\\s*v_x-c*v_y}
[/mm]
Um [mm] \overrightarrow{BD} [/mm] zu erhalten, können wir einfach [mm] \varepsilon [/mm] durch [mm] -\varepsilon
[/mm]
ersetzen, oder:
[mm] \overrightarrow{BD}=\bruch{e}{|\vec{v}|}*\vektor{-c*v_x+s*v_y\\-s*v_x-c*v_y}
[/mm]
(ohne Gewähr - vielleicht gibt sich jemand die Mühe, alles nachzurechnen...)
LG al-Chwarizmi
|
|
|
|
|
Hi Felix,
Wenn [m]\overrightarrow{AB}[/m] dein Vektor ist und das Dreieck
[m]\ BCD[/m] die Pfeilspitze darstellen soll, mit [m]\ \overline{BC}=\overline{BD}=e[/m]
und [m]\ \angle{CBD}=2*\varepsilon[/m] , dann kannst du die Vektoren
[m]\ \overrightarrow{BC}[/m] und [m]\ \overrightarrow{BD}[/m] aus dem Vektor [m]\ \vec{v}=\overrightarrow{AB}[/m]
berechnen, indem du diesen auf die Länge e reduzierst und
um die Winkel [m]\ 180°-\varepsilon[/m] bzw. [m]\ \varepsilon-180°[/m] drehst !
Die Drehungen würden im Komplexen als eine Multiplikation
mit [m]\ \big{e^{±i*(\pi-\varepsilon)}}[/m] dargestellt.
LG
|
|
|
|