Показать сообщение отдельно
  #3 (permalink)  
Старый 05.12.2012, 10:55
Аспирант
Отправить личное сообщение для schmetterling Посмотреть профиль Найти все сообщения от schmetterling
 
Регистрация: 02.12.2012
Сообщений: 30

Вот примерный код, хотя я не тестировал его.

function distance(x1, y1, x2, y2) { // считаем расстояние между двумя точками
 return Math.sqrt(Math.power((x2-x1), 2) + Math.power((y2-y1), 2))
}

/*
Проверка на столкновение. 
x1, y1 -- координаты левой верхней точки прямоугольника.
x2, y2 -- координаты правой нижней точки прямоугольника.
x, y -- координаты центра окружности
r -- радиус окружности.
*/
function isCollision(x1, y1, x2, y2, x, y, r) {
 var compX, compY;
 // выбираем точку X прямоугольника, которая ближе всего к центру окружности.
 if (x <= x1) { // если X центра слева от проекции на Ox...
  compX= x1;
 } else if (x < x2) { // ...принадлежит проекции
  compX= x;
 } else { // ...справа от проекции
  compX= x2;
 }
 // выбираем точку Y прямоугольника, которая ближе всего к центру окружности.
 if (y <= y1) { // если y центра слева от проекции на Oy...
  compY= y1;
 } else if (y < y2) { // ...принадлежит проекции
  compY= y;
 } else { // ...справа от проекции
  compY= y2;
 }
 return r <= distance(x, y, compX, compY);
}

Последний раз редактировалось schmetterling, 05.12.2012 в 11:41.
Ответить с цитированием