KlassenKlassenKlassenKlassen | | | | Operatoren

gen_circle_sectorgen_circle_sectorGenCircleSectorgen_circle_sectorGenCircleSectorGenCircleSector (Operator)

Name

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

Herror gen_circle_sector(Hobject* CircleSector, const HTuple& Row, const HTuple& Column, const HTuple& Radius, const HTuple& StartAngle, const HTuple& EndAngle)

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

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

void HOperatorSetX.GenCircleSector(
[out] IHUntypedObjectX*CircleSector, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT Radius, [in] VARIANT StartAngle, [in] VARIANT EndAngle)

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

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

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_systemSetSystemset_systemSetSystemSetSystem) der Kreis auf das aktuelle Bildformat beschnitten.

Parallelisierung

Parameter

CircleSectorCircleSectorCircleSectorCircleSectorCircleSectorcircleSector (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Erzeugter Kreisausschnitt.

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

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

Restriktion: Radius > 0.0

StartAngleStartAngleStartAngleStartAngleStartAnglestartAngle (input_control)  angle.rad(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Startwinkel des Kreisausschnittes.

Defaultwert: 0.0

Wertevorschläge: -1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097

Typischer Wertebereich: -1.178097 ≤ StartAngle StartAngle StartAngle StartAngle StartAngle startAngle ≤ 1.178097 (lin)

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 0.1

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

EndAngleEndAngleEndAngleEndAngleEndAngleendAngle (input_control)  angle.rad(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Endwinkel des Kreisausschnittes.

Defaultwert: 3.14159

Wertevorschläge: -1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097

Typischer Wertebereich: -1.178097 ≤ EndAngle EndAngle EndAngle EndAngle EndAngle endAngle ≤ 1.178097 (lin)

Minimale Schrittweite: 0.001

Empfohlene Schrittweite: 0.1

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)

Beispiel (C)

open_window(0,0,-1,-1,"root","visible","",&WindowHandle);
read_image(&Image,"montery");
gen_circle_sector(&CircleSector,300.0,200.0,150.5,0,rad(120));
reduce_domain(Image,CircleSector,Mask);
disp_color(Mask,WindowHandle);

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)

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)

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)

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(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_ellipse_sectorgen_ellipse_sectorGenEllipseSectorgen_ellipse_sectorGenEllipseSectorGenEllipseSector, 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, disp_regiondisp_regionDispRegiondisp_regionDispRegionDispRegion, set_shapeset_shapeSetShapeset_shapeSetShapeSetShape, smallest_circlesmallest_circleSmallestCirclesmallest_circleSmallestCircleSmallestCircle, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren