ClassesClassesClassesClasses | | | | Operators

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXld (Operator)

Name

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXld — Arbitrary geometric moments of contours or polygons treated as point clouds.

Signature

moments_any_points_xld(XLD : : Mode, Area, CenterRow, CenterCol, P, Q : M)

Herror moments_any_points_xld(const Hobject XLD, const char* Mode, double Area, double CenterRow, double CenterCol, const Hlong P, const Hlong Q, double* M)

Herror T_moments_any_points_xld(const Hobject XLD, const Htuple Mode, const Htuple Area, const Htuple CenterRow, const Htuple CenterCol, const Htuple P, const Htuple Q, Htuple* M)

Herror moments_any_points_xld(Hobject XLD, const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q, double* M)

Herror moments_any_points_xld(Hobject XLD, const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q, HTuple* M)

double HXLD::MomentsAnyPointsXld(const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q) const

HTuple HXLDArray::MomentsAnyPointsXld(const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q) const

void MomentsAnyPointsXld(const HObject& XLD, const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q, HTuple* M)

HTuple HXLD::MomentsAnyPointsXld(const HString& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q) const

double HXLD::MomentsAnyPointsXld(const HString& Mode, double Area, double CenterRow, double CenterCol, Hlong P, Hlong Q) const

double HXLD::MomentsAnyPointsXld(const char* Mode, double Area, double CenterRow, double CenterCol, Hlong P, Hlong Q) const

void HOperatorSetX.MomentsAnyPointsXld(
[in] IHUntypedObjectX* XLD, [in] VARIANT Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q, [out] VARIANT* M)

VARIANT HXLDX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

VARIANT HXLDContX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

VARIANT HXLDPolyX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

VARIANT HXLDParaX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

VARIANT HXLDModParaX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

VARIANT HXLDExtParaX.MomentsAnyPointsXld(
[in] BSTR Mode, [in] VARIANT Area, [in] VARIANT CenterRow, [in] VARIANT CenterCol, [in] VARIANT P, [in] VARIANT Q)

static void HOperatorSet.MomentsAnyPointsXld(HObject XLD, HTuple mode, HTuple area, HTuple centerRow, HTuple centerCol, HTuple p, HTuple q, out HTuple m)

HTuple HXLD.MomentsAnyPointsXld(string mode, HTuple area, HTuple centerRow, HTuple centerCol, HTuple p, HTuple q)

double HXLD.MomentsAnyPointsXld(string mode, double area, double centerRow, double centerCol, int p, int q)

Description

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXld calculates arbitrary moments MMMMMm of the point clouds given by the contours or polygons XLDXLDXLDXLDXLDXLD (i.e., the order of the points in the contour or polygon is not taken into account).

The computed moments are normalized depending on the desired mode ModeModeModeModeModemode:

'unnormalized':

No normalization.

'unnormalized_central':

Shift the contour points by their centroid

'normalized':

Normalization by the area A = AreaAreaAreaAreaAreaarea

'central':

Normalization by the area A = AreaAreaAreaAreaAreaarea and a shift of the contour points by their centroid

For the normalization of the moments three specific values are used: The area AreaAreaAreaAreaAreaarea and the coordinates CenterRowCenterRowCenterRowCenterRowCenterRowcenterRow,CenterColCenterColCenterColCenterColCenterColcenterCol of it's centroid (this values can be computed with area_center_points_xldarea_center_points_xldAreaCenterPointsXldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXld).

If the contour or polygon is closed (end point = start point), the end point of the contour or polygon is not taken into account to avoid that it receives twice the weight of the other points.

moments_any_xldmoments_any_xldMomentsAnyXldmoments_any_xldMomentsAnyXldMomentsAnyXld should be used if the contour XLDXLDXLDXLDXLDXLD intersects itself or if it is not possible to close the contour using a line from end to start point without self-intersection, because in this case moments_any_xldmoments_any_xldMomentsAnyXldmoments_any_xldMomentsAnyXldMomentsAnyXld does not produce useful results. To test whether the contours or polygons intersect themselves, test_self_intersection_xldtest_self_intersection_xldTestSelfIntersectionXldtest_self_intersection_xldTestSelfIntersectionXldTestSelfIntersectionXld can be used.

If more than one contour or polygon is passed, MMMMMm contains all desired moments of the first contour/polygon followed by all the moments of the second contour/polygon and so forth.

Parallelization

Parameters

XLDXLDXLDXLDXLDXLD (input_object)  xld(-array) objectHXLDHXLDHXLDHXLDXHobject

Contours or polygons to be examined.

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

Computation mode.

Default value: 'unnormalized' "unnormalized" "unnormalized" "unnormalized" "unnormalized" "unnormalized"

Suggested values: 'unnormalized'"unnormalized""unnormalized""unnormalized""unnormalized""unnormalized", 'unnormalized_central'"unnormalized_central""unnormalized_central""unnormalized_central""unnormalized_central""unnormalized_central", 'normalized'"normalized""normalized""normalized""normalized""normalized", 'central'"central""central""central""central""central"

AreaAreaAreaAreaAreaarea (input_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Area enclosed by the contour or polygon.

CenterRowCenterRowCenterRowCenterRowCenterRowcenterRow (input_control)  point.y(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Row coordinate of the centroid.

CenterColCenterColCenterColCenterColCenterColcenterCol (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Column coordinate of the centroid.

PPPPPp (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

First index of the desired moments .

Default value: 1

Suggested values: 0, 1, 2, 3, 4

QQQQQq (input_control)  point.x(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Second index of the desired moments .

Default value: 1

Suggested values: 0, 1, 2, 3, 4

MMMMMm (output_control)  real(-array) HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

The computed moments.

Complexity

Let n be the number of points of the contour or polygon. Then the run time is O(n).

Result

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXld returns 2 (H_MSG_TRUE) if the input is not empty. If the input is empty the behavior can be set via set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>). If necessary, an exception is raised.

Possible Predecessors

area_center_points_xldarea_center_points_xldAreaCenterPointsXldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXld, gen_contours_skeleton_xldgen_contours_skeleton_xldGenContoursSkeletonXldgen_contours_skeleton_xldGenContoursSkeletonXldGenContoursSkeletonXld, smooth_contours_xldsmooth_contours_xldSmoothContoursXldsmooth_contours_xldSmoothContoursXldSmoothContoursXld, gen_polygons_xldgen_polygons_xldGenPolygonsXldgen_polygons_xldGenPolygonsXldGenPolygonsXld

Alternatives

moments_points_xldmoments_points_xldMomentsPointsXldmoments_points_xldMomentsPointsXldMomentsPointsXld, moments_any_xldmoments_any_xldMomentsAnyXldmoments_any_xldMomentsAnyXldMomentsAnyXld

See also

moments_points_xldmoments_points_xldMomentsPointsXldmoments_points_xldMomentsPointsXldMomentsPointsXld, area_center_points_xldarea_center_points_xldAreaCenterPointsXldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXld, moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd, area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter

Module

Foundation


ClassesClassesClassesClasses | | | | Operators