Показать сообщение отдельно
  #2 (permalink)  
Старый 07.10.2012, 17:53
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Интересная задача которая возникла пока с 2d игрался.
Определение коллизий 2х спрайтов.

Принадлежность точки прямоугольнику, это элементарно.

а вот столкновение двух прямоугольников как определить ?
придумал вот такое алгоритм.
Идея в том что, разница между двумя крайними точками системы из двух столкнувшихся прямоугольников,будет всегда меньше суммы ширин, двух прямоуоугольников. Если условие выполняется для высоты и ширины, значит есть пересечение.

r=function(x,y,w,h,x1,y1,w1,h1){
			    var sx=x<x1?x:x1,
			        sy=y<y1?y:y1,
			        ex=x+w>x1+w1?x+w:x1+w1,
			        ey=y+h>y1+h1?y+h:y1+h1;
                return ex-sx<w+w1 && ey-sy<h+h1;
 
			    //if (ex-sx<w+w1 && ey-sy<h+h1)return true;
			    //else return false
			}

                        // true
			alert(r(
				0,0,100,100, 
				50,50,100,100
			));
                        // false
			alert(r(
				0,0,100,100, 
				150,50,100,100
			));

                        // true
			alert(r(
				51,51,100,100, 
				50,50,100,100
			));


                        // (один квадрат внутри другого) true
			alert(r(
				0,0,100,100, 
				50,50,10,10
			));
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 07.10.2012 в 20:19.
Ответить с цитированием