MaximumInscribedCircle (FPScript)

21.09.2021

Berechnet den größten inneren Kreis (MICI) einer zweidimensionalen Punktemenge (Pferchkreis). Wird verwendet zur Rundheitsbestimmung.

Syntax

MaximumInscribedCircle(Points, [ OutputOptions = MICI_OUTPUT_INSCRIBED_CIRCLE ] [ , CircleSize = 5000 ])
oder
MaximumInscribedCircle(Y, X, [ OutputOptions = MICI_OUTPUT_INSCRIBED_CIRCLE ] [ , CircleSize = 5000 ])

 

Die Syntax der MaximumInscribedCircle-Funktion besteht aus folgenden Teilen:

Teil

Beschreibung

Points

Die Y- und X-Punktemenge, für die der größte innere Kreis (Pferchkreis) 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 größten inneren Kreises (Pferchkreis) 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 größten inneren Kreises (Pferchkreis) 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 MICI_OUTPUT_INSCRIBED_CIRCLE_RADIUS + MICI_OUTPUT_ROUNDNESS enthalten.

Das Argument OutputOptions kann folgende Werte haben:

Konstante

Bedeutung

+ MICI_OUTPUT_ALL

Alle verfügbaren Ausgaben.

+ MICI_OUTPUT_CENTER_X

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

+ MICI_OUTPUT_CENTER_Y

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

+ MICI_OUTPUT_MIDDLE_CIRCLE

Der arithmetisch gemittelte Mittelkreis zwischen dem größten inneren Kreis (Referenzkreis) und dem auf den Referenzkreis bezogenen kleinsten Außenkreises. Das Ergebnis ist ein Signal.

+ MICI_OUTPUT_MIDDLE_CIRCLE_RADIUS

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

+ MICI_OUTPUT_INSCRIBED_CIRCLE

Der berechnete Referenzkreis (größter innerer Kreis) in der zweidimensionalen Ebene. Das Ergebnis ist ein Signal.

+ MICI_OUTPUT_INSCRIBED_CIRCLE_RADIUS

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

+ MICI_OUTPUT_CIRCUMSCRIBED_CIRCLE

Der auf den Referenzkreis bezogene kleinste Außenkreis. Das Kreiszentrum des Außenkreises stimmt mit dem Kreiszentrum des Referenzkreises überein. Der Radius des Außenkreises ergibt sich als der maximal Abstand der Punktemenge zum Kreiszentrum. Das Ergebnis ist ein Signal.

+ MICI_OUTPUT_CIRCUMSCRIBED_CIRCLE_RADIUS

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

+ MICI_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 MICI_OUTPUT_INSCRIBED_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.

Anmerkungen

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

Von der Punktemenge wird im ersten Schritt zuerst die Delaunay-Triangulation berechnet, um aus der Punktemenge ein Dreiecksnetz zu erzeugen (verwendeter Algorithmus mit Laufzeit O(n*log(n)): randomisierte inkrementelle Konstruktion aus [1]). Der größte Innenkreis entspricht dann dem Kreis mit dem größten Umfang aller in der Triangulation enthaltenen Dreiecke.

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 (größter innerer Kreis) und Außenkreis.

.["Middle_Circle_Radius"]

Radius des arithmetisch gemittelten Mittelkreises.

.["Inscribed_Circle"]

Referenzkreis (größter innerer Kreis).

.["Inscribed_Circle_Radius"]

Radius des Referenzkreises.

.["Circumscribed_Circle"]

Der auf den Referenzkreis bezogene kleinste Außenkreis.

.["Circumscribed_Circle_Radius"]

Radius des auf den Referenzkreis bezogenen kleinsten Außenkreises.

.["Roundness"]

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

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

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

Verfügbarkeit

FlexPro Professional, Developer Suite

Beispiele

MaximumInscribedCircle(y, x)

Berechnet den größten inneren Kreis (MICI) einer Punktemenge.

MaximumInscribedCircle(y, x, MICI_OUTPUT_ROUNDNESS)

Berechnet den größten inneren Kreis (MICI) einer Punktemenge und gibt nur die Rundheit zurück.

MaximumInscribedCircle(points, MICI_OUTPUT_INSCRIBED_CIRCLE_RADIUS + MICI_OUTPUT_ROUNDNESS)

Berechnet den größten inneren Kreis (MICI) 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, "Inscribed Circle", MaximumInscribedCircle(points))

Berechnet den größten inneren Kreis (MICI) von zufällig verteilten Punkten in der zweidimensionalen Ebene.

Siehe auch

LeastSquaresCircle-Funktion

MinimumCircumscribedCircle-Funktion

MinimumZoneCircle-Funktion

GaussianFilter-Funktion

Analyseobjekt Kreisapproximation

Literatur

[1] Leonidas J. Guibas, Donald E. Knuth, and Micha Sharir: Randomized Incremental Construction of Delaunay and Voronoi Diagrams. In: Algorithmica, Vol. 7, Pages 381-413. https://link.springer.com/article/10.1007/BF01758770,1992.

[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