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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Garik18
0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 10
#1

Принадлежит ли точка четырехугольнику. - C++

29.10.2009, 17:35. Просмотров 2336. Ответов 3
Метки нет (Все метки)

Надеюсь на помощь форумчан:

Задача следующяя: задана коодинатами точек четырёхугольная фигура A(-2,-1) B(-1,1) C(0,0) D(1,0)
С клавиатуры вводятся координаты ещё одной точки.
Нужно определить принадлежит ли точка данной фиуре.

Метод, которым я воспользовался:

Разбиваем нашу фигуру на два треугольника: 1-ABC 2-ACD вычисляем их площади. у нас дана точка с координатами
берём первый теулольник и составляем три треугольника с точкой нашей, это будет выглядеть так 1-ABE, 2-BCE, 3-ACE
из второго треугольника мы тажке получим 3 треугольника: 1-EAC, 2-CDE, 3-EDA

ABE BCE ACE -если сумма площадей этих трёх треугольников равна площади ABC, то точка принадлежит нашей
первоначальной фигуре, если площади не равны, то проверяе второ треугольни:
если сумма EAC CDE EDA равна ACD, то точка принадлежит первоначальной фигуре,
если нет, то точка не принадлежит нашей фигуре
Оказался не очень верным, так как в некоторых случаях точка не лежит в фигуре, но площади совпадают, соответственно результат не верен((( Этот метод хорош только для одного треуголника, а у меня к зажелению не так...

Вот код этой проги:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
void main ()
{
clrscr();
float ABC,ACD,xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,ABE,BCE,ACE,CDE,EDA;
printf ("Vvedite koordinatu X tochki E\n");
scanf ("%f",&xe);
printf ("Vvedite koordinatu Y tochki E\n");
scanf ("%f",&ye);
 
xa=-2;
ya=-1;
xb=-1;
yb=1;
xc=0;
yc=0;
xd=1;
yd=0;
 
ABC=abs(xb*yc-xc*yb-xa*yc+xc*ya+xa*yb-xb*ya);
ACD=abs(xc*yd-xd*yc-xa*yd+xd*ya+xa*yc-xc*ya);
ABE=abs(xb*ye-xe*yb-xa*ye+xe*ya+xa*yb-xb*ya);
BCE=abs(xc*ye-xe*yc-xb*ye+xe*yb+xb*yc-xc*yb);
ACE=abs(xc*ye-xe*yc-xa*ye+xe*ya+xa*yc-xc*ya);
CDE=abs(xd*ye-xe*yd-xc*ye+xe*yc+xc*yd-xd*yc);
EDA=abs(xd*ya-xa*yd-xe*ya+xa*ye+xe*yd-xd*ye);
 
if ((ABC==ABE+BCE+ACE)||(ACD==ACE+CDE+EDA)) printf("Tockha prinadlejit figure ABCD");
else printf ("Tochka ne prinadlejit figure ABCD");
getch();
}
Мне препод посоветовал использовать следующий метод:
Нужно каким-то образом проверять как лежит точка по отношению каждой прямой, из которых построена наша фигура...
Я совершенно не имею представления как это сделать в математике, а уж тем более превратить в код программы... Поэтому прошу помощи здесь! Кто может помочь в написании кода для этой проги, то помогите пожалуйста, очень жду и надеюсь на помощь...Желательно чтоб использовалось всё самое простое из С...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 17:35     Принадлежит ли точка четырехугольнику.
Посмотрите здесь:

Принадлежит ли точка четырехугольнику? - C++
Подскажите пожалуйста, как можно по проще проверить лежит ли заданная точка (x, y) внутри четырехугольника, если задано его 4 вершины. ...

Принадлежит ни точка кольцу (на C) - C++
Выяснить, принадлежит ли точка с координатами (x,y) кольцу с центром в начале координат с внешним радиусом 5 и внутренним радиусом 2. ...

Принадлежит ли точка области - C++
написать программу, которая определяет, принадлежит ли точка заштрихованной области

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

Принадлежит ли точка многоугольнику - C++
Нужен такой вот алгоритм (а ещё лучше функция :) ).Поиск по форуму не увенчался успехом (темы есть , но кода нет). Вершины многоугольника...

Принадлежит ли точка окружности - C++
Нужно было написать программу определяющию принадлежит ли точка окружности { setlocale(LC_ALL,&quot;RUS&quot;); float x, y, r; printf ( &quot;...

Определить, принадлежит ли точка M(x,y) - C++
Помагите сделать Дана трапеция координатами вершин. Определить, принадлежит ли точка M(x,y) трапеции. нужно написать программу на с++ ....

Принадлежит ли точка фигуре - C++
Определить принадлежность точки областям, обозначенным прописными буквами A и B. Строчными буквами обозначены определяемые пользователем...

Принадлежит ли точка кругу - C++
Для построения круга дают центр круга, дают радиус. Потом дают точку и спрашиваю попадает ли точка в круг. Как это выглядит у меня: ...

Принадлежит ли точка прямоугольнику? - C++
Составить программку для определения принадлежности точки в прямоугольной области(прямоугольнику).

Принадлежит ли точка прямоугольнику? - C++
Даны координаты (x1, y1), (x2, y2), (x3, y3), (x4, y4) - вершины прямоугольника, и (x,y) - координаты точки. Определить, принадлежит ли...

Принадлежит ли точка графику - C++
Помогите пожалуйста. Программа почему то не работает не могу разобраться что не дописал или где ошибка. #include &lt;iostream&gt; using...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 18:59     Принадлежит ли точка четырехугольнику. #2
Цитата Сообщение от Garik18 Посмотреть сообщение
Задача следующяя: задана коодинатами точек четырёхугольная фигура A(-2,-1) B(-1,1) C(0,0) D(1,0)
С клавиатуры вводятся координаты ещё одной точки.
Нужно определить принадлежит ли точка данной фиуре.
Алгоритм:
сортируем точки по возрастанию, получаем ABCD (совпало, но далее всё для такой возрастающей последовательности)
теперь твоя точка, чтобы попасть в фигуру, должна лежать на или правее AB, ВС, CD, DA
правее значит, что если представить отрезок АВ как линию на земле, то надо наступить на точку А и взирая на точку В поискать что у тя там по правую руку

математически точка Х (хх, ху) лежит правее или на АВ (уравнение прямой АВ у=kx+b) если выполняется следующее условие (ху-b)/k>=xx

твоя задача отсортировать точки, построить четыре уравнения прямых для отрезков и проверить последнее неравенство

удачи
Garik18
0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 10
29.10.2009, 20:39  [ТС]     Принадлежит ли точка четырехугольнику. #3
Цитата Сообщение от TanT Посмотреть сообщение
Алгоритм:
сортируем точки по возрастанию, получаем ABCD (совпало, но далее всё для такой возрастающей последовательности)
теперь твоя точка, чтобы попасть в фигуру, должна лежать на или правее AB, ВС, CD, DA
правее значит, что если представить отрезок АВ как линию на земле, то надо наступить на точку А и взирая на точку В поискать что у тя там по правую руку

математически точка Х (хх, ху) лежит правее или на АВ (уравнение прямой АВ у=kx+b) если выполняется следующее условие (ху-b)/k>=xx

твоя задача отсортировать точки, построить четыре уравнения прямых для отрезков и проверить последнее неравенство

удачи
Так вот собственно в этом-то и вопрос) Я не понимаю что такое y=kx+b, не понимаю что есть что! И не знаю по-какому принципу строить уравнения для остальных сторон...(
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
29.10.2009, 20:47     Принадлежит ли точка четырехугольнику. #4
Цитата Сообщение от Garik18 Посмотреть сообщение
Так вот собственно в этом-то и вопрос) Я не понимаю что такое y=kx+b, не понимаю что есть что! И не знаю по-какому принципу строить уравнения для остальных сторон...(
геометрию в школе учил?

есть две точки А(ха, уа) и В(хb, уb)
ya=k*xa+b
yb=k*xb+b

x и y известны из системы уравнений получи формулы для k и b и
подставляй в эту формулу (ху-b)/k>=xx, xx и ху координаты твоей точки, то же известны
Yandex
Объявления
29.10.2009, 20:47     Принадлежит ли точка четырехугольнику.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru