Irgendwie verstehe ich die Winding-Rules bei Shapes nicht :(

sirbender

Top Contributor
WIND_NON_ZERO ist ja der Default wenn man einen GeneralPath erstellt.

Erstmal: in welchen Faellen macht es Sinn diesen Default zu aendern? Welchen Einfluss hat diese Winding-Rule auf den Pfad.

Ich hab mir jetzt den JavaDoc x-Mal durchgelesen aber so richtig versteh ich es alles nicht. Den grossen Zusammenhang. Ich verstehe schon, dass es wichtig ist festzustellen, wo beim Shape innen und aussen ist. Schon alleine um den Shape korrekt zu rendern oder "contains" Tests abzuziehen.

Wie aber spielt da die Winding-Rule rein? Kann man mit beiden Rules jeden moeglichen Pfad darstellen? Kann man gewisse Tests bzw. Rendering mit einer der beiden Rules schneller machen? Warum hat man beide Rules - ausser eine alleine wuerde nicht ausreichen?

vielen Dank fuer die Lernhilfe,
sb
 

Flown

Administrator
Mitarbeiter
Weil es Shapes gibt, wie hier im Beispiel gut zu sehen ist, auf zwei verschiedene Arten angesehen werden kann. Hier liefern beide Rules unterschiedliche Ergebnisse. Entscheidend für die Wahl der Rule ist der User, was er als innenliegend betrachtet.
 

sirbender

Top Contributor
Weil es Shapes gibt, wie hier im Beispiel gut zu sehen ist, auf zwei verschiedene Arten angesehen werden kann. Hier liefern beide Rules unterschiedliche Ergebnisse. Entscheidend für die Wahl der Rule ist der User, was er als innenliegend betrachtet.

Ja. Aber warum gibt es zwei Regeln? Man kann mit jeder Regel jeden Shape beschreiben, oder taeusche ich mich?

Sind die Algorithmen beider Rules gleich teuer?
 

Flown

Administrator
Mitarbeiter
Über die Kosten der Algorithmen gibt es in der Java-Doku keine Auskunft. Aber ich nehme an, dass dies Shapeabhängig ist.

Um es nochmal zu sagen: "Beide Regeln liefern bei bestimmten Shapes verschiedene Ergebnisse, ob ein Punkt inner- oder außerhalb liegt".

Siehe hier:

220px-Even-odd_and_non-zero_winding_fill_rules.png

Even-Odd-Rule links, Nonzero-Rule rechts!

Ebenfalls nochmal gut zu sehen ist das HIER.
 
Zuletzt bearbeitet:

sirbender

Top Contributor
Das mit den unterschiedlichen Ergebnissen habe ich schon kapiert.

Wie gesagt, meine Verwirrung ist im Moment, dass es beide gibt. Wahrscheinlich hat das historische Gruende und in Java will man beide Arten von Daten einlesen koennen und sie korrekt darstellen.

Eine Regel ist ja Standard wenn man z.B. ein GeneralPath generiert. Vielleicht sind alle Algorithmen mit dieser Regel schneller.
 

Ähnliche Java Themen

Neue Themen


Oben