Python :: Aufgabe #350 :: Lösung #1

4 Lösungen Lösungen öffentlich
#350

Schnittpunkt zweier Geraden endlicher Länge

Fortgeschrittener - Python von hollst - 20.04.2021 um 10:25 Uhr
In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig vier unterschiedliche Punkte P1, P2, P3 und P4. Gedanklich verbinde man P1 und P2 mit einer geraden Linie L12 sowie P3 und P4 mit einer geraden Linie L34.

Man schreibe eine Funktion, die als Rückgabewert ausgibt, ob sich L12 und L34 schneiden in Abhändigkeit von den Anfangs-/Endpunkten P1 ... P4.

Viel Spaß!
#1
3 Kommentare
vote_ok
von eisheiliger (3750 Punkte) - 21.04.2021 um 15:24 Uhr
Quellcode ausblenden Python-Code

"""
#350: Schnittpunkt zweier Geraden endlicher Länge
In der unendlich ausgedehnten euklidischen 2D-Eben wähle man zufällig vier unterschiedliche Punkte P1, P2, P3 und P4.
Gedanklich verbinde man P1 und P2 mit einer geraden Linie L12 sowie P3 und P4 mit einer geraden Linie L34. Man schreibe
eine Funktion, die als Rückgabewert ausgibt, ob sich L12 und L34 schneiden in Abhändigkeit von den Anfangs-/Endpunkten
P1 ... P4.
"""


def prf_schnittp(p1, p2, p3, p4):
    steig_a = (p2[1] - p1[1]) / (p2[0] - p1[0])
    steig_b = (p4[1] - p3[1]) / (p4[0] - p3[0])
    schni_a = p1[1] - steig_a * p1[0]
    schni_b = p3[1] - steig_b * p3[0]

    if steig_a == steig_b:
        print("Der Verlauf ist parallel")
        return None
    x = (schni_b - schni_a) / (steig_a - steig_b)
    y = steig_a * x + schni_a
    print("Der Schnittpunkt liegt bei (x y):", x, y)


prf_schnittp([5, 1], [1, 5], [2, 2], [5, 5])
prf_schnittp([5, 1], [1, 5], [6, 2], [2, 6])


Kommentare:

AlexGroeg

Punkte: 2010


43 Lösungen
7 Kommentare

#1
13.10.2021 um 15:29 Uhr
Hallo,
berechnet diese Lösung denn nicht nur den Schnittpunkt zweier Geraden unendlicher Länge aus?

prf_schnittp([5, 1], [1, 5], [4, 4], [5, 5]) schneiden sich nicht.
post_arrow
713 0

eisheiliger

Punkte: 3750

30 Aufgaben
65 Lösungen
2 Kommentare

#2
13.10.2021 um 17:09 Uhr
Danke für den Hinweis. Die Aufgabenstellung gab 2 Geraden mit einer endlichen Länge vor. Für die korrekte Lösung der Aufgabe muss im Script noch der Gültigkeitsbereich beider Geraden gegen den berechneten Schnittpunkt abgeglichen werden.
post_arrow
716 0

eisheiliger

Punkte: 3750

30 Aufgaben
65 Lösungen
2 Kommentare

#3
13.10.2021 um 18:48 Uhr
Und so stelle ich mir die Prüfroutine vor:

def prf_area(p1x, p1y, p2x, p2y, sx, sy):
if min(p1x, p2x) <= sx and max(p1x, p2x) >= sx and min(p1y, p2y) <= sy and max(p1y, p2y) >= sy:
return True


print(prf_area(1, 5, 5, 1, 3, 3))
print(prf_area(2, 2, 5, 5, 3, 3))
print(prf_area(4, 4, 5, 5, 3, 3))
post_arrow
717 0
Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1988108

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.