Столкновение картинок, столкновения, реализация метода определения столкновения
Здравствуйте.
Вот нужно реализовать метод который определяет касается картинка картинки 2 учитывая что у них нет фона или они векторные . Демо: http://ruslanuch.zzz.com.ua/html.html Есть следующая идея: Проверяем (X,Y 1px 1 картинки)=(X,Y 1px 2 картинки )||(X,Y 1px 1 картинки)=(X,Y 2px 2 картинки) и так далее до победного конца. Метод 2: у нас есть область где картинка 1 наползает на картинку 2 мы ставим картинку 1 выше второй, узнаем на каких координатах они наползают друг на друга, допустим Х:[0,10] Y:[5,10] и проверяем методом document.elementFromPoint(x, y); X:0,Y:5 если вернуло не картинку 1 не 2 значить не эта точка = false следующая X:1,Y:5 если метод вернул картинку 2 значит false ведь картинка 2 прорисована ниже и нам вернуло ее а значить что картинка 1 там не прорисована, идем дальше X:2,Y:5 метод нам вернул картинку 1 а это значит что здесь возможно столкновение!И мы на время ставим картину 2 сверху и вызываем document.elementFromPoint(x, y); с темы же координаторами и если вернет картинку 2 значит здесь они пересекаются иначе идем дальше, надеюсь принцип работы вам понятен. Как на меня метод 2 будет более производительным чем первый, но все же он очень "тяжёлый, медленный, сложный (по роботе)" может есть подобное методы в браузере или JS, фейерверки использовать не хочу:stop: Или может у вас есть идеи как повысить производительность. |
ryslan-yc,
:) if(el1.style.left - el2.style.left < 200) бумсс!!! |
картинка векторная или с прозрачным фоном это значить что с размером 20 на 10 допустим нас получается такая картина
Припустим пиксельная сетка 000000000X0000000000 00000000XXX000000000 0000000XXXXX00000000 000000XXXXXXX0000000 00000XXXXXXXXX00000 0000XXXXXXXXXXX0000 00000XXXXXXXXX00000 000000XXXXXXX000000 0000000ХХХХХ0000000 00000000000000000000 X: это закрашена картинка 0: это пусто здесь столкновения не будет. Если на нее налезет картинка слева или справа меньше чем на 4 (0,Х) то касания как бы то не будет, оно уже есть если брать блок но его нету если брать картинку (отображаемую часть) |
Часовой пояс GMT +3, время: 16:16. |