KlassenKlassenKlassenKlassen | | | | Operatoren

polar_trans_regionpolar_trans_regionPolarTransRegionpolar_trans_regionPolarTransRegionPolarTransRegion (Operator)

Name

polar_trans_regionpolar_trans_regionPolarTransRegionpolar_trans_regionPolarTransRegionPolarTransRegion — Anwenden einer Polarkoordinatentransformation auf eine Region innerhalb eines Kreisrings.

Signatur

polar_trans_region(Region : PolarTransRegion : Row, Column, AngleStart, AngleEnd, RadiusStart, RadiusEnd, Width, Height, Interpolation : )

Herror polar_trans_region(const Hobject Region, Hobject* PolarTransRegion, double Row, double Column, double AngleStart, double AngleEnd, double RadiusStart, double RadiusEnd, const Hlong Width, const Hlong Height, const char* Interpolation)

Herror T_polar_trans_region(const Hobject Region, Hobject* PolarTransRegion, const Htuple Row, const Htuple Column, const Htuple AngleStart, const Htuple AngleEnd, const Htuple RadiusStart, const Htuple RadiusEnd, const Htuple Width, const Htuple Height, const Htuple Interpolation)

Herror polar_trans_region(Hobject Region, Hobject* PolarTransRegion, const HTuple& Row, const HTuple& Column, const HTuple& AngleStart, const HTuple& AngleEnd, const HTuple& RadiusStart, const HTuple& RadiusEnd, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation)

HRegion HRegion::PolarTransRegion(const HTuple& Row, const HTuple& Column, const HTuple& AngleStart, const HTuple& AngleEnd, const HTuple& RadiusStart, const HTuple& RadiusEnd, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation) const

HRegionArray HRegionArray::PolarTransRegion(const HTuple& Row, const HTuple& Column, const HTuple& AngleStart, const HTuple& AngleEnd, const HTuple& RadiusStart, const HTuple& RadiusEnd, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation) const

void PolarTransRegion(const HObject& Region, HObject* PolarTransRegion, const HTuple& Row, const HTuple& Column, const HTuple& AngleStart, const HTuple& AngleEnd, const HTuple& RadiusStart, const HTuple& RadiusEnd, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation)

HRegion HRegion::PolarTransRegion(const HTuple& Row, const HTuple& Column, double AngleStart, double AngleEnd, const HTuple& RadiusStart, const HTuple& RadiusEnd, Hlong Width, Hlong Height, const HString& Interpolation) const

HRegion HRegion::PolarTransRegion(double Row, double Column, double AngleStart, double AngleEnd, double RadiusStart, double RadiusEnd, Hlong Width, Hlong Height, const HString& Interpolation) const

HRegion HRegion::PolarTransRegion(double Row, double Column, double AngleStart, double AngleEnd, double RadiusStart, double RadiusEnd, Hlong Width, Hlong Height, const char* Interpolation) const

void HOperatorSetX.PolarTransRegion(
[in] IHUntypedObjectX* Region, [out] IHUntypedObjectX*PolarTransRegion, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT AngleStart, [in] VARIANT AngleEnd, [in] VARIANT RadiusStart, [in] VARIANT RadiusEnd, [in] VARIANT Width, [in] VARIANT Height, [in] VARIANT Interpolation)

IHRegionX* HRegionX.PolarTransRegion(
[in] VARIANT Row, [in] VARIANT Column, [in] double AngleStart, [in] double AngleEnd, [in] VARIANT RadiusStart, [in] VARIANT RadiusEnd, [in] Hlong Width, [in] Hlong Height, [in] BSTR Interpolation)

static void HOperatorSet.PolarTransRegion(HObject region, out HObject polarTransRegion, HTuple row, HTuple column, HTuple angleStart, HTuple angleEnd, HTuple radiusStart, HTuple radiusEnd, HTuple width, HTuple height, HTuple interpolation)

HRegion HRegion.PolarTransRegion(HTuple row, HTuple column, double angleStart, double angleEnd, HTuple radiusStart, HTuple radiusEnd, int width, int height, string interpolation)

HRegion HRegion.PolarTransRegion(double row, double column, double angleStart, double angleEnd, double radiusStart, double radiusEnd, int width, int height, string interpolation)

Beschreibung

polar_trans_regionpolar_trans_regionPolarTransRegionpolar_trans_regionPolarTransRegionPolarTransRegion transformiert eine RegionRegionRegionRegionRegionregion, die innerhalb des durch den Mittelpunkt (RowRowRowRowRowrow, ColumnColumnColumnColumnColumncolumn), die Radien RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart und RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd und die Winkel AngleStartAngleStartAngleStartAngleStartAngleStartangleStart und AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd definierten Kreisrings liegt, auf dessen Polarkoordinatendarstellung in der Region PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion in einem virtuellen Bild mit den Dimensionen WidthWidthWidthWidthWidthwidth x HeightHeightHeightHeightHeightheight.

Die Polartransformation entspricht einem Wechsel des Koordinatensystems. Anstatt durch Zeilen- und Spaltenkoordinate wird die Position eines Punktes durch dessen Radius (Abstand zum Mittelpunkt RowRowRowRowRowrow,ColumnColumnColumnColumnColumncolumn) und den Winkel zwischen der Spaltenachse (durch den Mittelpunkt) und der Strecke vom Mittelpunkt zum Punkt beschrieben. Diese Transformation ist nicht affin.

Die Koordinate (0,0) in der Ausgabregion entspricht immer dem Punkt in der Eingaberegion, der durch RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart und AngleStartAngleStartAngleStartAngleStartAngleStartangleStart spezifiziert wird. Analog entspricht die Koordinate (HeightHeightHeightHeightHeightheight-1, WidthWidthWidthWidthWidthwidth-1) immer dem Punkt in der Eingaberegion, der durch RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd und AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd spezifiziert wird. Im Normalfall (AngleStartAngleStartAngleStartAngleStartAngleStartangleStart < AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd und RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart < RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd) wird die Polarkoordinatentransformation also in mathematisch positiver Durchlaufrichtung (entgegen dem Uhrzeigersinn) durchgeführt. Dabei liegen die Punkte mit kleineren Radien in der Ausgaberegion weiter oben. Durch geeignetes Vertauschen der Werte der Parameter (z.B. AngleStartAngleStartAngleStartAngleStartAngleStartangleStart > AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd oder RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart > RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd) kann jede beliebige Orientierung der Ausgaberegion erreicht werden.

Die Winkel sind frei als reelle Zahlen wählbar, Mittelpunkt und Radien können ebenfalls frei als reelle Zahlen gewählt werden. Sind diese jedoch ganze Zahlen und entspricht die Differenz von RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd und RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart dem Wert HeightHeightHeightHeightHeightheight-1, so wird die Berechnung durch eine optimierte Routine erheblich schneller durchgeführt.

Die Radien und Winkel sind inklusive, d.h. die erste Zeile des virtuellen Zielbildes entspricht dem Kreis mit dem Radius RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart, die letzte Zeile dem mit dem Radius RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd. Für Vollkreise, bei denen die Differenz AngleStartAngleStartAngleStartAngleStartAngleStartangleStart - AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd (360 Grad) beträgt, bedeutet dies insbesondere, dass die erste Spalte des virtuellen Zielbildes gleich der letzten ist.

Um diesem Verhalten vorzubeugen, sollte diese Differenz statt betragen.

Über den Parameter InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation kann dabei zwischen den Interpolationsverfahren 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" und 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor" gewählt werden. Die Wahl InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" kann insbesondere bei Vergrößerungen zu glatteren Regionenrändern führen. Allerdings steigt dadurch die Laufzeit signifikant an.

Werden mehrere Regionen in RegionRegionRegionRegionRegionregion übergeben, werden deren Polartransformationen individuell berechnet und als Tupel in PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion abgespeichert. Dabei entsprechen die Indizes von Ein- und Ausgaberegionen nur dann einander, wenn die Systemvariable 'store_empty_regions'"store_empty_regions""store_empty_regions""store_empty_regions""store_empty_regions""store_empty_regions" auf 'true'"true""true""true""true""true" gesetzt wird (siehe auch 'set_system'"set_system""set_system""set_system""set_system""set_system"). Sonst werden leere Regionen nicht zurückgegeben und deshalb entspricht die Länge des Ausgabetupels PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion im Allgemeinen nicht der Länge des Eingabetupels RegionRegionRegionRegionRegionregion.

Achtung

Werden die Dimensionen des virtuellen Ausgabebildes WidthWidthWidthWidthWidthwidth und HeightHeightHeightHeightHeightheight größer als die Dimensionen des aktuellen Bildes gewählt, sollte die Systemvariable 'clip_region'"clip_region""clip_region""clip_region""clip_region""clip_region" auf 'false'"false""false""false""false""false" gesetzt werden (siehe auch set_systemset_systemSetSystemset_systemSetSystemSetSystem). Andernfalls kann eine Ausgaberegion, die nicht innerhalb der Dimensionen des aktuellen Bildes liegt, zu einer Fehlermeldung führen.

Parallelisierung

Parameter

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Eingaberegion.

PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Ergebnisregion.

RowRowRowRowRowrow (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilenkoordinate des Kreismittelpunktes.

Defaultwert: 256

Wertevorschläge: 0, 16, 32, 64, 128, 240, 256, 480, 512

Typischer Wertebereich: 0 ≤ Row Row Row Row Row row ≤ 32767

Restriktion: Row >= -131068 && Row <= 131068

ColumnColumnColumnColumnColumncolumn (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spaltenkoordinate des Kreismittelpunktes.

Defaultwert: 256

Wertevorschläge: 0, 16, 32, 64, 128, 256, 320, 512, 640

Typischer Wertebereich: 0 ≤ Column Column Column Column Column column ≤ 32767

Restriktion: Column >= -131068 && Column <= 131068

AngleStartAngleStartAngleStartAngleStartAngleStartangleStart (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Winkel, der auf die Spaltenkoordinate 0 in PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion abgebildet wird.

Defaultwert: 0.0

Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616

Typischer Wertebereich: -6.2831853 ≤ AngleStart AngleStart AngleStart AngleStart AngleStart angleStart ≤ 6.2831853

AngleEndAngleEndAngleEndAngleEndAngleEndangleEnd (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Winkel, der auf die Spaltenkoordinate WidthWidthWidthWidthWidthwidth -1 in PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion abgebildet wird.

Defaultwert: 6.2831853

Wertevorschläge: 0.0, 0.78539816, 1.57079632, 3.141592654, 6.2831853, 12.566370616

Typischer Wertebereich: -6.2831853 ≤ AngleEnd AngleEnd AngleEnd AngleEnd AngleEnd angleEnd ≤ 6.2831853

RadiusStartRadiusStartRadiusStartRadiusStartRadiusStartradiusStart (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Kreisradius, der auf die Zeilenkoordinate 0 in PolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionPolarTransRegionpolarTransRegion abgebildet wird.

Defaultwert: 0

Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512

Typischer Wertebereich: 0 ≤ RadiusStart RadiusStart RadiusStart RadiusStart RadiusStart radiusStart ≤ 32767

RadiusEndRadiusEndRadiusEndRadiusEndRadiusEndradiusEnd (input_control)  number HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Kreisradius, der auf die Zeilenkoordinate HeightHeightHeightHeightHeightheight-1 abgebildet wird.

Defaultwert: 100

Wertevorschläge: 0, 16, 32, 64, 100, 128, 256, 512

Typischer Wertebereich: 0 ≤ RadiusEnd RadiusEnd RadiusEnd RadiusEnd RadiusEnd radiusEnd ≤ 32767

WidthWidthWidthWidthWidthwidth (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des virtuellen Zielbildes.

Defaultwert: 512

Wertevorschläge: 256, 320, 512, 640, 800, 1024

Typischer Wertebereich: 2 ≤ Width Width Width Width Width width ≤ 32767

HeightHeightHeightHeightHeightheight (input_control)  number HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe des virtuellen Zielbildes.

Defaultwert: 512

Wertevorschläge: 240, 256, 480, 512, 600, 1024

Typischer Wertebereich: 2 ≤ Height Height Height Height Height height ≤ 32767

InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Interpolationsverfahren für die Transformation.

Defaultwert: 'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor"

Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"

Siehe auch

polar_trans_image_extpolar_trans_image_extPolarTransImageExtpolar_trans_image_extPolarTransImageExtPolarTransImageExt, polar_trans_image_invpolar_trans_image_invPolarTransImageInvpolar_trans_image_invPolarTransImageInvPolarTransImageInv, polar_trans_region_invpolar_trans_region_invPolarTransRegionInvpolar_trans_region_invPolarTransRegionInvPolarTransRegionInv, polar_trans_contour_xldpolar_trans_contour_xldPolarTransContourXldpolar_trans_contour_xldPolarTransContourXldPolarTransContourXld, polar_trans_contour_xld_invpolar_trans_contour_xld_invPolarTransContourXldInvpolar_trans_contour_xld_invPolarTransContourXldInvPolarTransContourXldInv

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren