Skip to content

Commit b56fe5f

Browse files
authored
Merge pull request #19924 from codecrusher64/fix-is-point-in-polygon
Fix function `_is_point_in_polygon()`
2 parents 0def2ec + 7f70077 commit b56fe5f

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

src/common/map_locations.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,10 @@ static gboolean _is_point_in_polygon(const dt_geo_map_display_point_t *pt,
263263
lat2 = plp->lat;
264264
lon2 = plp->lon;
265265
}
266-
if(!(((lat1 > pt->lat) && (lat2 > pt->lat)) ||
267-
((lat1 < pt->lat) && (lat2 < pt->lat))))
266+
if((lat1 > pt->lat) != (lat2 > pt->lat))
268267
{
269-
const float sl = lon1 + (lon2 - lon1) * (pt->lat - lat1) / (lat2 - lat1);
270-
if(pt->lon > sl)
268+
const float sl = (lat2 - lat1) * (pt->lon - lon1) - (lon2 - lon1) * (pt->lat - lat1);
269+
if((sl > 0) != (lat2 < lat1))
271270
inside = !inside;
272271
}
273272
lat1 = lat2;

0 commit comments

Comments
 (0)