Entwickler-Ecke
Sonstiges (Delphi) - Flächeninhalt von vierecken berechnen - aber wie?
Surface - Mo 19.11.07 13:53
Titel: Flächeninhalt von vierecken berechnen - aber wie?
Hallo,
ich hab ein ziemlich großes Problem. Für den Informatikunterricht soll ich in Verbindung mit einem genetischen Algorithmus den Flächeninhalt von 4ecken berechnen. Die Punkte werden dabei zufällig generiert und der Reihe nach verbunden. Die Flächenberechnung für normale 4ecke hab ich auch schon gelöst, siehe code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| function tform1.Fdreieck (xa,ya,xb,yb,xc,yc:real) : real; var la:real; lb:real; lc:real; gamma:extended; F:real; begin la := sqrt( sqr(xb-xc) + sqr(yb-yc) ); lb := sqrt( sqr(xa-xc) + sqr(ya-yc) ); lc := sqrt( sqr(xa-xb) + sqr(ya-yb) ); gamma:=RadToDeg(ArcCos((sqr(lc)-sqr(la)-sqr(lb))/(-2*la*lb))); F:=1/2*la*lb*sin(DegToRad(gamma)); result:= F; end;
function Flaeche (xa,ya,xb,yb,xc,yc,xd,yd):real; begin Fa:=Fdreieck (xa,ya,xb,yb,xc,yc); Fb:=Fdreieck (xa,ya,xc,yc,xd,yd); result:=Fa+Fb; end; |
Das Problem besteht nun darin, dass es sein kann das 4ecke entstehen, die, naja wie soll ich es beschreiben, eher 2 3ecke sind die im Schnittpunkt der Strecken AB und CD verbunden sind. Wo also die Punkte A (erster generierte Punkte) und B (zweite generierte Punkte) gegenüberliegen. Jetzt die Frage an euch, wie frage ich am besten ab, ob so ein 4eck vorliegt und wie berechne ich dessen Fläche?
Vielen Danke
Alexander
Moderiert von
Narses: Delphi-Tags hinzugefügt
Wonko - Mo 19.11.07 16:19
Hallo Alexander,
ob ein von Dir beschriebenes (wikipedia --> überschlagenes?) Viereck vorliegt, kannst Du testen, wie Du es selbst beschrieben hast: schneiden sich die Strecken AD und BC bzw. AB und CD. Am besten geht das möglicherweise über die klassische Schnittpunktberechnung zweier Geraden.
Die Flächenberechnung ist dann über die Flächen der beiden Dreiecke möglich, den Schnittpunkt erhältst Du ja aus dem ersten Teil.
Viel Erfolg dabei.
Delete - Mo 19.11.07 16:32
Mit der "Flächenberechnung nach Gauss - Elling" solltest du eigentlich die Fläche jedes beliebigen Vielecks berechnen können.
Surface - Mo 19.11.07 19:34
Danke erstmal für eure Antwort.
Zu Wonko kann ich nur sagen, dass sich die gegenüberliegenden Kanten (z.b. AD, BC) in der Ebene immer schneiden, wenn sie nicht parallel sind (was bei meinem Problem ein zufall wäre)
Und mit den Wikipediahilfen komm ich nicht weiter, weil ich zu den Stichpunkten nichts finde. Meiner Meinung nach sind diese 4ecke die dabei zustande kommen können gar keine 4ecke, sondern einfach nur 2 Dreiecke die sich in EINEM Punkt berühren. Meiner Meinung nach müssen 4ecke immer aus zwei 3ecken bestehen die eine gleiche KANTE haben und die Punkte müssen im Uhrzeigersinn sein. Das beides nicht der Fall hier, aber ich habs nicht in der Hand ..
Wonko - Di 20.11.07 09:40
Hallo,
vielleicht solltest Du klar die Begriffe [Kanten und Strecken] und [Geraden] trennen. Die einen sind endlich, die anderen nicht. Folglich schneiden sich nicht parallele Objekte der einen Art nicht immer, der anderen Art aber wohl (in der Ebene). Nur zur Berechnung des Schnittpunktes muss man auf das Konzept der Gerade zurückgreifen.
Weshalb ich zwei Kantenpaare zu betrachten vorschlug wird vielleicht mit dem angehangenen jpg deutlich.
Ob das wirklich Vierecke sind, solltest Du in einem autorisierten Nachschlagewerk finden. Im Bronstein steht:
Zitat: |
Im allgemeinen Viereck gibt es keine parallelen Seiten, d.h. alle vier Seiten sind verschieden lang. Verlaufen die Diagonalen vollständig im Innern des Vierecks, dann ist es ein konvexes Viereck , anderenfalls ein konkaves . Das allgemeine Viereck kann durch jeweils eine Diagonale in zwei Dreiecke zerlegt werden. |
Ich denke, überschlagene Vierecke werden da mit erfasst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!