winkel zischen 2 geraden berechnen (3punkte)

Code-Stücke können hier veröffentlicht werden.
Antworten
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

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
Zuletzt geändert von Anonymous am Sonntag 13. Januar 2013, 13:01, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

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?
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

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
Antworten