MinimumCircumscribedCircle (FPScript)

21.09.2021

Berechnet den kleinsten äußeren Kreis (MCCI) einer zweidimensionalen Punktemenge (Hüllkreis). Wird verwendet zur Rundheitsbestimmung.

Syntax

MinimumCircumscribedCircle(Points, [ OutputOptions = MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE ], [ CircleSize = 5000 ] [ , ConvexHullAlgorithm = CONVEXHULL_GRAHAM_SCAN ])
oder
MinimumCircumscribedCircle(Y, X, [ OutputOptions = MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE ], [ CircleSize = 5000 ] [ , ConvexHullAlgorithm = CONVEXHULL_GRAHAM_SCAN ])

 

Die Syntax der MinimumCircumscribedCircle-Funktion besteht aus folgenden Teilen:

Teil

Beschreibung

Points

Die Y- und X-Punktemenge, für die der kleinste äußere Kreis (Hüllkreis) berechnet werden soll. Beide Komponenten des Signals müssen die gleiche Einheit besitzen.

Erlaubte Datenstrukturen sind Signal. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne.

Y

Die Y-Punktemenge, die zur Berechnung des kleinsten äußeren Kreises (Hüllkreis) verwendet wird. Wenn Sie ein Signal angeben, wird dessen Y-Komponente verwendet. Die Einheit muss mit der Einheit des Arguments X übereinstimmen.

Erlaubte Datenstrukturen sind Datenreihe und Signal. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne.

X

Die X-Punktemenge, die zur Berechnung des kleinsten äußeren Kreises (Hüllkreis) wird. Wenn Sie ein Signal angeben, wird dessen Y-Komponente verwendet. Die Einheit muss mit der Einheit des Arguments Y übereinstimmen.

Erlaubte Datenstrukturen sind Datenreihe und Signal. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne.

OutputOptions

Gibt an, welche Ergebnisse zurückgegeben werden sollen. Mehrere Ergebnisse werden als Liste ausgegeben. Wenn z. B. der Radius des Referenzkreises und die Rundheit ausgegeben werden sollen, so muss das Argument den Wert MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE_RADIUS + MCCI_OUTPUT_ROUNDNESS enthalten.

Das Argument OutputOptions kann folgende Werte haben:

Konstante

Bedeutung

+ MCCI_OUTPUT_ALL

Alle verfügbaren Ausgaben.

+ MCCI_OUTPUT_CENTER_X

X-Koordinate des Kreiszentrums des Referenzkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

+ MCCI_OUTPUT_CENTER_Y

Y-Koordinate des Kreiszentrums des Referenzkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

+ MCCI_OUTPUT_MIDDLE_CIRCLE

Der arithmetisch gemittelte Mittelkreis zwischen dem kleinsten äußeren Kreis (Referenzkreis) und dem auf den Referenzkreis bezogenen größten Innenkreises. Das Ergebnis ist ein Signal.

+ MCCI_OUTPUT_MIDDLE_CIRCLE_RADIUS

Radius des arithmetisch gemittelten Mittelkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

+ MCCI_OUTPUT_INSCRIBED_CIRCLE

Der auf den Referenzkreis bezogene größte Innenkreis. Das Kreiszentrum des Innenkreises stimmt mit dem Kreiszentrum des Referenzkreises überein. Der Radius des Innenkreises ergibt sich als der minimale Abstand der Punktemenge zum Kreiszentrum. Das Ergebnis ist ein Signal.

+ MCCI_OUTPUT_INSCRIBED_CIRCLE_RADIUS

Radius des auf den Referenzkreises bezogenen Innenkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

+ MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE

Der berechnete Referenzkreis (kleinster äußerer Kreis) in der zweidimensionalen Ebene. Das Ergebnis ist ein Signal.

+ MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE_RADIUS

Radius des Referenzkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

+ MCCI_OUTPUT_ROUNDNESS

Die Rundheitsabweichung. Ergibt sich als Differenz der Radien des Außen- und Innenkreises. Das Ergebnis ist ein 64-Bit-Fließkommawert.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE gesetzt.

CircleSize

Gibt die Anzahl der Werte zur Darstellung der gefitteten Kreise an. Wenn Sie Null angeben, bleibt die ursprüngliche Werteanzahl erhalten. Das Argument wird nur berücksichtigt, wenn für OutputOptions einer der aufgelisteten Kreise gewählt wurde.

Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt.

Der Wert muss größer gleich 0 sein.

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 5000 gesetzt.

ConvexHullAlgorithm

Bestimmt den Algorithmus der zur Berechnung des Hüllkreis benötigten konvexen Hülle.

Das Argument ConvexHullAlgorithm kann folgende Werte haben:

Konstante

Bedeutung

CONVEXHULL_JARVIS_MARCH

Zur Berechnung der konvexen Hülle wird der Jarvis-March Algorithmus verwendet (auch bekannt als Gift-Wrapping-Algorithmus). Die Laufzeit des Algorithmus beträgt O(n*h), wobei h die Anzahl der Punkte auf der konvexen Hülle bezeichnet. Der Algorithmus ist damit ausgabesensitiv, d.h. die Laufzeit hängt von den Eingangsdaten ab. Im Worst-Case Szenario besitzt der Algorithmus also quadratische Laufzeit. Allerdings ist in vielen Anwendungsfällen die Anzahl der Punkte auf der konvexen Hülle gering, so dass der Algorithmus in diesen Fällen schneller als der Graham-Scan Algorithmus ist.

CONVEXHULL_GRAHAM_SCAN

Zur Berechnung der konvexen Hülle wird der Graham-Scan Algorithmus verwendet. Die Laufzeit des Algorithmus beträgt stets O(n*log(n)).

Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert CONVEXHULL_GRAHAM_SCAN gesetzt.

Anmerkungen

Die Werte werden vor der Berechnung in 64-Bit Fließkommazahlen gewandelt.

Von der Punktemenge wird im ersten Schritt zuerst die konvexe Hülle berechnet (siehe auch ConvexHull-Funktion). Anschließend wird der kleinste äußere Kreis der konvexen Hülle mit Hilfe des Skyum-Algorithmus [1] berechnet. Die Laufzeit hierfür beträgt O(n*log(n)). Der dadurch berechnete Kreis stimmt mit dem kleinsten äußeren Kreis (Hüllkreis) der ursprünglichen Punktemenge überein.

Die Ausgabeoptionen des Arguments OutputOptions sind im folgenden Diagramm visualisiert:

Auf die Ergebnisse kann mit folgenden Listenelementnamen zugegriffen werden:

Konstante

Bedeutung

.["Center_X"]

X-Koordinate des Kreiszentrums des Referenzkreises.

.["Center_Y"]

Y-Koordinate des Kreiszentrums des Referenzkreises.

.["Middle_Circle"]

Arithmetisch gemittelter Mittelkreis zwischen Referenzkreis (kleinster äußerer Kreis) und Innenkreis.

.["Middle_Circle_Radius"]

Radius des arithmetisch gemittelten Mittelkreises.

.["Inscribed_Circle"]

Der auf den Referenzkreis bezogene größte Innenkreis.

.["Inscribed_Circle_Radius"]

Radius des auf den Referenzkreis bezogenen größten Innenkreises.

.["Circumscribed_Circle"]

Referenzkreis (kleinster äußerer Kreis).

.["Circumscribed_Circle_Radius"]

Radius des Referenzkreises.

.["Roundness"]

Rundheitsabweichung als Differenz der Radien des Außen- und Innenkreises.

Sie können auch stets die Syntax Formel.Listenelementname verwenden.

Hinweis        Die MCCI-Rundheitsberechnungen orientieren sich an der aktuell gültigen Norm zur Rundheitsbestimmung, siehe [2].

Verfügbarkeit

FlexPro Professional, Developer Suite

Beispiele

MinimumCircumscribedCircle(y, x)

Berechnet den kleinsten äußeren Kreis (MCCI) einer Punktemenge.

MinimumCircumscribedCircle(y, x, MCCI_OUTPUT_ROUNDNESS)

Berechnet den kleinsten äußeren Kreis (MCCI) einer Punktemenge und gibt nur die Rundheit zurück.

MinimumCircumscribedCircle(points, MCCI_OUTPUT_CIRCUMSCRIBED_CIRCLE_RADIUS + MCCI_OUTPUT_ROUNDNESS)

Berechnet den kleinsten äußeren Kreis (MCCI) einer Punktemenge. Als Ergebnis wird der Radius des ermittelten Kreises und die Rundheit als Liste ausgegeben.

Dim alpha = Series(0, 2*PI, 0.05)
Dim r = 13.5 + Noise(1 # NumberOfRows(alpha), NOISE_NORMAL)
Dim points = Signal(Noise(1) + r*Sin(alpha), Noise(1) + r*Cos(alpha))
List("Points", points, "Circumscribed Circle", MinimumCircumscribedCircle(points))

Berechnet den kleinsten äußeren Kreis (MCCI) von zufällig verteilten Punkten in der zweidimensionalen Ebene.

Siehe auch

LeastSquaresCircle-Funktion

MaximumInscribedCircle-Funktion

MinimumZoneCircle-Funktion

ConvexHull-Funktion

GaussianFilter-Funktion

Analyseobjekt Kreisapproximation

Literatur

[1] Sven Skyum: A simple algorithm for computing the smallest enclosing circle. In: Information Processing Letters, Vol. 37, Issue 3, Pages 121-125. https://doi.org/10.1016/0020-0190(91)90030-L,1991.

[2] DIN Deutsches Institut für Normung e.V.: Part 1: Vocabulary and parameters of roundness (ISO 12181-1:2011); English translation of DIN EN ISO 12181-1:2011. In: Geometrical product specifications (GPS)- Roundness. 2011.

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren