Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Столкновение картинок, столкновения, реализация метода определения столкновения (https://javascript.ru/forum/misc/66615-stolknovenie-kartinok-stolknoveniya-realizaciya-metoda-opredeleniya-stolknoveniya.html)

ryslan-yc 27.12.2016 19:19

Столкновение картинок, столкновения, реализация метода определения столкновения
 
Здравствуйте.
Вот нужно реализовать метод который определяет касается картинка картинки 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:
Или может у вас есть идеи как повысить производительность.

рони 27.12.2016 19:35

ryslan-yc,
:)
if(el1.style.left - el2.style.left < 200) бумсс!!!

ryslan-yc 27.12.2016 20:12

картинка векторная или с прозрачным фоном это значить что с размером 20 на 10 допустим нас получается такая картина
Припустим пиксельная сетка
000000000X0000000000
00000000XXX000000000
0000000XXXXX00000000
000000XXXXXXX0000000
00000XXXXXXXXX00000
0000XXXXXXXXXXX0000
00000XXXXXXXXX00000
000000XXXXXXX000000
0000000ХХХХХ0000000
00000000000000000000
X: это закрашена картинка 0: это пусто здесь столкновения не будет.
Если на нее налезет картинка слева или справа меньше чем на 4 (0,Х)
то касания как бы то не будет, оно уже есть если брать блок но его нету если брать картинку (отображаемую часть)


Часовой пояс GMT +3, время: 16:16.