gen_circle
— Erzeugen eines Kreises.
gen_circle
generiert einen oder mehrere Kreise, die durch
Mittelpunkt und Radius
beschrieben werden. Sollen mehrere
Kreise erzeugt werden, sind die Koordinaten in Form von Tupeln zu
übergeben.
gen_circle
erzeugt ausschließlich symmetrische Kreise.
Dazu wird intern der Radius auf ein Vielfaches von 0.5 abgerundet.
Wird für den Radius ein ganzzahliger Wert (1, 2, 3, ...) angegeben,
so ergibt sich ein geradzahliger Durchmesser und damit ein Kreis,
der nur bezüglich eines Mittelpunktes mit Nachkommaanteil 0.5
symmetrisch sein kann. Intern werden also in diesem Fall die
Koordinaten des Mittelpunktes auf die nächstgelegenen Koordinaten
mit einem Nachkommaanteil von 0.5 angepasst. Hierbei werden
ganzzahlige Koordinaten auf die nächstkleineren Koordinaten mit
einem Nachkommaanteil von 0.5 abgerundet. Bei ungeradzahligem
Durchmesser (Radius = 1.5, 2.5, 3.5, ...) erhält man einen Kreis,
der nur bezüglich eines Mittelpunktes mit ganzzahligen Koordinaten
symmetrisch sein kann. Intern werden also in diesem Fall die
Koordinaten des Mittelpunktes auf die nächstgelegenen ganzzahligen
Koordinaten gerundet. Es ist zu beachten, dass durch den obigen
Algorithmus Kreise mit einem geradzahliger Durchmesser nicht
in Kreisen mit dem nächstgrößeren ungeradzahligem Durchmesser
enthalten sein müssen, selbst wenn die in Row
und
Column
angegebenen Koordinaten identisch sind.
Falls der Kreis über den Bildrand reicht, wird je nach Wert des
Systemflags 'clip_region' (set_system
) der Kreis auf das
aktuelle Bildformat beschnitten.
Aus Geschwindigkeitsgründen kann die Ergebnisregion zusätzliche
Pixel am Rand enthalten, und einige einzelne Pixel am Rand können
fehlen. Dies kann zu einer Inkonsistenz zwischen den Operatoren
smallest_circle
und gen_circle
führen.
Circle
(output_object) region(-array) →
object
Erzeugter Kreis.
Row
(input_control) circle.center.y(-array) →
(real / integer)
Zeilenindex des Schwerpunktes.
Defaultwert: 200.0
Wertevorschläge: 0.0, 10.0, 50.0, 100.0, 200.0, 300.0
Typischer Wertebereich: 1.0
≤
Row
≤
1024.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Column
(input_control) circle.center.x(-array) →
(real / integer)
Spaltenindex des Schwerpunktes.
Defaultwert: 200.0
Wertevorschläge: 0.0, 10.0, 50.0, 100.0, 200.0, 300.0
Typischer Wertebereich: 1.0
≤
Column
≤
1024.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Radius
(input_control) circle.radius(-array) →
(real / integer)
Radius des Kreises.
Defaultwert: 100.5
Wertevorschläge: 1.0, 1.5, 2.0, 2.5, 3, 3.5, 4, 4.5, 5.5, 6.5, 7.5, 9.5, 11.5, 15.5, 20.5, 25.5, 31.5, 50.5
Typischer Wertebereich: 1.0
≤
Radius
≤
1024.0
(lin)
Restriktion: Radius > 0.0
read_image(Image,'fabrik') gen_circle(Circle,300.0,200.0,150.5) reduce_domain(Image,Circle,Mask) dev_clear_window () dev_display (Mask)
Laufzeitkomplexität: O(Radius
* 2)
Speicherplatzkomplexität (Byte): O(Radius
* 8)
Sind die Parameterwerte korrekt,
dann liefert gen_circle
den Wert 2 (H_MSG_TRUE).
Andernfalls wird eine Fehlerbehandlung durchgeführt.
Das Clipping am aktuellen Bildformat wird durch
set_system('clip_region',<'true'/'false'>)
festgelegt.
Entsteht durch Clipping (der Kreis liegt völlig außerhalb des
Bildformats) eine leere Region, dann legt
set_system('store_empty_region',<'true'/'false'>)
fest,
ob die leere Region ausgegeben wird.
gen_ellipse
,
gen_region_polygon_filled
,
gen_region_points
,
gen_region_runs
,
draw_circle
disp_circle
,
set_shape
,
smallest_circle
,
reduce_domain
Foundation