gen_circlegen_circleGenCircleGenCircle (Operator)

Name

gen_circlegen_circleGenCircleGenCircle — Erzeugen eines Kreises.

Signatur

gen_circle( : Circle : Row, Column, Radius : )

Herror gen_circle(Hobject* Circle, double Row, double Column, double Radius)

Herror T_gen_circle(Hobject* Circle, const Htuple Row, const Htuple Column, const Htuple Radius)

void GenCircle(HObject* Circle, const HTuple& Row, const HTuple& Column, const HTuple& Radius)

void HRegion::HRegion(const HTuple& Row, const HTuple& Column, const HTuple& Radius)

void HRegion::HRegion(double Row, double Column, double Radius)

void HRegion::GenCircle(const HTuple& Row, const HTuple& Column, const HTuple& Radius)

void HRegion::GenCircle(double Row, double Column, double Radius)

static void HOperatorSet.GenCircle(out HObject circle, HTuple row, HTuple column, HTuple radius)

public HRegion(HTuple row, HTuple column, HTuple radius)

public HRegion(double row, double column, double radius)

void HRegion.GenCircle(HTuple row, HTuple column, HTuple radius)

void HRegion.GenCircle(double row, double column, double radius)

Beschreibung

gen_circlegen_circleGenCircleGenCircleGenCircle generiert einen oder mehrere Kreise, die durch Mittelpunkt und RadiusRadiusRadiusRadiusradius beschrieben werden. Sollen mehrere Kreise erzeugt werden, sind die Koordinaten in Form von Tupeln zu übergeben.

gen_circlegen_circleGenCircleGenCircleGenCircle 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 RowRowRowRowrow und ColumnColumnColumnColumncolumn angegebenen Koordinaten identisch sind.

Falls der Kreis über den Bildrand reicht, wird je nach Wert des Systemflags 'clip_region' (set_systemset_systemSetSystemSetSystemSetSystem) der Kreis auf das aktuelle Bildformat beschnitten.

Achtung

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_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle und gen_circlegen_circleGenCircleGenCircleGenCircle führen.

Ausführungsinformationen

Parameter

CircleCircleCircleCirclecircle (output_object)  region(-array) objectHRegionHRegionHobject *

Erzeugter Kreis.

RowRowRowRowrow (input_control)  circle.center.y(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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 Row Row Row row ≤ 1024.0 (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

ColumnColumnColumnColumncolumn (input_control)  circle.center.x(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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 Column Column Column column ≤ 1024.0 (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

RadiusRadiusRadiusRadiusradius (input_control)  circle.radius(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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 Radius Radius Radius radius ≤ 1024.0 (lin)

Restriktion: Radius > 0.0

Beispiel (HDevelop)

read_image(Image,'fabrik')
gen_circle(Circle,300.0,200.0,150.5)
reduce_domain(Image,Circle,Mask)
dev_clear_window ()
dev_display (Mask)

Komplexität

Laufzeitkomplexität: O(RadiusRadiusRadiusRadiusradius * 2)

Speicherplatzkomplexität (Byte): O(RadiusRadiusRadiusRadiusradius * 8)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_circlegen_circleGenCircleGenCircleGenCircle 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'>)set_system("clip_region",<"true"/"false">)SetSystem("clip_region",<"true"/"false">)SetSystem("clip_region",<"true"/"false">)SetSystem("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'>)set_system("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">)SetSystem("store_empty_region",<"true"/"false">) fest, ob die leere Region ausgegeben wird.

Nachfolger

paint_regionpaint_regionPaintRegionPaintRegionPaintRegion, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain

Alternativen

gen_ellipsegen_ellipseGenEllipseGenEllipseGenEllipse, gen_region_polygon_filledgen_region_polygon_filledGenRegionPolygonFilledGenRegionPolygonFilledGenRegionPolygonFilled, gen_region_pointsgen_region_pointsGenRegionPointsGenRegionPointsGenRegionPoints, gen_region_runsgen_region_runsGenRegionRunsGenRegionRunsGenRegionRuns, draw_circledraw_circleDrawCircleDrawCircleDrawCircle

Siehe auch

disp_circledisp_circleDispCircleDispCircleDispCircle, set_shapeset_shapeSetShapeSetShapeSetShape, smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain

Modul

Foundation