Forum: PC-Programmierung Paint Polygon ausmalen


von Alexander M. (a_lexander)


Lesenswert?

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 :)

von Εrnst B. (ernst)


Lesenswert?

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.

von Alexander M. (a_lexander)


Lesenswert?

Ε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!

von Bernd S. (bernds1)


Lesenswert?

Ε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?

von Εrnst B. (ernst)


Lesenswert?

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.

von Bernd S. (bernds1)


Lesenswert?

Stimmt. Hast recht :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.