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

名称

area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld — 被视为点云的轮廓和多边形的面积和重心(质心)。

签名

area_center_points_xld(XLD : : : Area, Row, Column)

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)

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

HTuple HXLD::AreaCenterPointsXld(HTuple* Row, HTuple* Column) const

double HXLD::AreaCenterPointsXld(double* Row, double* Column) const

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

HTuple HXLD.AreaCenterPointsXld(out HTuple row, out HTuple column)

double HXLD.AreaCenterPointsXld(out double row, out double 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

模块

基础