Autor Beitrag
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mo 06.06.16 14:25 
Hey @ll,

ich habe eine PathGeometry wie hier (links), welche "invertiert" wird (rechts):
geometry invertiert

Da das Ganze eine einzelne Geometrie ist und ich die einzelnen Flächen seperat brauche, muss ich diese irgendwie trennen. Eine PathGeometry besteht ja aus PathFigure-Elementen. Also habe ich zuerst versucht jede PathFigure in eine neue PathGeometry-Instanz zu packen.

So sehen die einzelnen PathFigure-Elemente aus:
figures
Das Problem ist nur, dass eine PathFigure eine Kontur darstellt und somit nicht die Fläche, sondern nur ihre Kante definiert. Das ganze wäre nicht weiter schlimm, wenn ich ermitteln könnte, ob ein PathFigure-Objekt gerade additiv oder subtraktiv angewandt wird, aber ich finde keine Möglichkeit dies zu ermitteln.

Das Folgeproblem is nämlich, dass bei den Hittests (mittles Geometry.FillContains(...)) der getrennten PathFigure-Objekten (die ja jetzt jeweils in einer PathFigure verpackt sind) auch die subtraktiven Elemente anspringen und mir false positives liefern, was für mein Vorhaben tödlich ist...

Kann ich irgendwie ermittlen, ob eine PathFigure in einer PathGeometry gerade additiv oder subtraktiv angewandt wird?

// Nachtrag
Habe gerade ein Crosspost auf Stackoverflow eröffnet.
Einloggen, um Attachments anzusehen!
_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler


Zuletzt bearbeitet von C# am Di 07.06.16 09:40, insgesamt 2-mal bearbeitet
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Mo 06.06.16 19:13 
So als einfacher Ansatz: Wenn sich die Konturen nicht überschneiden sollte die Anzahl der getroffenen Objekte die Info liefern. Nur bei einer ungerade Anzahl an Treffern ist es ein "positiver Treffer".

Wie komplex werden deine Pfade?
C# Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mo 06.06.16 23:20 
Überschneiden werden sich die Figuren nie. Jedoch möchte ich so viele Hittest vermeiden wie möglich. Von der Komplexität können es schon mal 20 bis 30 Figuren sein, jeweils mit ca. 800 Punkten im Schnitt. Können aber auch mal 3000 oder mehr sein, desshalb ist das Zählen der Hittests nicht gerade optimal.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler