if (Math.ceil(y) % 2 && !(Math.floor(x) % 2)) {
return ((x - Math.floor(x)) ^ 2 + (y - Math.ceil(y)) ^ 2 <= 1);
}
if (!(Math.ceil(x) % 2) && Math.floor(y) % 2) {
return ((x - Math.ceil(x)) ^ 2 + (y - Math.floor(y)) ^ 2 <= 1);
}
return false;
( 2 * i, 1 + 2 * j )
где i
и j
целые.function isInArea(x, y) {
centerX = 2 * Math.round(x/2);
centerY = 1 + 2 * Math.round((y - 1)/2);
if (! ((x >= centerX) ^ (y >= centerY))) { // НЕ (XOR)
return false; // не та четверть
}
// проверить расстояние
return 1 >= (x - centerX) * (x - centerX) + (y - centerY) * (y - centerY);
}