gen_circle_sectorgen_circle_sectorGenCircleSectorGenCircleSector (Operator)

Name

gen_circle_sectorgen_circle_sectorGenCircleSectorGenCircleSector — Erzeugen eines Kreisausschnitts.

Signatur

gen_circle_sector( : CircleSector : Row, Column, Radius, StartAngle, EndAngle : )

Herror gen_circle_sector(Hobject* CircleSector, double Row, double Column, double Radius, double StartAngle, double EndAngle)

Herror T_gen_circle_sector(Hobject* CircleSector, const Htuple Row, const Htuple Column, const Htuple Radius, const Htuple StartAngle, const Htuple EndAngle)

void GenCircleSector(HObject* CircleSector, const HTuple& Row, const HTuple& Column, const HTuple& Radius, const HTuple& StartAngle, const HTuple& EndAngle)

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

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

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

void HRegion::GenCircleSector(double Row, double Column, double Radius, double StartAngle, double EndAngle)

static void HOperatorSet.GenCircleSector(out HObject circleSector, HTuple row, HTuple column, HTuple radius, HTuple startAngle, HTuple endAngle)

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

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

void HRegion.GenCircleSector(HTuple row, HTuple column, HTuple radius, HTuple startAngle, HTuple endAngle)

void HRegion.GenCircleSector(double row, double column, double radius, double startAngle, double endAngle)

Beschreibung

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

gen_circle_sectorgen_circle_sectorGenCircleSectorGenCircleSectorGenCircleSector 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.

Die Winkel werden in Bogenmaß in mathematisch positivem Drehsinn angegeben.

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.

Ausführungsinformationen

Parameter

CircleSectorCircleSectorCircleSectorCircleSectorcircleSector (output_object)  region(-array) objectHRegionHRegionHobject *

Erzeugter Kreisausschnitt.

RowRowRowRowrow (input_control)  coordinates.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)  coordinates.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)  number(-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)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

Restriktion: Radius > 0.0

StartAngleStartAngleStartAngleStartAnglestartAngle (input_control)  angle.rad(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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 StartAngle StartAngle StartAngle startAngle ≤ 6.28318 (lin)

Restriktion: 0 <= StartAngle && StartAngle <= 2 * pi

EndAngleEndAngleEndAngleEndAngleendAngle (input_control)  angle.rad(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

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 EndAngle EndAngle EndAngle endAngle ≤ 6.28318 (lin)

Restriktion: 0 <= EndAngle && EndAngle <= 2 * pi

Beispiel (HDevelop)

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)

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_ellipse_sectorgen_ellipse_sectorGenEllipseSectorGenEllipseSectorGenEllipseSector, 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, disp_regiondisp_regionDispRegionDispRegionDispRegion, set_shapeset_shapeSetShapeSetShapeSetShape, smallest_circlesmallest_circleSmallestCircleSmallestCircleSmallestCircle, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain

Modul

Foundation