Форум программистов, компьютерный форум CyberForum.ru

Определить принадлежность точки с координатами (x, y) закрашенной области - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
11.05.2013, 15:49     Определить принадлежность точки с координатами (x, y) закрашенной области #1
помогите разобраться как правильно записать условия попадания точки в заданную область(правильно описать A и B, я разделил фигуру на 2 части)
в геометрии у меня не особо получается разбираться)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<conio.h>
main()
{
system("chcp 1251");
double x,y;
cout<<"Введите координаты точки:"<<endl;
cout<<"x=";
cin>> x;
cout<<"y=";
cin>> y;
int A,B;
A=(x<-7)&&(x<(-1/3)*x-(13/3);
B=(y<4)&&(y>0.75*x+3.25)&&(y<-1.8*x+5.8)
if (A||B)
cout<< "Точка принадлежит заданной области";
else
cout<< "Точка не принадлежит заданной области";
getch();
}
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 15:49     Определить принадлежность точки с координатами (x, y) закрашенной области
Посмотрите здесь:

C++ Определить, принадлежит ли точка с координатами (х,у) закрашенной области
C++ Составить программу, которая печатает true, если точка с координатами (x,y) принадлежит закрашенной области, и false в противном случае:
Составить программу, которая будет выводить true или false в зависимости от принадлежности точки с координатами x, y закрашенной области C++
C++ Переделать код С++ (Определить принадлежность области точки)
C++ Определить принадлежность точки, координаты которой вводятся с клавиатуры, заштрихованной области
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:00     Определить принадлежность точки с координатами (x, y) закрашенной области #2
kolonello,http://www.cyberforum.ru/attachment....1&d=1368273467
когда вам даётся точка, выпускайте от неё луч вправо и смотрите сколько сторон треугольника пересечёт. Проверить это легко, просто подставив в уравнение прямой, образованной отрезком, y = ym, где ym - y-овая координата точки и получите уравнение с одной переменной, затем корень уравнения будет (x, ym) и проверяете на принадлежность отрезку. Не забудьте про случай, когда луч пройдёт через вершины.
Изображения
 
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:04     Определить принадлежность точки с координатами (x, y) закрашенной области #3
kolonello, вот ещё 1 метод
http://www.cyberforum.ru/cpp-beginne...ead222429.html
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
11.05.2013, 16:23  [ТС]     Определить принадлежность точки с координатами (x, y) закрашенной области #4
а можете помочь решить именно тем способом что я начал? просто преподаватель заест потом вопросами.
у меня сложности только в том как формулами ограничить фигуру
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:32     Определить принадлежность точки с координатами (x, y) закрашенной области #5
kolonello, если честно, я очень сомневаюсь, что ваш метод как то работает

Добавлено через 1 минуту
kolonello, Самый простой способ такой: соединяешь точку с вершинами треугольника, считаешт площадь малеьких треугольников, если сумма площадей равна площади большего трегольника, то точка внутри, иначе снаружи. Площадь, разумеется, лучше считать через определитель. Вот исходник (для простоты считается удвоенная площадь)

Добавлено через 4 минуты
kolonello,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
double square(double x1, double y1, double x2, double y2, double x3, double y3) {
    return abs(x2*y3-x3*y2-x1*y3+x3*y1+x1*y2-x2*y1);
}
 
int main(int argc, char* argv[]) {
    double x, y, x1, y1, x2, y2, x3, y3; // x,y = вершины точки, остальное - вершины треугольника
    x1 = 1; y1 = 4;
    x2 = -7; y2 = -2;
    x3 = 7; y3 = -5;
    cin >> x >> y;
    double s = square(x, y, x2, y2, x3, y3) + square(x1, y1, x, y, x3, y3) + square(x1, y1, x2, y2, x, y);
    if (abs(square(x1, y1, x2, y2, x3, y3) - s) <= 1e-9) {
        cout << "YES";
    } else cout << "NO";
    return 0;
}
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
11.05.2013, 16:44  [ТС]     Определить принадлежность точки с координатами (x, y) закрашенной области #6
хмм попробовал запустить эту программу
на строке return abs(x2*y3-x3*y2-x1*y3+x3*y1+x1*y2-x2*y1); - E2015 ambiguity between
c чем это связанно может быть?оО
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 20:24     Определить принадлежность точки с координатами (x, y) закрашенной области #7
kolonello, в какой среде запускаете ? Такого не должно быть. Во всяком случае я привёл вам рабочий код.
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
13.05.2013, 18:17  [ТС]     Определить принадлежность точки с координатами (x, y) закрашенной области #8
c++ builder 6
если не сложно можешь сделать скрин окна с ответом?
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:22     Определить принадлежность точки с координатами (x, y) закрашенной области #9
Автор напиши функции f(x) которые образуют треугольник, я тебе напишу код.
Цитата Сообщение от Ternsip Посмотреть сообщение
kolonello, Самый простой способ такой: соединяешь точку с вершинами треугольника, считаешт площадь малеьких треугольников, если сумма площадей равна площади большего трегольника, то точка внутри, иначе снаружи. Площадь, разумеется, лучше считать через определитель. Вот исходник (для простоты считается удвоенная площадь)
Это полный бред, делать такую простую задачу таким способом.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:25     Определить принадлежность точки с координатами (x, y) закрашенной области #10
badLogic, скажите это его автору
http://******************/forum/topic-...y396640/0.html
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:28     Определить принадлежность точки с координатами (x, y) закрашенной области #11
Ternsip, ну и что? Я же не говорю что это неверный способ. Я делал такую задачу и еще сделал нескольким сокурсницам, делается все это за 5 мин.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:31     Определить принадлежность точки с координатами (x, y) закрашенной области #12
badLogic, Молодец, выкладывайте код
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:47     Определить принадлежность точки с координатами (x, y) закрашенной области #13
Треугольник здесь другой, мне влом находить эти функции которые я ранее запросил у автора. но его легко нарисовать в голове:
у= 0;
х = 0;
у = х+3;
Это равнобедренный прямоугольный треугольник который находится в левой верхней части коорд. плоскости.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int _tmain(int argc, _TCHAR* argv[])
{
 
    float x, y;
 
    cin>>x>>y;
 
    if(y>0 && x<0 && ((y-x)<3))
        cout<<"win!";
    else
        cout<<"lose";
 
 
    cin>>x;
 
    return 0;
}
if(y>0 && x<0 && ((y-x)<3))
если делать сравнени >= то линии описывающие треугольник войдут в площадь
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 19:04     Определить принадлежность точки с координатами (x, y) закрашенной области #14
badLogic, вот на этих тестах у вас не работает
-1.000 2.000
3.000 -2.000
-6.000 -2.000
0.000 -1.000
0.000 0.000
3.000 -2.000
1.000 -2.000
3.000 -4.000
0.000 -1.000
-4.000 0.000
5.000 -3.000

Добавлено через 4 минуты
badLogic, кстати на тесте 0 0 даже loose выдаёт
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 19:08     Определить принадлежность точки с координатами (x, y) закрашенной области #15
если делать сравнени >= то линии описывающие треугольник войдут в площадь, ну как так можно было не догодаться..
C++
1
if(y>=0 && x>=0 && ((y-x)<=3))
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
13.05.2013, 19:09  [ТС]     Определить принадлежность точки с координатами (x, y) закрашенной области #16
я в самом начале писал что по формулам образующий треугольник я бы и сам сделал но с геометрией не дружу совсем)
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 19:13     Определить принадлежность точки с координатами (x, y) закрашенной области #17
badLogic, вот тесты на которых у вас не работает снова
8.000 8.000
8.000 5.000
-1.000 2.000
5.000 4.000
3.000 -2.000
7.000 9.000
6.000 5.000
-6.000 -2.000
0.000 -1.000
3.000 -2.000
1.000 -2.000
7.000 8.000
3.000 5.000

Добавлено через 53 секунды
badLogic, да даже на тесте 100 100 выдаёт win!
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 19:18     Определить принадлежность точки с координатами (x, y) закрашенной области #18
kolonello http://www.math.by/geometry/eqline.html

Добавлено через 3 минуты
Ternsip, я когда 2ой раз ответил сделал ошибку в неравенствах
C++
1
if(y>=0 && x<=0 && ((y-x)<=3))
, в первом варианте у меня правильно.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 19:20     Определить принадлежность точки с координатами (x, y) закрашенной области #19
badLogic, вот тесты, на которых у вас опять не работает
3.000 -2.000
-6.000 -2.000
0.000 -1.000
3.000 -2.000
1.000 -2.000
3.000 -4.000
0.000 -1.000
-4.000 0.000
5.000 -3.000
1.000 2.000
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 19:30     Определить принадлежность точки с координатами (x, y) закрашенной области
Еще ссылки по теме:

C++ Дана "мишень" в виде закрашенной области. Создать алгоритм для определения попадания точки с координатами (х,у) в мишень
C++ Определить принадлежность точки заштрихованной области
Принадлежность точки с заданными координатами заштрихованной области C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
13.05.2013, 19:30  [ТС]     Определить принадлежность точки с координатами (x, y) закрашенной области #20
"Это равнобедренный прямоугольный треугольник который находится в левой верхней части коорд. плоскости."
что то смотря на рисунок у меня возникают сомнения что это равнобедренный треугольник
Yandex
Объявления
13.05.2013, 19:30     Определить принадлежность точки с координатами (x, y) закрашенной области
Ответ Создать тему
Опции темы

Текущее время: 04:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru