refactor: Переименована функция calculateCollision для лучшей семантики

This commit is contained in:
Ilia Mashkov
2026-07-19 17:00:23 +03:00
parent 8d15f3996f
commit d2cfee3ec3
6 changed files with 16 additions and 18 deletions
@@ -0,0 +1,51 @@
/**
* Вычисляет пересеклись ли два объекта по ААBB формуле в системе координат где ось X идет справа налево, ось Y идет сверху вних
* @param {Object} firstObject - первый объект
* @param {number} firstObject.left - Min X координата первого объекта
* @param {number} firstObject.right - Max X координата первого объекта
* @param {number} firstObject.top - Min Y координата первого объекта (ось смотрит вниз)
* @param {number} firstObject.bottom - Max Y координата первого объекта
* @param {Object} secondObject - второй объект
* @param {number} secondObject.left - Min X координата второго объекта
* @param {number} secondObject.right - Max X координата второго объекта
* @param {number} secondObject.top - Min Y координата второго объекта (ось смотрит вниз)
* @param {number} secondObject.bottom - Max Y координата второго объекта
* @returns {boolean}
*/
export function calculateAABBCollision(firstObject, secondObject) {
try {
const coordinates = [
firstObject.left,
firstObject.right,
firstObject.top,
firstObject.bottom,
secondObject.left,
secondObject.right,
secondObject.top,
secondObject.bottom,
];
if (coordinates.some((element) => typeof element !== 'number')) {
throw new Error('Координаты должны являться числовыми значениями');
}
if (
firstObject.left > firstObject.right ||
firstObject.top > firstObject.bottom ||
secondObject.left > secondObject.right ||
secondObject.top > secondObject.bottom
) {
throw new Error('Координаты должны быть корректными');
}
return (
firstObject.left <= secondObject.right &&
firstObject.right >= secondObject.left &&
firstObject.top <= secondObject.bottom &&
firstObject.bottom >= secondObject.top
);
} catch (err) {
console.error(err);
return null;
}
}