Linienvergleich nach Winkel < Algorithmen < Schule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 02:16 Mi 07.06.2006 | Autor: | merion |
Aufgabe | Bestimme ob zwei Strecken parallel innerhalb einer Toleranz x sind. |
Ich hoffe ich stelle meine erste Frage an der richtigen Stelle und in der richtigen Form...
Es geht darum festzustellen ob zwei Linien parallel oder zumindest ähnlich gerichtet sind. Die Ähnlichkeit wird durch die Variable x festgelegt. Verglichen werden soll der Winkel zur X-Achse in positiver X-Richtung, d.h. die Winkel zur X-Achse werden aus der Steigung berechnet.
Ich habe nun versucht den Winkel von Strecke A von dem von Strecke B zu subtrahieren um zu testen ob der Betrag des Ergebnisses kleiner x ist - allerdings habe ich schnell Fälle gefunden bei denen das nicht zutrifft.
(Bsp. x= 30°; a=90; b=-70° -> |90° - - 70°| = 160° > x - schon passt es nicht, obwohl der Winkel der die beiden Linien unterscheidet ja nur 20° ist)
Da muss es doch eine einfache Lösung für so einen Linienvergleich geben!
Das kommt davon wenn man in der Schule nie aufgepasst hat - muss man sich nun im Internet blamieren!
Ich hoffe das war verständlich - ansonsten stehe ich für Rückfragen natürlich jeder Zeit zur Verfügung.
Achja: Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:17 Mi 07.06.2006 | Autor: | giskard |
Hallo merion!
versuchs doch mal, wenn du die Linien als Vektoren auffasst.
also du hättest zB. die x-achse als [mm] \vektor{1 \\ 0} [/mm] und eine Linie mit der steigung 0,1 : [mm] \vektor{10 \\ 1}
[/mm]
wenn du dann einfach das skalarprodukt der beiden vektoren bildest, und das dann durch die länge der vektoren teilst, bekommst du einen Wert zwischen 0 und 1. je näher dieser an der 1 liegt, desto mehr ähneln sich die Winkel der beiden linien, je näher an der 0, desto näher am rechten Winkel. achja, vom skalarprodukt ist der betrag zu nehmen.
also:
| [mm] \vektor{1 \\ 0} \circ \vektor{10 \\ 1} [/mm] | / ( | [mm] \vektor{1 \\ 0} [/mm] | [mm] \* [/mm] | [mm] \vektor{10 \\ 1} [/mm] | )
die Länge der vektoren kannst du über pythagoras bestimmen.
also im fall des beispiels:
| (1*10 + 0*1) | / ( [mm] \wurzel{1² + 0²} \* \wurzel{10² + 1²} [/mm] )
ich hoffe, das hilft dir weiter...
|
|
|
|