Paint Polygon ausmalen

OP #7220296
Hallo,

Hat jemand eine Idee, nach welchem Algorithmus Paint die Polygone 
ausmalt.

Ich hätte da folgenden gefunden:
https://de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan

Gibt es da vielleicht noch effektivere Verfahren :), hier muss ja jeder 
Pixel einzeln überprüft werden?

Danke :)
#7220315
Alexander M. schrieb:
> hier muss ja jeder
> Pixel einzeln überprüft werden?

Nicht unbedingt. Du kannst ja z.B. zeilenweise drüberlaufen, und 
innerhalb jeder Zeile die Schnittpunkte mit dem Polygon bestimmen. 
Zwischen diesen ändert sich nix, also kannst du immer einen ganzen 
Schwung nebeneinanderliegender Pixel gleich behandeln.
OP #7220333
Εrnst B. schrieb:
> Alexander M. schrieb:
>> hier muss ja jeder
>> Pixel einzeln überprüft werden?
>
> Nicht unbedingt. Du kannst ja z.B. zeilenweise drüberlaufen, und
> innerhalb jeder Zeile die Schnittpunkte mit dem Polygon bestimmen.
> Zwischen diesen ändert sich nix, also kannst du immer einen ganzen
> Schwung nebeneinanderliegender Pixel gleich behandeln.

Oh guter Punkt. Danke!
#7220348
Εrnst B. schrieb:
> Nicht unbedingt. Du kannst ja z.B. zeilenweise drüberlaufen, und
> innerhalb jeder Zeile die Schnittpunkte mit dem Polygon bestimmen.

Es kann doch passieren, dass es kein regelmäßiges Polygon ist und dann 
kann es auf jeder Zeile passieren, dass es jeweils mehrere Schnittpunkte 
gibt, sodass die Pixelzeile aus mehreren Segmenten besteht.
Sehe ich das richtig?
#7220358
Bernd S. schrieb:
> gibt, sodass die Pixelzeile aus mehreren Segmenten besteht.
> Sehe ich das richtig?

ja. Dann gibt's mehrere Schnittpunkte. Diese lassen sich aber recht 
einfach finden, weil die "Test-Gerade" schön waagerecht mit konstantem y 
läuft.

Der Check ob es einen Schnittpunkt zu einem Polygon-Segment gibt, ist 
fix mit ein paar "<" und ">"-Vergleichen erledigt, nur das genaue 
Berechnen der x-Koordinate braucht dann Division/Multiplikation.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.