Задать вопрос
@miuon761

Как взять значение из массива?

Как взять значение из массива, проверить его оператором if-else и выдать результат?
Пример: есть массив с координатами
Задача: проверить условие попадания в область с заданными координатами
  • Вопрос задан
  • 137 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
@kttotto
пофиг на чем писать
Обычным if-else эта задача не решится. Это попадание точки в полигон. Если полностью описывать алгоритм, то нужно перебрать вектора (два соседних элемента в массиве, это один вектор) и смотреть с какой стороны вектора эта точка находится. Иначе говоря, при движении по оси Х пересекает она вектор или нет. Для этого используется косое умножение векторов. Суммируем и смотрим, если точка пересекла четное количество раз векторы, то она не входит в полигон, если не четное - попадает в площадь полигона.

Это мой работающий код, модели из GeoJSON.Net
public bool IsBelong(Point point, IGeometryObject geoGeometry)
{
	var polygon = ((Polygon) geoGeometry).Coordinates;

	var inPolygon = false;

	var x = point.Coordinates.Latitude;
	var y = point.Coordinates.Longitude;

	var points = polygon[0].Coordinates;

	for (var i = 0; i < points.Count - 1; i++)
	{
		if (((points[i + 1].Longitude > y) != (points[i].Longitude >= y)) 
				&& 
			(x < (points[i].Latitude - points[i + 1].Latitude) * (y - points[i + 1].Longitude) / (points[i].Longitude - points[i + 1].Longitude) + points[i + 1].Latitude))
		{
			inPolygon = !inPolygon;
		}
	}
	return inPolygon;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks Куратор тега C#
if(array[index]>0)return true;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы