DMUG-Archiv 2010

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: AW: Sortieren von geschlossenen Konturen

Hallo Stefan,

bitte noch zur Klarstellung der Aufgabe: Sei der input

(* Beispiel *)
p1 = {1, 0}; p2 = {3, 0}; p3 = {3, 1}; p4 = {2, 2};
p5 = {4, 2}; p6 = {3, 2.5}; p7 = {3, 3}; p8 = {1, 3};
p9 = {1, 2};
l1 = {p1, p2}; l2 = {p2, p3}; l3 = {p3, p4}; l4 = {p3, p5};
l5 = {p3, p6}; l6 = {p4, p6}; l7 = {p5, p6}; l8 = {p6, p7};
l9 = {p7, p8}; l10 = {p8, p1}; l11 = {p4, p9}; l13 = {p8, p9};
l12 = {p9, p1};
T1 =  {l1, l2, l3, l4, l6, l7, l8, l9, l10};
T2 = {l1, l2, l3, l4, l6, l7, l8, l9, l11, l12, l13};
TChaos  = {l8, l13, l6, l1, l11, l3, l7, l12, l4, l9, l2};

GraphicsArray[Show /@ {Graphics[Line /@ T1],
                             Graphics[Line /@  T2], Graphics[Line /@
TChaos]}]

mit Bildchen im Anhang. Die Datensätze TChaos und T2 ergeben natürlich
dasselbe Bild, aber bei TChaos liegt noch weniger als bei T2 und T1 eine
Darstellung der Ränder der umlaufenen (einfach zusammenhängenden) Gebiete
vor. Im strengen Sinne "sortieren" kann man den Rand eines einfach
zusammenhängenden (kompakten) Gebietes nicht, weil zum Sortieren eine
Ordnungsrelation gebraucht wird, die Sie sich anscheinend als

"Liniensegment x folgt auf Liniensegment y"

vorstellen: da der Rand geschlossen ist, wäre jedes Liniensegment des
Randes unter dieser Relation gleichzeitig grösser und kleiner als alle
anderen. Das ist keine Ordnungsrelation.

Man kann allerdings die Ränder der umlaufenen Gebiete  orientieren. Ist
dies der Gegenstand der Aufgabe?

Im Falle T1 wäre dann die Lösung {{l1, l2, l3, l6, l8, l9, l10}, {l4, l7,
Reverse[l6], Reverse[l3]}}, für T2 und TChaos gibt es 3 berandete kompakte
Gebiete: {{l4, l7, Reverse[l6], Reverse[l3]}, {l1, l2, l3, l11, l12}, {l6,
l8, l9, l13, Reverse[l11]}}.

Wird nach einer Ortierung der Ränder der umlaufenen Gebiete gesucht?

Mit den besten Grüssen
Udo.

Hallo Peter,
Ich versuche es besser zu beschreiben.
Der Datensatz besteht aus vielen tausenden Liniensegmenten, welche ich aus vorhergehenden Berechnungen erhalte (Ein 3D Körper, bestehend aus tausenden
von Triangel wird mittels einer Ebene geschnitten. Die Liniensegmente von
diesem Schnitt sind in diesem Datensatz enthalten). Diese Liniensegmente
beschreiben eine Kontur auf einer Ebene. Diese Kontur ist in sich
geschlossen, kann aber weitere Konturen in sich enthalten. Keine Kontur
kreuzt eine andere Kontur, somit gibt es auch keine Liniensegmente die sich
kreuzen können.
Diese Liniensegmente unterliegen in diesem Datensatz keiner Ordnung. Diese
müssen jedoch zu einem Pfad geordnet werden, so das von einem beliebigen
Startpunkt aus gestartet werden kann und am Schluss wieder den Startpunkt
erreicht wird. Dabei meine ich mit der Zuwachsrichtung folgendes: Das
Liniensegment darf nur jeweils auf einer Seite der letzen Linie angesetzt
werden. Wenn (x) der Startpunkt ist, (>) zeigt die Zuwachsrichtung und (-)
ist ein Liniensegment dann sähe das etwa so aus:
X------------>---------|
|                      |
-------------<---------|
Im sortierten Datensatz sehen die einzelnen Liniensegmente so aus:
Liniensegment 1 = {{P1x,P1y},{P2x,P2y}}
Liniensegment 2 = {{P2x,P2y},{P3x,P3y}}
Liniensegment 3 = {{P3x,P3y},{P4x,P4y}}
Liniensegment 4 = {{P4x,P4y},{P5x,P5y}}

Attachment: fuhrerContour.jpeg
Description: JPEG image

Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html