Seite 1 von 1

winkel zischen 2 geraden berechnen (3punkte)

Verfasst: Sonntag 13. Januar 2013, 12:58
von sea-live

Code: Alles auswählen

import math

p1 = (-20.0, -20.0) 
p2 = (19.0,-20.0)
p3 = (20.0,-19.0)
try:
    m1 = (p2[1]-p1[1]) / (p2[0]-p1[0])
except:
    m1 = 0

try:    
    m2 = (p3[1]-p2[1]) / (p3[0]-p2[0])
except:
    m2 = 0  
print m1 ,m2
if (m1 == 0) and (m2 == 0):
    w = 90
else:
    try:
        w = math.degrees(math.atan(((m1+m2)/(1+m1*m2))))
        if (w > 180) or (w < -180):
            w = 90
    except:
        w = 90
print w  
hiermit könnt ihr den Winkel 2er geraden zueinander berechnen

Re: winkel zischen 2 geraden berechnen (3punkte)

Verfasst: Sonntag 13. Januar 2013, 14:11
von Sirius3
Hallo sea-live,

bei Deinen try-except-Blöcken willst Du eine Division durch 0 abfangen.
Dann schreib das auch so:

Code: Alles auswählen

try:
    m=a/b
except ZeroDivisionError:
    m=0
Schreibe das Programm als Funktion und einem Hauptteil,
der die Funktion für verschiedene Punkte aufruft.
Prüfe an ein paar Fällen, ob die Funktion dann das richtige Ergebnis liefert:
(0,20) (0, 0), (20, 0) -> 90
(0,20) (0, 0), (0, 20) -> 90 # falsch
(-20,0) (0, 0), (20, 0) -> 90 # falsch

(0,10) (0, 0), (10, 10) -> 45
(0,10) (0, 0), (10, -10) -> -45
(0,10) (0, 0), (-10, -10) -> 45
(0,10) (0, 0), (-10, 10) -> -45
Wie definierst Du den Winkel zwischen drei Punkten?

Wann tritt der Fall auf, das das Ergebnis von atan <-180 oder >180 ist?
Warum soll dann das Ergebnis 90 sein?

Re: winkel zischen 2 geraden berechnen (3punkte)

Verfasst: Sonntag 13. Januar 2013, 15:12
von sea-live
danke für die Rückantwort

ich bin leider da selber überfragt in Sachen Berechnung
jedenfalls ist das mal ein Ansatz vielleicht entwickelt sich ja da noch was