Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

31

02.05.2016, 13:58

Was ich schrieb ist Blödsinn sorry ^^. nx und ox sind hier ja gleich, das ist ja eh quatsch.

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

32

02.05.2016, 17:54

Wir lagern das mal in PMs aus. Wenn der endgültige Algorithmus gefunden wurde oder wir Hilfe brauchen, dann melden wir uns. Falls das wem nicht passt sagt bescheid! ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Garzec

Alter Hase

  • »Garzec« ist der Autor dieses Themas

Beiträge: 693

Wohnort: Gießen

  • Private Nachricht senden

33

02.05.2016, 19:12

Ist genehmigt 8)

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

34

30.06.2016, 01:44

Weil wirs versprochen haben: Das Programm ist samt einer schönen GUI fertiggestellt. :) Kurze Erklärung und das Projekt folgen nun:

Das Backend kann zu jeder bliebigen geschlossenen 5-Punkte-Kette die Fläche (in FE) bestimmen. Das Polygon, das dabei entsteht muss nicht einfachsein - die Kanten dürfen sich überschneiden. Weil man die Fläche eines solchen Polygons aber nicht direkt bestimmen kann, zerlegt das Programm jedes Polygon in ein ebenes einfaches Polygonnetz. Dazu werden die Kanten miteinander geschnitten um alle Überschneidungen zu eliminieren. Siehe SchnittpunkteBerechnen().

Nach diesem Schritt liegt das Netz in einem ungerichteten Graphen vor: Jeder Punkt hat einen eindeutigen Namen, eine Position und kennt die Namen seiner direkten Nachbarn (Nachfolger). Siehe KnotenPunkt.

Bei einer Kette aus 5 Punkten kann mithilfe der Schnittpunktanzahl eindeutig festgelegt werden, wie die resultierenden Flächen in diesem Netz liegen müssen. Das ist in Bild A zu sehen. Weil das Programm zu jedem Knoten im Graphen weiß, ob er ein Schnittpunkt ist oder ein Ausgangspunkt, lassen sich die markanten Punkte im Netz leicht finden. Aus diesen markanten Punkten können relativ leicht die Flächen bestimmt werden. Siehe FindeTeilflächen().

Bevor Jemand fragt: Als Schnittpunkt sieht das Programm nur Punkte an, die NICHT auf den Enden der Strecken liegen, die geschnitten werden. Dadurch wird vermieden, dass die Formen für dieselbe Schnittpunktanzahl mehrdeutig sind. Außerdem sind ungünstige Fälle aufgetreten, in denen SchnittpunkteBerechnen() in endloser Interation versinkt...

Der Code ist komplett selbst geschrieben und erdacht! Keine einzige Zeile wurde irgendwo abgeschrieben. :) Zu Präsentationszwecken ist das Programm heftig kommentiert - nicht wundern. ;)

CeDoMain & Garzec wünschen viel Spaß beim Ausprobieren!
»CeDoMain« hat folgendes Bild angehängt:
  • Bild A.png
»CeDoMain« hat folgende Datei angehängt:
  • Projekt.zip (19,67 kB - 24 mal heruntergeladen - zuletzt: 27.04.2024, 03:28)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

35

30.06.2016, 06:49

Einfach drei Dreicke und addieren, da ist eigentlich kein größeres Problem...

Die negativen Flaechen werden automatisch negative Zahlen. Haengt natuerlich von dir ab, ob dieser "Flaecheninhalt" der ist, den du willst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

36

30.06.2016, 10:28

Die negativen Flaechen werden automatisch negative Zahlen. Haengt natuerlich von dir ab, ob dieser "Flaecheninhalt" der ist, den du willst.

Ist er iirc nicht, genau das war einer der ersten Vorschläge hier... ;)

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

37

30.06.2016, 13:46

Genau! Das Problem an dieser Strategie sind die Überschneidungen die auftreten können. Da bekommst du dann eine größere oder kleinere raus. Habe ich auch ausprobiert - klappt wirklich nicht.
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

38

30.06.2016, 23:10

Genau! Das Problem an dieser Strategie sind die Überschneidungen die auftreten können. Da bekommst du dann eine größere oder kleinere raus. Habe ich auch ausprobiert - klappt wirklich nicht.
Noe, die Ueberscheidungen sind eigentlich kein Problem. Da kommt dann genau das gleiche raus. Das Problem ist, das viele ihre Flaechen dann ploetzlich umdefinieren. Es ist dann auf einmal nicht mehr das 5gon gemeint, von dem die Flaeche zu bestimmen ist sondern irgeneine neue Figur die sich aus den alten Ecken und den neuen Schnittpunkten ergibt. Mathematisch gesehen ist das aber nicht sehr sinnvoll, denn man möchte eigentlich moeglichst viele Dinge logisch fortsetzen. Man kann es anders definieren, aber allgemein ist ein ngon ein n-1gon an das man noch ein Dreieck dranpappt. Die Flaeche eines Dreiecks kennt man, also definiert man die Flaeche eines ngons per Induktion aus Dreiecken. Das geht zum Beispiel auch für die Innenwinkelsumme. Daher macht es eigentlich keinen Sinn, die Definition ploetzlich zu wechseln. Oder Zum Beispiel ist von Dreiecken bekannt, das die Flaeche aller Dreiecke mit gleicher Grundseite und gleicher Hoehe darauf gleich ist und damit führt man den Flaecheninhalt alle Dreiecke auf rechtwinlige Dreiecke zurueck. Das laesst sich genau so auf ngone uebertragen und es funktioniert auch fuer Ueberschlagene, solange man dort eben nicht ploetzlich die Definition des Flaecheninhalts wechselt.

Zudem finde ich in dem Thread auch keine eindeutige Definition - angenommen ich habe ein nicht degeneriertes Dreieck ABC, und der Zufallsgenrator macht das 5gon ABCBC. Ist das Ergebnis jetzt 1x, 2x oder 3x wenn x der Flaecheninhalt von ABC ist? Laut dem ersten Post soll ja "jede Fläche, die durch die Schnittpunkte entsteht, [...] ausgegeben werden". Sind jetzt Punkte aufeinander Schnittpunkte? Die Strecken schneiden sich in unendlich vielen Punkten? Also unendlich viele Flaechen? Und die Flaechen, die ohne Schnittpunkte enstehen sollen ja eigentlich auch gezaehlt werden? Aber hier liegen die aufeinander, also mehrfach zaehlen?

CeDoMain

Alter Hase

Beiträge: 587

Wohnort: Ilmenau

Beruf: Student für Mechatronik

  • Private Nachricht senden

39

02.07.2016, 15:14

Das Problem ist, das viele ihre Flaechen dann ploetzlich umdefinieren.
Das ist für dich vielleicht ein Problem, das mag sein. Garzec hat aber die Aufgabe gestellt bekommen die Innenfläche auszurechnen und nicht irgendwelche anderen Flächen. Und was soll man sich dann darüber aufregen, wie sinnvoll sowas ist. Es wird programmiert und schluss. ;)

Zudem finde ich in dem Thread auch keine eindeutige Definition - angenommen ich habe ein nicht degeneriertes Dreieck ABC, und der Zufallsgenrator macht das 5gon ABCBC. Ist das Ergebnis jetzt 1x, 2x oder 3x wenn x der Flaecheninhalt von ABC ist? Laut dem ersten Post soll ja "jede Fläche, die durch die Schnittpunkte entsteht, [...] ausgegeben werden". Sind jetzt Punkte aufeinander Schnittpunkte? Die Strecken schneiden sich in unendlich vielen Punkten? Also unendlich viele Flaechen? Und die Flaechen, die ohne Schnittpunkte enstehen sollen ja eigentlich auch gezaehlt werden? Aber hier liegen die aufeinander, also mehrfach zaehlen?
Sorry, haben wir vielleicht nicht so ganz klargestellt: Es werden nur Flächen vorgegeben, deren 5 Punkte alle verschieden sind und nicht kollinear sind.

Hoffe jetzt ist die gewünschte Fläche und die Ausgangssituation eindeutig definiert. Habs leider nicht so mit den Fachbegriffen, weil ich sowas nie jemandem erklären muss und dann kann ich mir die nicht behalten. ;)
Mit freundlichem Gruß
CeDo
Discord: #6996 | Skype: cedomain

Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.

Werbeanzeige