union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldunion2_closed_polygons_xld (Operator)

Name

union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldunion2_closed_polygons_xld — Berechnen der Vereinigungsmenge von geschlossenen Polygonen.

Signatur

union2_closed_polygons_xld(Polygons1, Polygons2 : PolygonsUnion : : )

Herror union2_closed_polygons_xld(const Hobject Polygons1, const Hobject Polygons2, Hobject* PolygonsUnion)

Herror T_union2_closed_polygons_xld(const Hobject Polygons1, const Hobject Polygons2, Hobject* PolygonsUnion)

void Union2ClosedPolygonsXld(const HObject& Polygons1, const HObject& Polygons2, HObject* PolygonsUnion)

HXLDPoly HXLDPoly::Union2ClosedPolygonsXld(const HXLDPoly& Polygons2) const

static void HOperatorSet.Union2ClosedPolygonsXld(HObject polygons1, HObject polygons2, out HObject polygonsUnion)

HXLDPoly HXLDPoly.Union2ClosedPolygonsXld(HXLDPoly polygons2)

def union2_closed_polygons_xld(polygons_1: HObject, polygons_2: HObject) -> HObject

Beschreibung

Der Operator union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldunion2_closed_polygons_xld berechnet die Vereinigungsmenge der von den geschlossenen Eingabepolygonen umgebenen Regionen. Der Rand dieser Vereinigungsmenge wird in PolygonsUnionPolygonsUnionPolygonsUnionPolygonsUnionpolygonsUnionpolygons_union zurückgegeben.

Wenn die einzelnen Eingabepolygone nicht geschlossen sind, werden sie automatisch durch Verbinden von Anfangs- und Endpunkt geschlossen.

Intern werden zuerst die Regionen, die von den Polygonen Polygons1Polygons1Polygons1Polygons1polygons1polygons_1 bzw. Polygons2Polygons2Polygons2Polygons2polygons2polygons_2 umschlossen sind, getrennt voneinander bestimmt (siehe unten). Danach wird die Vereinigungsmenge der beiden sich ergebenden Regionen berechnet.

Im folgenden werden die beiden Eingabepolygone als Menge von Rändern der zu schneidenden Regionen betrachtet. Jede dieser Mengen besteht aus einer beliebigen Anzahl von Rändern (die einzelnen Polygonen aus Polygons1Polygons1Polygons1Polygons1polygons1polygons_1 bzw. Polygons2Polygons2Polygons2Polygons2polygons2polygons_2). Jeder Rand kann konvex oder konkav sein und sich selbst schneiden. Löcher können durch Verschachtelung der Ränder gebildet werden.

Die von allen Rändern einer solchen Menge von Rändern umschlossene Region ist durch die sogenannte Even-Odd-Rule definiert. Sie besteht also aus der Menge aller Punkte, die folgende Eigenschaft besitzen: Die Strecke, die man durch Verbinden des Punktes mit einem außerhalb der Region liegenden Referenzpunkt erhält, schneidet eine ungerade Anzahl von Rändern.

Anschaulich bedeutet dies, dass ein Rand, der vollständig innerhalb eines anderen Randes liegt, ein Loch in der Region erzeugt, die durch den ersten Rand umschlossen ist. Analog dazu wird auch der Überlappungsbereich zweier Regionen als "Loch" betrachtet, d.h., er gehört nicht zu der Region, die von den beiden Rändern umschlossen wird. Die Region, die von einem Rand umschlossen wird, ist dabei unabhängig von der Umlaufrichtung des Randes.

Ein sich selbst schneidender Rand kann entweder am Schnittpunkt aufgetrennt werden oder er wird so angeordnet, dass er sich selbst am Schnittpunkt berührt. Die sich ergebenden Ränder werden als unabhängige Ränder betrachtet.

Achtung

Die Ergebnispolygone PolygonsUnionPolygonsUnionPolygonsUnionPolygonsUnionpolygonsUnionpolygons_union enthalten keine Referenzen auf die möglicherweise von Polygons1Polygons1Polygons1Polygons1polygons1polygons_1 und Polygons2Polygons2Polygons2Polygons2polygons2polygons_2 referenzierten XLD-Konturen. Daher kann es beim Aufruf von Operatoren, die auf die zu einem Polygon gehörigen Konturen zugreifen, z.B. split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXldsplit_contours_xld, zu Fehlermeldungen kommen.

Ausführungsinformationen

Parameter

Polygons1Polygons1Polygons1Polygons1polygons1polygons_1 (input_object)  xld_poly(-array) objectHXLDPolyHObjectHXLDPolyHobject

Polygone, die die erste Region umschließen.

Polygons2Polygons2Polygons2Polygons2polygons2polygons_2 (input_object)  xld_poly(-array) objectHXLDPolyHObjectHXLDPolyHobject

Polygone, die die zweite Region umschließen.

PolygonsUnionPolygonsUnionPolygonsUnionPolygonsUnionpolygonsUnionpolygons_union (output_object)  xld_poly(-array) objectHXLDPolyHObjectHXLDPolyHobject *

Polygone, die die Vereinigungsmenge umschließen.

Ergebnis

union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldunion2_closed_polygons_xld liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt

Vorgänger

gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXldgen_polygons_xld

Alternativen

union2union2Union2Union2Union2union2

Siehe auch

difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXlddifference_closed_polygons_xld, symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXldsymm_difference_closed_polygons_xld, intersection_closed_polygons_xldintersection_closed_polygons_xldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXldintersection_closed_polygons_xld, union2_closed_contours_xldunion2_closed_contours_xldUnion2ClosedContoursXldUnion2ClosedContoursXldUnion2ClosedContoursXldunion2_closed_contours_xld

Modul

Foundation