Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как определить принадлежит ли точка закрашенной области.

=_= Ученик (226), закрыт 3 года назад
Я не понимаю как задать условие сложным фигурам. Опишите пожалуйста подробно по действия к примеру на это рисунке r = 5. (Сам код мне не нужен, я не понимаю как составить на бумаге систему из функций)
Лучший ответ
Николай Веселуха Высший разум (367240) 4 года назад
Пара координат на плоскости образуют радиус-вектор, длина которого рассчитывается по теореме Пифагора. Если значение вашего радиус-вектора меньше либо равно заданному R, то это является необходимым, но недостаточным условием для решения вашей задачи. На следующем шаге следует проверить совпадают ли координаты по знаку. Если совпадают, то точка принадлежит закрашенной области и находится в в первой или третьей четверти, иначе требуется дополнительная проверка, которая устанавливает нахождение точки во второй четверти, и если да, и сумма модулей координат меньше либо равна радиусу-вектору R, то точка принадлежит закрашенной области во второй четверти. Во всех остальных случаях ответ отрицательный.

#include <iostream>
using namespace std;
double input(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
bool signs(double x, double y) {
auto sx = x < 0 ? -1 : 1;
auto sy = y < 0 ? -1 : 1;
return sx == sy;
}
int main() {
double r, x, y, r_xy;
while (true) {
r = input("R: ");
x = input("x: ");
y = input("y: ");
r_xy = sqrt(x * x + y * y);
if (r_xy <= r && (signs(x, y) || ((x <= 0 && y >= 0) && fabs(x) + y <= r))) puts("Yes");
else puts("No");
}
}
Остальные ответы
user49913 Просветленный (38721) 4 года назад
(точка в круге) И (точка под наклонной прямой) И ((точка сверху от Ox) ИЛИ (точка слева от Oy))

Раскладываешь фигуру на комбинации (объединения или пересечения) более простых фигур. Ставишь соответствующие логические операции (ИЛИ и И) на место операций объединения и пересечения. В данном случае мы слепили один круг и три полуплоскости.
Anton Искусственный Интеллект (107974) 4 года назад
для первой четверти:
основное условие - x1>0, y1>0, если оно соблюдается, то мы играем в первой четверти
далее по данной точке (x1,y1) делаешь уравнение прямой, проходящей через (0;0) - y=х * (y1/x1)
далее ищешь точку пересечения этой прямой с окружностью. окружность задана формулой y=sqrt(R^2-x^2)
и последнее - сравниваешь координаты - x1, y1 должны быть меньше чем x и y точки пересечения

для третьей четверти то же самое, только первое условие другое
для третьей еще проще - уравнение прямой: y=R+x, при нахождении точки пересечения даже квадратного уравнения не будет.

есть еще точки на осях, но их просто задать условием
if y1=0 then
if x1R then "входит" - аналогично для второй оси
----------
вот это я намудрил... всё же проще.
для первой и третьей четверти x1^2+y1^2<R^2 - это ясно из уравнения окружности
для третьей просто y1-x1<R (-x1. потому что x1 во второй четверти отрицательный)
Victor Surozhtsev Просветленный (35553) 4 года назад
Если границы входят в область, то надо просто перечислить условия (с нестрогими неравенствами !):
Точка принадлежит указанной области, если (x²+y²≤R²) и (y≤x+R) и (если х≥0, то у≥0).
Похожие вопросы