KlassenKlassenKlassenKlassen | | | | Operatoren

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle (Operator)

Name

gen_circlegen_circleGenCirclegen_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)

Herror gen_circle(Hobject* Circle, const HTuple& Row, const HTuple& Column, const HTuple& Radius)

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

HRegionArray HRegionArray::GenCircle(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)

void HOperatorSetX.GenCircle(
[out] IHUntypedObjectX*Circle, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT Radius)

void HRegionX.GenCircle(
[in] VARIANT Row, [in] VARIANT Column, [in] VARIANT 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_circleGenCirclegen_circleGenCircleGenCircle generiert einen oder mehrere Kreise, die durch Mittelpunkt und RadiusRadiusRadiusRadiusRadiusradius beschrieben werden. Sollen mehrere Kreise erzeugt werden, sind die Koordinaten in Form von Tupeln zu übergeben.

gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle 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 RowRowRowRowRowrow und ColumnColumnColumnColumnColumncolumn angegebenen Koordinaten identisch sind.

Falls der Kreis über den Bildrand reicht, wird je nach Wert des Systemflags 'clip_region' (set_systemset_systemSetSystemset_systemSetSystemSetSystem) 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_circleSmallestCirclesmallest_circleSmallestCircleSmallestCircle und gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle führen.

Parallelisierung

Parameter

CircleCircleCircleCircleCirclecircle (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Erzeugter Kreis.

RowRowRowRowRowrow (input_control)  circle.center.y(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (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 row ≤ 1024.0 (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

ColumnColumnColumnColumnColumncolumn (input_control)  circle.center.x(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (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 column ≤ 1024.0 (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

RadiusRadiusRadiusRadiusRadiusradius (input_control)  circle.radius(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (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 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)

Beispiel (C)

open_window(0,0,-1,-1,"root","visible","",&WindowHandle);
read_image(&Image,"montery");
gen_circle(&Circle,300.0,200.0,150.5);
reduce_domain(Image,Circle,Mask);
disp_color(Mask,WindowHandle);

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)

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)

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)

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(RadiusRadiusRadiusRadiusRadiusradius * 2)

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

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle 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">)set_system("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">)set_system("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_regionPaintRegionpaint_regionPaintRegionPaintRegion, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain

Alternativen

gen_ellipsegen_ellipseGenEllipsegen_ellipseGenEllipseGenEllipse, gen_region_polygon_filledgen_region_polygon_filledGenRegionPolygonFilledgen_region_polygon_filledGenRegionPolygonFilledGenRegionPolygonFilled, gen_region_pointsgen_region_pointsGenRegionPointsgen_region_pointsGenRegionPointsGenRegionPoints, gen_region_runsgen_region_runsGenRegionRunsgen_region_runsGenRegionRunsGenRegionRuns, draw_circledraw_circleDrawCircledraw_circleDrawCircleDrawCircle

Siehe auch

disp_circledisp_circleDispCircledisp_circleDispCircleDispCircle, set_shapeset_shapeSetShapeset_shapeSetShapeSetShape, smallest_circlesmallest_circleSmallestCirclesmallest_circleSmallestCircleSmallestCircle, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren