area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld面积中心点扩展线描述(算子)
名称
area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld — 被视为点云的轮廓和多边形的面积和重心(质心)。
签名
Herror area_center_points_xld(const Hobject XLD, double* Area, double* Row, double* Column)
Herror T_area_center_points_xld(const Hobject XLD, Htuple* Area, Htuple* Row, Htuple* Column)
def area_center_points_xld(xld: HObject) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]
def area_center_points_xld_s(xld: HObject) -> Tuple[float, float, float]
描述
area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld 计算由轮廓或多边形 XLDXLDXLDXLDXLDxld 给定的点云的面积和重心(质心),即不考虑轮廓或多边形中点的顺序。面积对应于点云中的点数。质心由所有点的算术平均值给出。若轮廓或多边形为闭合(终点=起点),则不计入该轮廓或多边形的终点,以避免其权重被重复计算两次。
如果轮廓 XLDXLDXLDXLDXLDxld 发生自相交,或无法通过从终点到起点的线段闭合轮廓而不产生自相交,则应使用 area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld,因为此时 area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 无法产生有效结果。可使用 test_self_intersection_xldtest_self_intersection_xldTestSelfIntersectionXldTestSelfIntersectionXldTestSelfIntersectionXldtest_self_intersection_xld 检测轮廓或多边形是否自相交。
如果传递多个轮廓或多边形,结果将按其在 XLDXLDXLDXLDXLDxld 中的顺序存储为元组。
注意
即使轮廓或多边形 XLDXLDXLDXLDXLDxld 未发生自相交,area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld 的计算结果仍与 area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld 存在显著差异,因为前者基于点云数据而非封闭区域进行计算。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
参数
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)
质心的列坐标。
复杂度
设 n 为轮廓或多边形的点数。则运行时间为 O(n)。
结果
area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_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_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld
另见
moments_points_xldmoments_points_xldMomentsPointsXldMomentsPointsXldMomentsPointsXldmoments_points_xld,
moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld,
area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center,
moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd
模块
基础