Алгоритм наведения луча обычно используется для определения, находится ли данная точка в пределах многоугольника. Этот ответ содержит реализацию в C #.
Также NetTopologySuite
библиотека может быть использована для этого вопроса, в частности NetTopologySuite.Algorithm.Locate.IndexedPointInAreaLocator class
:
var triangleCoords = new[] {
new Coordinate(25.774, -80.19),
new Coordinate(18.466, -66.118),
new Coordinate(32.321, -64.757),
new Coordinate(25.774, -80.19)
};
IGeometryFactory geometryFactory = new GeometryFactory();
var poly = geometryFactory.CreatePolygon(triangleCoords);
var locator = new NetTopologySuite.Algorithm.Locate.IndexedPointInAreaLocator(poly);
var location = locator.Locate(new Coordinate(24.886, -70.269));
if (location == GeoAPI.Geometries.Location.Interior)
{
Console.WriteLine("Polygon contains the location");
}