HarmonyOS鸿蒙Next中如何判断点是否在所画的多边形区域内

HarmonyOS鸿蒙Next中如何判断点是否在所画的多边形区域内 知道一个点经纬度,知道HWPolygon 对象,怎么判断在这个多边形区域内

2 回复

开发者您好:

这个需要您自己算,不属于Map的能力;

点有经纬度, 多边形也是根据经纬度画的。

更多关于HarmonyOS鸿蒙Next中如何判断点是否在所画的多边形区域内的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,判断点是否在多边形区域内可以使用射线交叉法。具体步骤如下:

  1. 定义多边形顶点:将多边形的顶点按顺序存储在一个列表中。
  2. 射线交叉算法:从待测点向任意方向(如水平向右)引一条射线,计算射线与多边形边的交叉次数。
  3. 判断规则:如果交叉次数为奇数,则点在多边形内;偶数则在外。

代码示例:

boolean isPointInPolygon(Point point, List<Point> polygon) {
    int crossCount = 0;
    for (int i = 0, j = polygon.size() - 1; i < polygon.size(); j = i++) {
        if (((polygon.get(i).y > point.y) != (polygon.get(j).y > point.y)) &&
            (point.x < (polygon.get(j).x - polygon.get(i).x) * (point.y - polygon.get(i).y) / (polygon.get(j).y - polygon.get(i).y) + polygon.get(i).x)) {
            crossCount++;
        }
    }
    return crossCount % 2 == 1;
}

此方法适用于任意简单多边形。

回到顶部