соприкосновение 2-ух объектов
Помогите написать функцию, определяющую соприкасается 2 объекта или нет
на вход подаётся 2 объекта (координаты можно получить, высота и ширина каждого известны) функция должна вернуть true или false Вот мой код но он работает не корректно function touchTwins(el,tw) { var elArr = new Array(); ax = Number(tw.style.left.substring(0,tw.style.left.indexOf('px'))); ay = Number(tw.style.top.substring(0,tw.style.top.indexOf('px'))); axx = Number(tw.style.left.substring(0,tw.style.left.indexOf('px')))+15; ayy = Number(tw.style.top.substring(0,tw.style.top.indexOf('px')))+15; elArr['x1'] = Number(el.style.top.substring(0,el.style.top.indexOf('px'))); elArr['y1'] = Number(el.style.top.substring(0,el.style.top.indexOf('px'))); elArr['x2'] = Number(el.style.top.substring(0,el.style.top.indexOf('px')))+36; elArr['y2'] = Number(el.style.top.substring(0,el.style.top.indexOf('px')))+66; if (tochkTouch(ax,ay,elArr)||tochkTouch(ax,ayy,elArr)||tochkTouch(axx,ay,elArr)||tochkTouch(axx,ayy,elArr)) { return true; } else { return false; } } function tochkTouch(xt,yt,em) { if((em['y1'] < yt)&&(em['y2'] > yt)&&(em['x1'] < xt)&&(em['x2'] > xt)) { return true; } else { return false; } } |
function touchTwins (_el1, _el2) { var el1_TopSTART = parseInt(_el1.style.left, 10), //начальная точка верхнего отрезка 1 квадрата el1_TopEND = el1_TopSTART + parseInt(_el1.style.width, 10), //конечная точка верхнего отрезка 1 квадрата el1_leftSTART = parseInt(_el1.style.top, 10), //начальная точка левого отрезка 1 квадрата el1_leftEND = el1_leftSTART + parseInt(_el1.style.height, 10), //конечная точка левого отрезка 1 квадрата el2_TopSTART = parseInt(_el2.style.left, 10), //начальная точка верхнего отрезка 2 квадрата el2_TopEND = el2_TopSTART + parseInt(_el2.style.width, 10), //конечная точка верхнего отрезка 2 квадрата el2_leftSTART = parseInt(_el2.style.top, 10), //начальная точка левого отрезка 2 квадрата el2_leftEND = el2_leftSTART + parseInt(_el2.style.height, 10) //конечная точка левого отрезка 2 квадрата if ( //теперь сравниваем какой из них левее какой правее какой ниже какой выше el2_TopSTART>el1_TopEND || //если начало верхней грани 2 дальше влево чем конец верхней грани 1 el1_TopSTART>el2_TopEND || //ИЛИ если начало верхней грани 1 дальше влево чем конец верхней грани 2 el2_leftSTART>el1_leftEND || //ИЛИ если начало левой грани 2 дальше вниз чем конец левой грани 1 el1_leftSTART>el2_leftEND //ИЛИ если начало левой грани 1 дальше вниз чем конец левой грани 2 ) { //то тогда они в любом случае не пересекаются return false // пересечения нет } else{ //иначе есть пересечение /*и тут кстати можно высчитать область наложения))) если нужно *напрмиер можно возвращать число 1 если они просто пересекаются, и 2 если они совпадают */ return true //пересечение есть } } |
Цитата:
|
Цитата:
|
Огромное спасибо
Это то что нужно:) |
Часовой пояс GMT +3, время: 13:04. |