Для заданной координатами x и y точки проверить принадлежит ли она закрашенной области на рисунке javascript
Не могу решить с окружностью
Треугольник:
x=parseFloat(prompt('x'))
y=parseFloat(prompt('y'))
if(x>=0 && x<=6 && y<=0 && y>=-6)
document.write('true')
else document.write('false')
Ответы (2 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
На самом деле с окружностью проще (мне показалось), потому что там нужна просто теорема Пифагора: x² + y² должно быть меньше, чем квадрат радиуса 6²
А с треугольником единственное, что придумалось: взять одну фиксированную точку (6; 0) и через вторую пару точек, которую введут, провести прямую и проверить её угол, образованный с осью X. Если меньше 45, значит попадает.
А т.к. в return записаны логические выражения, сразу и возвращается true или false.
function isInside(x, y){
if( x < 0 ) return false;
if( 0 <= y && y <= 6 && 0 <= x && x <= 6 ){ /* Квадрат с сектором */
return x*x + y*y <= 36;
}
if( -6 <= y && y <= 0 && 0 <= x && x <= 6){ /* Квадрат с треугольником */
// `x1` → 6, `y1` → 0,
// `x2` → x, `y2` → y
// tg a = (y2 - y1) / (x2 - x1)
let angle = Math.atan( Math.abs( y / (x - 6) ) ) * 180/Math.PI;
return angle <= 45;
}
}
// Треугольник
console.log( 3, -3, isInside(3, -3) ); // true;
console.log( 2, -3, isInside(2, -3) ); // true;
console.log( 4, -3, isInside(4, -3) ); // false;
// Сектор
console.log( 2, 2, isInside(2, 2) ); // true;
console.log( 2, 5, isInside(2, 5) ); // true;
console.log( 4, 4, isInside(4, 4) ); // true;
console.log( 4, 5, isInside(4, 5) ); // false;
