C++ y Python se dan cuenta de si el punto está dentro del área

C++ y Python se dan cuenta de si el punto está dentro del área

Método: método de rayos

Referencia: https://cloud.tencent.com/developer/article/1515808

Método del rayo: dibuje un rayo desde el punto de juicio hasta una determinada dirección unificada y juzgue en función del número par o impar de puntos de intersección;

El método del rayo comienza desde el punto de juicio, dibuja un rayo en dirección horizontal hacia la derecha (o izquierda) y calcula el número de intersecciones entre el rayo y cada lado del polígono. Si el número de intersecciones es un número impar , el punto está ubicado dentro del polígono, y si es un número par, el punto está ubicado dentro del polígono, fuera del polígono. Este algoritmo también puede juzgar correctamente polígonos compuestos.

La clave del método del rayo es calcular correctamente si el rayo cruza cada borde. Y se estipula que el segmento de línea y el rayo se superponen o el rayo pasa por el punto final inferior del segmento de línea y es disjunto.

Código fuente C++:
// 定义经纬度坐标点结构体
struct Point {
    double log; // 经度
    double lat; // 纬度
};

// 判断经纬度点是否在任意多边形内
bool isPointInPolygon(const Point& point, const vector<Point>& polygon) 
{
    int n = polygon.size();
    int count = 0;
    for (int i = 0; i < n; i++) 
    {
        Point p1 = polygon[i];
        Point p2 = polygon[(i + 1) % n];
        if (point.lat < min(p1.lat, p2.lat) || point.lat >= max(p1.lat, p2.lat)) 
        {
            continue;
        }
  

Supongo que te gusta

Origin blog.csdn.net/qq_42835363/article/details/131552175
Recomendado
Clasificación