проверьте, существует ли точка в данной области, содержащей 4 вершины

Вам нужно извлечь оба файла JAR и восстановить их. Strike>

jar -xvf jar1.jar tmp
jar -xvf jar2.jar tmp

cd tmp
jar -cvf jar3.jar .

Пожалуйста, обратитесь к ниже ответу .

5
задан Jason S 3 June 2009 в 16:10
поделиться

4 ответа

Способ проверить, находится ли точка внутри произвольного многоугольника (любое количество сторон, в том числе вогнутый), заключается в выборе точки, которая, как вы знаете, находится ВНЕ многоугольника; если отрезок линии между проверяемой точкой и точкой, находящейся за пределами многоугольника, пересекает нечетное число сегментов многоугольника, точка находится внутри многоугольника.

6
ответ дан 14 December 2019 в 01:15
поделиться

Это задача точки в многоугольнике на сфере с системой координат, которая имеет несколько тонкостей, которые делают эту задачу сложнее, чем «обычная» задача точки в многоугольнике в плоскости XY:

1) что внутри, а что снаружи? (например, если у меня есть небольшой «квадрат» в 1 милю на стороне, охватывает ли он 1 квадратную милю или остальную часть земли? поверхность? Это тривиальный пример, но для очень больших многоугольников может быть неясно, какие из них должны быть внутри, а какие снаружи, если явно не указано иное)

2) являются ли сегменты многоугольников сегментами большого круга? Если это так, то они не представляют собой прямые линии в системе координат широта-долгота, если они не являются линиями меридиана или экватором - и вам нужно иметь дело с кривыми, а не с линиями в вашей геометрии. Сферическая геометрия - лучший вариант.

3) «края» системы координат (международная линия перемены дат и полюса) - «квадрат», ограниченный долготой +179,9 градуса, -179,9 градуса и широтой + 0,1 градуса , -0.1degree обычно не считается содержащим точку 0 N, 0 W, и будет считаться содержащим точку 0 N, 180 W. Но если вы наивно проверите неравенства с точками lat / long, вы получите противоположный ответ.

Так что у меня нет ответа, но это тонкие вопросы, которые нужно учитывать. (прочтите это как «убедитесь, что вы включили их как тестовые примеры»!)

редактировать: Я нашел пакет spheres , в котором есть метод SphericalPolygon.contains , который может делай то, что ищешь. Однако я лично не использовал этот пакет, и это GPL , а не LGPL, поэтому он «заразит» остальную часть вашего исходного кода, если вы захотите использовать его в проприетарном продукте.

содержит , который может делать то, что вы ищете. Однако я лично не использовал этот пакет, и это GPL , а не LGPL, поэтому он «заразит» остальную часть вашего исходного кода, если вы захотите использовать его в проприетарном продукте.

содержит , который может делать то, что вы ищете. Однако я лично не использовал этот пакет, и это GPL , а не LGPL, поэтому он «заразит» остальную часть вашего исходного кода, если вы захотите использовать его в проприетарном продукте.

3
ответ дан 14 December 2019 в 01:15
поделиться

Вы имеете в виду программно или математически? С точки зрения программирования это просто, если вы понимаете это математически. По сути, вершины определяют линии. Вам просто нужно знать, какая сторона линий составляет «внутри». Затем превратите свои вершины в уравнения, но используйте меньше или больше, чем равно.

То есть предположим, что у вас есть прямоугольник, определяемый следующими уравнениями: x = 1, x = 3, y = 1, y = 3

Если вы хотите знать, находится ли (2,2) внутри этой области, просто оцените каждое уравнение: x> 1, x <3, y> 1, y <3.

Если все четыре верны, точка находится внутри области.

1
ответ дан 14 December 2019 в 01:15
поделиться
-1
ответ дан 14 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

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