Проверьте, перекрываются ли две ограничивающие рамкиC#

Место общения программистов C#
Anonymous
Проверьте, перекрываются ли две ограничивающие рамки

Сообщение Anonymous »

Я сделал что-то вроде этого:

Код: Выделить всё

Pseudo:
`Function checkOverlap(thisRectangle, otherRectangle):
if thisRectangle.UpperRight.Longitude < otherRectangle.LowerLeft.Longitude
return false
if thisRectangle.LowerLeft.Longitude > otherRectangle.UpperRight.Longitude
return false
if thisRectangle.UpperRight.Latitude < otherRectangle.LowerLeft.Latitude
return false
if thisRectangle.LowerLeft.Latitude > otherRectangle.UpperRight.Latitude
return false
return true`
Но мне также приходится иметь дело с международной линией дат. Любые предложения, как это объяснить - я немного запутался.
Редактировать
Ограничительная рамка в основном состоит из двух координат с долготой и широты между -180 и 180. У нас есть LowerLeft и Upperright для определения ограничивающей рамки. Мы определяем нижнюю левую координату по двум заданным координатам, сравнивая их значения широты и долготы с помощью функции min. Мы делаем то же самое, чтобы получить координату UpperRight, используя функцию max как для широты, так и для долготы. Используя это, мы имеем нижние левые и верхние правые координаты ограничивающего прямоугольника, поэтому мы можем использовать приведенную выше логику для проверки пересечений. Однако я сомневаюсь в пересечении линии даты, поскольку мы переходим от -180 к +180 и наоборот

Подробнее здесь: https://stackoverflow.com/questions/785 ... es-overlap

Вернуться в «C#»