KlassenKlassenKlassenKlassen | | | | Operatoren

symm_difference_closed_contours_xldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXld (Operator)

Name

symm_difference_closed_contours_xldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXld — Berechnen der symmetrischen Differenzmenge von geschlossenen Konturen.

Signatur

symm_difference_closed_contours_xld(Contours1, Contours2 : ContoursDifference : : )

Herror symm_difference_closed_contours_xld(const Hobject Contours1, const Hobject Contours2, Hobject* ContoursDifference)

Herror T_symm_difference_closed_contours_xld(const Hobject Contours1, const Hobject Contours2, Hobject* ContoursDifference)

Herror symm_difference_closed_contours_xld(Hobject Contours1, Hobject Contours2, Hobject* ContoursDifference)

HXLDCont HXLDCont::SymmDifferenceClosedContoursXld(const HXLDCont& Contours2) const

HXLDContArray HXLDContArray::SymmDifferenceClosedContoursXld(const HXLDContArray& Contours2) const

void SymmDifferenceClosedContoursXld(const HObject& Contours1, const HObject& Contours2, HObject* ContoursDifference)

HXLDCont HXLDCont::SymmDifferenceClosedContoursXld(const HXLDCont& Contours2) const

void HOperatorSetX.SymmDifferenceClosedContoursXld(
[in] IHUntypedObjectX* Contours1, [in] IHUntypedObjectX* Contours2, [out] IHUntypedObjectX*ContoursDifference)

IHXLDContX* HXLDContX.SymmDifferenceClosedContoursXld([in] IHXLDContX* Contours2)

static void HOperatorSet.SymmDifferenceClosedContoursXld(HObject contours1, HObject contours2, out HObject contoursDifference)

HXLDCont HXLDCont.SymmDifferenceClosedContoursXld(HXLDCont contours2)

Beschreibung

Der Operator symm_difference_closed_contours_xldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldsymm_difference_closed_contours_xldSymmDifferenceClosedContoursXldSymmDifferenceClosedContoursXld berechnet die symmetrische Differenzmenge der von den geschlossenen Eingabekonturen umgebenen Regionen. Der Rand dieser Differenzmenge wird in ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference zurückgegeben.

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

Intern werden zuerst die Regionen, die von den Konturen Contours1Contours1Contours1Contours1Contours1contours1 bzw. Contours2Contours2Contours2Contours2Contours2contours2 umschlossen sind, getrennt voneinander bestimmt (siehe unten). Danach wird die symmetrische Differenzmenge der beiden sich ergebenden Regionen berechnet.

Im folgenden werden die beiden Eingabekonturen als Menge von Rändern der zu schneidenden Regionen betrachtet. Jede dieser Mengen besteht aus einer beliebigen Anzahl von Rändern (die einzelnen Konturen aus Contours1Contours1Contours1Contours1Contours1contours1 bzw. Contours2Contours2Contours2Contours2Contours2contours2). 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.

Die resultierenden Konturen ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference werden automatisch in Konturen, die Regionen umschließen, und Konturen, die Löcher umschließen, klassifiziert. Diese Information wird im globalen Attribut 'is_hole'"is_hole""is_hole""is_hole""is_hole""is_hole" gespeichert. Für Konturen, die Löcher umschließen, wird das globale Attribut 'is_hole'"is_hole""is_hole""is_hole""is_hole""is_hole" auf 1 gesetzt, ansonsten auf 0.

Parallelisierung

Parameter

Contours1Contours1Contours1Contours1Contours1contours1 (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Konturen, die die erste Region umschließen.

Contours2Contours2Contours2Contours2Contours2contours2 (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject

Konturen, die die zweite Region umschließen.

ContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferenceContoursDifferencecontoursDifference (output_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContHXLDContXHobject *

Konturen, die die symmetrische Differenzmenge umschließen.

Ergebnis

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

Vorgänger

gen_contour_region_xldgen_contour_region_xldGenContourRegionXldgen_contour_region_xldGenContourRegionXldGenContourRegionXld, zero_crossing_sub_pixzero_crossing_sub_pixZeroCrossingSubPixzero_crossing_sub_pixZeroCrossingSubPixZeroCrossingSubPix, threshold_sub_pixthreshold_sub_pixThresholdSubPixthreshold_sub_pixThresholdSubPixThresholdSubPix

Alternativen

symm_differencesymm_differenceSymmDifferencesymm_differenceSymmDifferenceSymmDifference

Siehe auch

intersection_closed_contours_xldintersection_closed_contours_xldIntersectionClosedContoursXldintersection_closed_contours_xldIntersectionClosedContoursXldIntersectionClosedContoursXld, difference_closed_contours_xlddifference_closed_contours_xldDifferenceClosedContoursXlddifference_closed_contours_xldDifferenceClosedContoursXldDifferenceClosedContoursXld, union2_closed_contours_xldunion2_closed_contours_xldUnion2ClosedContoursXldunion2_closed_contours_xldUnion2ClosedContoursXldUnion2ClosedContoursXld, symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren