MinimumZoneCircle (FPScript)
Berechnet die Referenzkreise der minimalen Zone (MZCI) einer zweidimensionalen Punktemenge. Wird verwendet zur Rundheitsbestimmung.
Syntax
MinimumZoneCircle(Points, [ OutputOptions = MZCI_OUTPUT_INSCRIBED_CIRCLE + MZCI_OUTPUT_CIRCUMSCRIBED_CIRCLE ], [ CircleSize = 5000 ], [ Iterations ] [ , StepWidth ])
oder
MinimumZoneCircle(Y, X, [ OutputOptions = MZCI_OUTPUT_INSCRIBED_CIRCLE + MZCI_OUTPUT_CIRCUMSCRIBED_CIRCLE ], [ CircleSize = 5000 ], [ Iterations ] [ , StepWidth ])
Die Syntax der MinimumZoneCircle-Funktion besteht aus folgenden Teilen:
Teil |
Beschreibung |
||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Points |
Die Y- und X-Punktemenge, für die die konzentrischen Referenzkreise der minimalen Zone berechnet werden sollen. 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 der konzentrischen Referenzkreise der minimalen Zone 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 der konzentrischen Referenzkreise der minimalen Zone verwendet 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 arithmetischen Mittelkreises und die Rundheit ausgegeben werden sollen, so muss das Argument den Wert MZCI_OUTPUT_MIDDLE_CIRCLE_RADIUS + MZCI_OUTPUT_ROUNDNESS enthalten. Das Argument OutputOptions kann folgende Werte haben:
Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert MZCI_OUTPUT_INSCRIBED_CIRCLE + MZCI_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. |
||||||||||||||||||||||
Iterations |
Anzahl der Iterationen zur Berechnung der konzentrischen Referenzkreise mit der kleinstmögliche Radiendifferenz, d.h. der kleinstmöglichen Rundheitsabweichung. Wenn Sie das Argument weglassen, so wird die Anzahl der Iterationen auf einen automatischen Wert gesetzt (abhängig von der Größe der Eingangsdatensätze). Je größer die Anzahl der Iterationen, desto exakter ist das Ergebnis (aber desto länger dauert die Berechnung). Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt. Der Wert muss größer gleich 1 sein. |
||||||||||||||||||||||
StepWidth |
Schrittweite für die iterative Berechnung der konzentrischen Referenzkreise mit der kleinstmöglichen Radiendifferenz, d.h. der kleinstmöglichen Rundheitsabweichung. Wenn Sie das Argument weglassen, so wird die Schrittweite auf einen automatischen Wert gesetzt (abhängig von den Eingangsdatensätzen). Erlaubte Datenstrukturen sind Einzelwert. Unterstützte Datentypen sind 64-Bit Fließkomma. Der Wert muss größer 0 sein. |
Anmerkungen
Die Werte werden vor der Berechnung in 64-Bit Fließkommazahlen gewandelt.
Die konzentrischen Referenzkreise der minimalen Zone (MZCI) werden im ersten Iterationsschritt durch die durch den Least-Squares Circle (LSCI) berechneten Innen- und Außenkreise geschätzt. Anschließend wird das Ergebnis iterativ verbessert. Um den Mittelpunkt der aktuellen konzentrischen Innen- und Außenkreise wird dazu mit Hilfe einer zweidimensionalen Normalverteilung (Standardabweichung entspricht dem Argument StepWidth) ein neuer Punkt zufällig ausgewählt. Es wird geprüft, ob die auf den neuen Punkt neu berechneten konzentrischen Innen- und Außenkreise eine geringere Radiendifferenz als zuvor aufweisen. Falls ja, wird der Punkt zum neuen Mittelpunkt. Das Verfahren wird iterativ gemäß dem Wert des Arguments Iterations N-mal wiederholt. Das iterative Verfahren konvergiert gegen die konzentrischen Referenzkreise mit der kleinstmögliche Radiendifferenz, d.h. gegen die Referenzkreise der minimalen Zone. Je größer die Anzahl der Iterationen, desto exakter ist das Ergebnis. Beim Algorithmus handelt es sich also um ein Monte-Carlo Verfahren.
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 der konzentrischen Referenzkreise. |
.["Center_Y"] |
Y-Koordinate des Kreiszentrums der konzentrischen Referenzkreise. |
.["Middle_Circle"] |
Arithmetisch gemittelter Mittelkreis zwischen den konzentrischen Referenzkreisen. |
.["Middle_Circle_Radius"] |
Radius des arithmetisch gemittelten Mittelkreises der Referenzkreise. |
.["Inscribed_Circle"] |
Der Innenkreis (Referenzkreis). |
.["Inscribed_Circle_Radius"] |
Radius des Innenkreises. |
.["Circumscribed_Circle"] |
Der Außenkreis (Referenzkreis). |
.["Circumscribed_Circle_Radius"] |
Radius des 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 MZCI-Rundheitsberechnungen orientieren sich an der aktuell gültigen Norm zur Rundheitsbestimmung, siehe [1].
Verfügbarkeit
FlexPro Professional, Developer Suite
Beispiele
MinimumZoneCircle(y, x)
Berechnet die MZCI-Referenzkreise einer Punktemenge.
MinimumZoneCircle(y, x, MZCI_OUTPUT_ROUNDNESS)
Berechnet die MZCI-Kreise einer Punktemenge und gibt nur die Rundheit zurück.
MinimumZoneCircle(points, MZCI_OUTPUT_MIDDLE_CIRCLE_RADIUS + MZCI_OUTPUT_ROUNDNESS)
Berechnet die MZCI-Kreise einer Punktemenge. Als Ergebnis wird der Radius des Mittelkreises und die Rundheit als Liste ausgegeben.
Dim alpha = Series(0, 2*PI, 0.05)
Dim r = 11.5 + Noise(1 # NumberOfRows(alpha), NOISE_NORMAL)
Dim points = Signal(Noise(1) + r*Sin(alpha), Noise(1) + r*Cos(alpha))
List("Points", points, "Minimum Zone Circle", MinimumZoneCircle(points))
Berechnet die MZCI-Kreise von zufällig verteilten Punkten in der zweidimensionalen Ebene.
Siehe auch
MaximumInscribedCircle-Funktion
MinimumCircumscribedCircle-Funktion
Analyseobjekt Kreisapproximation
Literatur
[1] 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.