@Nikola24

Проверка пересечения квадратов?

Делаю проверку на пересечение квадратов, если я делаю область и другой квадрат полностью входит в эту область то проверка работает, но если я делаю так что бы квадрат входил на половину, то проверка ничего не находит, что я делаю не так?
function rectangleSelect(selector, x1, y1, x2, y2) {
    var elements = [];
    jQuery(selector).each(function() {
        var $this = jQuery(this);
        var offset = $this.offset();
        var x = offset.left;
        var y = offset.top;
        var w = $this.width();
        var h = $this.height();       
     
        if (Math.round(x) >= x1  && Math.round(y) >= y1  && Math.round(x + w) <= x2  && Math.round(y + h) <= y2) {
            // this element fits inside the selection rectangle
            elements.push($this.get(0));
        }

    });
    return elements;
}

Значения области: x1= 783 y1= 498 x2= 816 y2= 527
Значения квадрата: x1= 503 y1 = 794 x2 = 515 y2= 806
  • Вопрос задан
  • 963 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
x1 < x+w && x < x2 && y1 < y+h && y < y2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Используйте эту библиотеку https://github.com/Mtillmann/jquery-rect
Весит всего 1.57 KB
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. вначале, допустим, что у нас опорная точка - это левый верхний угол прямоугольников (минимальный x и y из 4-х угловых точек).
2. считаем расстояние между этими 2-мя точками: |x2-x1| и |y2-y1|
3. считаем длины рёбер: w1,h1 и w2,h2 (для каждого из прямоугольников ширина и высота)
4. прямоугольники будут пересекаться, если |x2-x1|<|w1-w2| и |y2-y1|<|h1-h2|
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы