Вам нужно извлечь оба файла JAR и восстановить их. Strike>
jar -xvf jar1.jar tmp
jar -xvf jar2.jar tmp
cd tmp
jar -cvf jar3.jar .
Пожалуйста, обратитесь к ниже ответу .
Способ проверить, находится ли точка внутри произвольного многоугольника (любое количество сторон, в том числе вогнутый), заключается в выборе точки, которая, как вы знаете, находится ВНЕ многоугольника; если отрезок линии между проверяемой точкой и точкой, находящейся за пределами многоугольника, пересекает нечетное число сегментов многоугольника, точка находится внутри многоугольника.
Это задача точки в многоугольнике на сфере с системой координат, которая имеет несколько тонкостей, которые делают эту задачу сложнее, чем «обычная» задача точки в многоугольнике в плоскости 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, поэтому он «заразит» остальную часть вашего исходного кода, если вы захотите использовать его в проприетарном продукте.Вы имеете в виду программно или математически? С точки зрения программирования это просто, если вы понимаете это математически. По сути, вершины определяют линии. Вам просто нужно знать, какая сторона линий составляет «внутри». Затем превратите свои вершины в уравнения, но используйте меньше или больше, чем равно.
То есть предположим, что у вас есть прямоугольник, определяемый следующими уравнениями: x = 1, x = 3, y = 1, y = 3
Если вы хотите знать, находится ли (2,2) внутри этой области, просто оцените каждое уравнение: x> 1, x <3, y> 1, y <3.
Если все четыре верны, точка находится внутри области.
Достаточно просто:
http://pietschsoft.com/post/2008/07/Virtual-Earth-Polygon-Search-Is-Point-Within-Polygon.aspx