Fläche eines Polygons mit Teildreiecken berechnen
Verfasst: Mittwoch 24. April 2019, 09:47
Hallo,
ich bin gerade am verzweifeln mit einer meiner Hausaufgaben und würde mich sehr freuen, wenn ich hier vielleicht einen neuen Gedankenanstoß finden könnte.
Die Aufgabe fordert eine Funktion convex_polygon der als Argumente Tupel von n Eckpunkten in Form von ((x1,y1),(x2,y2),...) übergeben werden. Dann werden n-2 Teildreiecke gebildet, deren summierte Flächen der Fläche des Polygon entsprechen.
Folgenden Code habe ich schon geschrieben:
WIe könnte man vorgehen, damit:
1. Man der Funktion min. 4 Tupel (x,y) übergeben kann und diese dann der "Reihe" nach ordnet?
2. daraus resultierend: das Programm genau weiß, welche Strecken zwischen den Punkten er der triangle_area-Funktion gibt, um die richtigen Flächen zu berechnen?
Um das kurz klarzustellen: Ich erwarte nicht, dass ihr meine Hausaufgaben löst. Ich brauche nur einen Tipp, um die Lösung dann selber hinzubekommen.
ich bin gerade am verzweifeln mit einer meiner Hausaufgaben und würde mich sehr freuen, wenn ich hier vielleicht einen neuen Gedankenanstoß finden könnte.
Die Aufgabe fordert eine Funktion convex_polygon der als Argumente Tupel von n Eckpunkten in Form von ((x1,y1),(x2,y2),...) übergeben werden. Dann werden n-2 Teildreiecke gebildet, deren summierte Flächen der Fläche des Polygon entsprechen.
Folgenden Code habe ich schon geschrieben:
Code: Alles auswählen
import math
def triangle_area(a, b, c): # Initialisierung der triangle_area-Funktion
if max(a,b,c)<(a+b+c-max(a,b,c)):
s = (a + b + c)/2
area = ((s * (s-a)*(s-b)*(s-c))**0.5)
return area
else:
return False
def distance(p1,p2): # Gibt den Abstand zwischen zwei Punkten (x1,y1) und (x2,y2) aus.
return (math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2))
pointNumber = int(input('Wie viele Punkte möchtest du eingeben?'))
points = [] # Liste für die Punkte-Tupel. Sieht am Ende bspw. so aus: [(1,1),(3,4),(1,5),(2,6)]
for i in range(0,pointNumber): # Eingabe der Punkte als einzelne x oder y Werte, also nicht in Tupeln
addPointX = int(input('Bitte x von Punkt eingeben'))
addPointY = int(input('Bitte y vom Punkt eingeben'))
addPoint = (addPointX, addPointY)
points.append(addPoint)
# Folgender Code würde auch den Flächeninhalt ausgeben, aber nicht auf die geforderte Weise mit Teildreiecken, sondern mit der Gaussschen Trapezformel.
"""
values = input("Koordinaten in Form x1,y1,x2,y1,... eingeben: ")
x = tuple(map(int, values.split(",")))
for i in range(1,len(x)):
A = ((x[1] + x[3])*(x[0] - x[2])+(x[3] + x[5])*(x[2] - x[4])+(x[5] + x[7])*(x[4]-x[6])+(x[7]+x[1])*(x[6]-x[0]))/2
print(A)
"""
1. Man der Funktion min. 4 Tupel (x,y) übergeben kann und diese dann der "Reihe" nach ordnet?
2. daraus resultierend: das Programm genau weiß, welche Strecken zwischen den Punkten er der triangle_area-Funktion gibt, um die richtigen Flächen zu berechnen?
Um das kurz klarzustellen: Ich erwarte nicht, dass ihr meine Hausaufgaben löst. Ich brauche nur einen Tipp, um die Lösung dann selber hinzubekommen.