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

1

10.09.2014, 14:14

objekt in Dreiecke zerlegen...?

hallo,
ich habe 3,4,5,6,7 oder 10 Ecke Objekte z.B.

http://4.bp.blogspot.com/_rvcRyKB7iRE/TJ…+Tennisball.png

http://liezebra.files.wordpress.com/2010/05/rose_8-eck.png

http://www.home.hs-karlsruhe.de/~pach000…aben/n-ecke.jpg

Jetzt will ich die Objekte in Dreicke zerlegen und in (Java)opengl darstellen.Dazu muss ich noch sagen, die Schenkel sind teilweise unterschidlich lang, sowie die Winkel z.b. 200°, 150°, 35°....und so weiter.

Die Daten bekomme ich von einer Datenbank.

Mit geht es nur um Rechenweg/Strategie.Opengl ist nicht das Problem.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

10.09.2014, 14:24

Such mal bei Google nach "Polygon triangulation", da solltest du fündig werden.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

10.09.2014, 14:32

Wenn es nur um konvexe Polygone geht, kann man diese am einfachsten direkt als Triangle Fan rendern. Ansonsten werf ich mal das Stichwort Ear Clipping in den Raum...

4

10.09.2014, 14:46

Sind die Polygone konvex, wie hier in den Bildern alle es sind, ist es recht leicht.
Du nimmst dafür einfach das Drawing Primitive GL_TRIANGLE_FAN, suchst dir den Punkt links und gehst dann einfach das Polygon ab.
Neueres OpenGL kennt übrigens sogar GL_POLYGON, doch ist das seeeehr langsam. Grfikkarten sind eben für Dreiecke optimiert.
Also nehmen wir mal das Fünfeck.

(Link)

Du fängst bei E an, gehst dann zu A, B, C und dann schließlich D.
Das geht für alle von dir gezeigten Objekte.
Sind sie konkav, wirds komplexer. Mit Löchern gern noch komplexer. ;)
Ich empfehle dafür einfach 'ne Lib zu benutzen. Aus Übungszwecken kann man das gern natürlich auch mal selbst probieren!
Zum Beispiel diese oder diese....

MfG
Check

EDIT: Zu spät :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Checkmateing« (10.09.2014, 15:15)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

10.09.2014, 14:55

Neueres OpenGL kennt übrigens sogar GL_POLYGON

Das gibt's schon seit OpenGL 1.0.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

10.09.2014, 15:08

Eigentlich ist es umgekehrt; GL_POLYGON gibt's in aktuellem OpenGL nicht mehr... ;)

7

10.09.2014, 17:55

Den Ear Clipping Algorithmus hatte ich mal hier implementiert.
https://github.com/anti-freak/SimpleLib/…try/algorithm.h
Zeile 78 gehts los. Vll kannste ja was mit anfangen.

8

13.09.2014, 19:52

danke an euch all.
leider kann es bei den Formen vorkommen, dass Linien sich schneiden, indem man das Objekt zerlegt.

Stellt euch vor, Es sind Leinien von Punkt A -B -C -D- E- F- G-h. und h ist wiederum mit A verbunden.

Meine Idee:
Vorsetzung der Winkel darf nicht größer sein wie 180°
1.Schritt:
Mein Java Prog versucht A B C zu verbinden und es wird keine Linie geschnitten, dann fliegt B raus.
2.Schritt:
Mein Java Prog versucht A C D zu verbinden und es wird keine Linie geschnitten, dann fliegt C raus.
3.Schritt:
Mein Java Prog versucht A D E zu verbinden und es wird eine Linie geschnitten, gehe zum nächten Punkt.
4.SChritt:
Mein Java Prog versucht A E F zu verbinden und es wird keine Linie geschnitten, dann fliegt E raus.

Das Spiel mache ich so lange bis ich nur ein Dreieck übrig bleibt.

Bin für jede Kretik bereit :-)

9

14.09.2014, 06:36

Liest du auch die Antworten? Checkmates Zeichnung stellt genau dein Verfahren dar. Ob du das ganze nun als trianglestrip erstellst, oder als triangle list ist dabei von der Methode her völlig egal.

Bei konkaven Formen schneidet sich dann auch nichts. Wenn du die Begriffe konkave und konvexe Form nicht kennst, Google sie bitte. Dafür ist Google da.
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

10

14.09.2014, 18:44

google habe ich schon benützt :-)
Ich finde Nur Seiten , wenn Fall balbla eintritt, dann verfahre so...

Wenn ich ein Punkt z.B. A nehme und von dort aus alle anderen Punkte verbinden kann, dann ist es einfach.
Aber nach welcher Strategie soll da so vorgehen.

Ich gehe mal von einem Extremfall aus:
http://www.phyrra.net63.net/Worklog/WL_12_PolygonDecomp.png

Werbeanzeige