gen_circle_sector
— Erzeugen eines Kreisausschnitts.
gen_circle_sector( : CircleSector : Row, Column, Radius, StartAngle, EndAngle : )
gen_circle_sector
generiert einen oder mehrere Kreisschnitte, die durch
Mittelpunkt und Radius
beschrieben werden. Sollen mehrere
Kreise erzeugt werden, sind die Koordinaten in Form von Tupeln zu
übergeben.
gen_circle_sector
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.
CircleSector
(output_object) region(-array) →
object
Erzeugter Kreisausschnitt.
Row
(input_control) coordinates.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) coordinates.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) number(-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)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: Radius > 0.0
StartAngle
(input_control) angle.rad(-array) →
(real / integer)
Startwinkel des Kreisausschnittes.
Defaultwert: 0.0
Wertevorschläge: 0.0, 0.785398, 1.5708, 2.35619, 3.14159, 3.92699, 4.71239, 5.49779, 6.28318
Typischer Wertebereich: 0
≤
StartAngle
≤
6.28318
(lin)
Restriktion: 0 <= StartAngle && StartAngle <= 2 * pi
EndAngle
(input_control) angle.rad(-array) →
(real / integer)
Endwinkel des Kreisausschnittes.
Defaultwert: 3.14159
Wertevorschläge: 0.0, 0.785398, 1.5708, 2.35619, 3.14159, 3.92699, 4.71239, 5.49779, 6.28318
Typischer Wertebereich: 0
≤
EndAngle
≤
6.28318
(lin)
Restriktion: 0 <= EndAngle && EndAngle <= 2 * pi
read_image(Image,'fabrik') gen_circle_sector(CircleSector,300.0,200.0,150.5,0,rad(120)) reduce_domain(Image,CircleSector,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_ellipse_sector
,
gen_region_polygon_filled
,
gen_region_points
,
gen_region_runs
,
draw_circle
disp_circle
,
disp_region
,
set_shape
,
smallest_circle
,
reduce_domain
Foundation