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

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

26.03.2010, 14:59

Fragen zu den Sutherland-Hodgman-Clipping Algorithmen

Das Grundprinzip vom Sutherland-and-Hodgman-Polygon-Clipping Algorithmus hab' ich ja schon verstanden.
Aber wie verbindet man, nach dem 'clippen', dann die Dreiecksverbindungen? Natürlich so, dass es richtig schnell ist, denn das soll der Algorithmus ja auch sein. Ist ja vor allem für SoftwareRenderer gedacht ^^

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.03.2010, 18:41

Für was genau willst du diesen Algo verwenden?
Wenn es nur Dreiecke sind gibts sicher bessere Methoden denn der Sutherland-Hodgman Algorithmus ist für allgemeine konkave Polygone gedacht und Dreiecke haben die nette Eigenschaft konvex zu sein, was vieles vereinfacht...

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

3

27.03.2010, 14:23

Und welchen kannst du mir dann anbieten?
In dem Buch "3D Grafik Programmierung" (quasi eine Anleitung für einen SoftwareRenderer) steht was von dem "Sutherland" Algorithmus.
Aber so ganz hab ich das in dem Buch halt nicht verstanden, deshalb frag' ich hier noch mal.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

27.03.2010, 14:46

Meint das Buch vielleicht den Cohen-Sutherland Algorithmus? Der clippt nur Linien in ein Recheck, ist aber wohl eben der bekannteste Clipping-Algorithmus schlechthin.

Wenn es dir nur darum geht Dreiecke (bzw. konvexe Polygone) in ein Rechteck zu clippen dann kannst du dir ja ganz einfach selber was überlegen...An jeder Seite des Rechtecks kann ein Eckpunkt entweder "drinnen" oder "draußen" sein. Wenn deine Vertices noch dazu im Uhrzeigersinn (oder Gegenuhrzeigersinn) angeordnet sind brauchst du nur von einem Vertex zum nächsten hüpfen und schauen ob der nächste auf der anderen Seite der Begrenzung ist und wenn ja den Schnittpunkt einfügen. Raus kommt dann die Liste der Eckpunkte vom geclippten Polygon (das wieder konvex ist). Zugegeben, das ist im Prinzip ja der Sutherland-Hodgman Algorithmus nur halt nicht in Allgemeiner Form. Mit dem Wissen dass du immer Dreiecke gegen ein Rechteck clippen willst kannst schon viel rausholen: Rechteckskanten sind immer entweder waagrecht oder senktrecht, damit werden die ganzen Tests trivial, Anzahl der Eckpunkte des Ergebnispolygons ist begrenzt (fixes Array verwenden, keine verlinkte Liste!), das Ergebnis bleibt immer zusammenhägend und konvex und ein konvexes Polygon kannst du trivial in Dreiecke zerlegen (einfach einen Fächer machen oder überleg dir sonstwas wie du mit der Liste der Eckpunkte im Uhrzeigersinn am einfachsten Dreiecke machst, da fällt einem schon was ein wenn man sich das mal aufmalt).

5

24.07.2011, 12:11

Ja völlig richtig, ich habe den cohen sutherland algorithmus verwendet und nicht den sutherland hodgman. Man kommt da schnell durcheinander wenn man sich seine sourcen zusammengoogelt, muss mir evtl. mal ein Buch kaufen. Ich denke, ich werde es nun hinbekommen. Danke.

6

24.07.2011, 12:13

Ach herje, ich dachte ich wäre in meinem eigenen thread gelandet, aber es passt eben auch ganz genau zu meiner Fragestellung: Verständnisfrage zu cohen sutherland algorithmus

Werbeanzeige