area_center_xldarea_center_xldAreaCenterXldAreaCenterXldarea_center_xld面积中心扩展线描述(算子)
名称
area_center_xldarea_center_xldAreaCenterXldAreaCenterXldarea_center_xld — 轮廓和多边形的面积和重心(质心)。
签名
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
模块
基础