实现多边形区域侦测功能,判断算法返回矩形区域是否在任意多边形区域内

2023-12-14 00:20:12

1.建立polygonregion.c文件,实现功能函数
#include <stdlib.h>
#include <string.h>

#define LOG_TAG “polygonregion”
#include “log.h”
#include “tl_osal.h”
#include “plat_sys.h”
#include “utils.h”

#include “polygonregion.h”

/**

  • @brief 射线法
  • @param p 需要判断的点
  • @param poly 多边形点坐标
  • @param num 多边形点个数
  • @return int
    */
    int IsInPolygonRegion(PRPoint p, PRPoint *poly, int num)
    {
    int flag = 0, i;
    for (i = 0; i < num; i++) {
    // 多边形的边的两个点 p1,p2
    PRPoint p1 = poly[i];
    PRPoint p2 = poly[(i + 1) % num];
    // 点的 Y 坐标一个大于等于,一个小于
    if ((p.y >= p1.y && p.y < p2.y) || (p.y >= p2.y && p.y < p1.y)) {
    // 交点计算,两点式
    float x = (p.y - p1.y) * (p2.x - p1.x) / (p2.y - p1.y) + p1.x;
    // 交点 X 坐标肯定在前

文章来源:https://blog.csdn.net/lxy_tap/article/details/134855761
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。