area_center_xldarea_center_xldAreaCenterXldAreaCenterXldarea_center_xld面积中心扩展线描述(算子)

名称

area_center_xldarea_center_xldAreaCenterXldAreaCenterXldarea_center_xld — 轮廓和多边形的面积和重心(质心)。

签名

area_center_xld(XLD : : : Area, Row, Column, PointOrder)

Herror area_center_xld(const Hobject XLD, double* Area, double* Row, double* Column, char* PointOrder)

Herror T_area_center_xld(const Hobject XLD, Htuple* Area, Htuple* Row, Htuple* Column, Htuple* PointOrder)

void AreaCenterXld(const HObject& XLD, HTuple* Area, HTuple* Row, HTuple* Column, HTuple* PointOrder)

HTuple HXLD::AreaCenterXld(HTuple* Row, HTuple* Column, HTuple* PointOrder) const

double HXLD::AreaCenterXld(double* Row, double* Column, HString* PointOrder) const

static void HOperatorSet.AreaCenterXld(HObject XLD, out HTuple area, out HTuple row, out HTuple column, out HTuple pointOrder)

HTuple HXLD.AreaCenterXld(out HTuple row, out HTuple column, out HTuple pointOrder)

double HXLD.AreaCenterXld(out double row, out double column, out string pointOrder)

def area_center_xld(xld: HObject) -> Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[str]]

def area_center_xld_s(xld: HObject) -> Tuple[float, float, float, str]

描述

area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 计算由轮廓或多边形 XLDXLDXLDXLDXLDxld 包围的区域的面积和重心(质心),并确定沿边界的点序。面积与质心是通过仅使用轮廓或多边形上的点来应用格林定理(Green's theorem)计算得出的,即不为计算特征而显式生成任何区域。如果点在轮廓或多边形中按逆时针方向排列(即数学意义上的正方向),则 PointOrderPointOrderPointOrderPointOrderpointOrderpoint_order 点序为正 'positive'"positive""positive""positive""positive""positive"。假设轮廓或多边形是闭合的。若非如此,area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 将人工闭合相应的轮廓或多边形。

需要注意的是,area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 仅在轮廓或多边形在平面上包围区域时才会返回有效结果。特别需要注意的是,轮廓或多边形不得自相交。当传递开放轮廓或多边形时,这一点尤为重要,因为它们会被自动闭合,从而可能产生自相交的情况。可使用 test_self_intersection_xldtest_self_intersection_xldTestSelfIntersectionXldTestSelfIntersectionXldTestSelfIntersectionXldtest_self_intersection_xld 检测轮廓或多边形是否自相交。若轮廓或多边形发生自相交,可通过 area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld 计算出有用的重心值。

如果传递多个轮廓或多边形,结果将按其在 XLDXLDXLDXLDXLDxld 中的顺序存储为元组。

执行信息

参数

XLDXLDXLDXLDXLDxld (输入对象)  xld(-array) objectHXLDHObjectHXLDHobject

待检查的轮廓或多边形。

AreaAreaAreaAreaareaarea (输出控制)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

由轮廓或多边形包围的面积。

RowRowRowRowrowrow (输出控制)  point.y(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

质心的行坐标。

ColumnColumnColumnColumncolumncolumn (输出控制)  point.x(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

质心的列坐标。

PointOrderPointOrderPointOrderPointOrderpointOrderpoint_order (输出控制)  string(-array) HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

沿边界的点序('正'/'负')。

复杂度

设 n 为轮廓或多边形的点数。则运行时间为 O(n)。

结果

area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 在输入不为空时返回 2 ( H_MSG_TRUE )。如果输入为空时,可设置行为通过算子 set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)。如有必要,则抛出异常。

可能的前趋

gen_contours_skeleton_xldgen_contours_skeleton_xldGenContoursSkeletonXldGenContoursSkeletonXldGenContoursSkeletonXldgen_contours_skeleton_xld, smooth_contours_xldsmooth_contours_xldSmoothContoursXldSmoothContoursXldSmoothContoursXldsmooth_contours_xld, gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXldgen_polygons_xld

替代

area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld

另见

moments_xldmoments_xldMomentsXldMomentsXldMomentsXldmoments_xld, moments_any_xldmoments_any_xldMomentsAnyXldMomentsAnyXldMomentsAnyXldmoments_any_xld, area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center, moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd

模块

基础