Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Треугольник и точка. - C++

29.10.2009, 03:35. Просмотров 1143. Ответов 15
Метки нет (Все метки)

Мне завтра сдавать лабораторну работу в универе, это последний день, а я приехал только сегодня из далека(ездил в гости за 300 км) День сдачи завтра последний, поэтому очень прошу помочь мне...

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

Очень вас прошу помочь мне, выручяйте плиз...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 03:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Треугольник и точка. (C++):

Треугольник и точка - C++
Задача С клавиатуры вводится координаты вершин треугольника и координаты точки с .Определить лежит ли точка в треугольнике.И если можно...

Точка и Треугольник - C++
Даны действительные числа x1, x2, x3, y1, y2, y3. Принадлежит ли начало координат треугольнику с вершинами (x1, y1), (x2, y2), (x3, y3)?

Входит ли точка в треугольник? - C++
как определить входит ли точка в правильный треугольник с известными координатами?

Наследование классов: реализовать классы точка, линия, треугольник, круг - C++
задачка интересная,но как сделать ее-я не представляю... можете помочь..

Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику. - C++
Добрый день! Помогите пожалуйста разобраться с прогой... Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли...

Создать базовый класс Треугольник с 2 наследниками: Равносторонний треугольник, Прямоугольный треугольник - C++
Задание звучит так: Нужно создать базовый класс Треугольник с двумя наследующими его классами - равносторонний треугольник (·...

15
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
29.10.2009, 07:29 #2
иллюстрация
там, наверное, для каждой точки нужно проверить фиксированные расстояния
0
Миниатюры
Треугольник и точка.   Треугольник и точка.   Треугольник и точка.  

accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
29.10.2009, 08:25 #3
http://ru.wikipedia.org/wiki/%D0%A3%...83.D0.BB.D1.8B
для каждой стороны можно составить уравнение
и для прямых AM, BM, CM, DM
существует точка пересечения прямых AM и (BD или CD), BM и (AC или CD) и так для всех точек A, B, C, D
точка пересечения существует, если система уравнений имеет решение

с вики то, что нужно
0
Миниатюры
Треугольник и точка.  
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2009, 08:52 #4
Цитата Сообщение от Garik18 Посмотреть сообщение
Мне завтра сдавать лабораторну работу в универе
Может быть мой ответ уже будет не актуальным, но все же отвечу. Предлагаю такой вариант:
Проверяем на пересечение отрезка (координаты введеной точки - точка A) со всеми отрезками (сторонами четырехугольника) AB, BD, DC, CA. Затем берем следующий отрезок (координаты введеной точки - точка B) и тоже проверяем на пересечение со всеми сторонами четырехугольника, и т.д.
Так вот если пересечений отрезков нет то точка внутри фигуры, если есть то точка вне фигуры.
Этот алгоритм подходит для общего случая.
Кстати где-то здесь на форуме недавно писал код для определения пересекаются ли отрезки или нет.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
29.10.2009, 11:03 #5
а если точка, принадлежащая фигуре, может принадлежать стороне ?
то нужно будет проверять ещё принадлежность в алгоритме проверки пересечения отрезков
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2009, 11:14 #6
Цитата Сообщение от accept Посмотреть сообщение
а если точка, принадлежащая фигуре, может принадлежать стороне ?
Не совсем понял вопроса. Если он был адресован ко мне, то пожалуйста поподробнее напишите что Вы имели ввиду.
0
Garik18
0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 10
29.10.2009, 13:49  [ТС] #7
Ппц! Каких я сегодня звиздюлей хапнул, но мне разрешили пересдать эту лабу)
Короче, я чуть с координатами ошибся, точку D не так указал A(-2,-1) B(-1,1) C(0,0) D(1,0)

Мне препод сказал, чтоб я использовал следующий метод:
Примерно помню так, что нужно проверять как для каждой прямой лежит эта точка...
Т.е., если точка лежит правее для прямой AB, то есть смысл дальше проверять как она лежит от прямой BC и т.д.

Я с уравнениями прямых не дружил никогда, что зря конечно, сам сейчас понимаю, но времени у меня сейчас совершенно нет, что учить, потому что ещё работы куча... Поэтому я очень прошу пожалуйста, кто может помочь-помогите написать эту прогу... Я буду очень благодарен...
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
30.10.2009, 05:05 #8
Цитата Сообщение от valeriikozlov
Не совсем понял вопроса. Если он был адресован ко мне, то пожалуйста поподробнее напишите что Вы имели ввиду.
Так вот если пересечений отрезков нет то точка внутри фигуры, если есть то точка вне фигуры.
если точка лежит на стороне, то она - точка пересечения отрезков, а точка, лежащая на стороне, принадлежит фигуре
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.10.2009, 05:23 #9
если точка лежит на стороне, то она - точка пересечения отрезков, а точка, лежащая на стороне, принадлежит фигуре
В этом случае необходимо устроить проверку принадлежности точки, всем четырем сторонам (и мне кажется лучше это сделать сначало)
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
30.10.2009, 05:35 #10
иллюстрация *new
тогда точка D может дать пересечение, если M находится ближе к A
0
Миниатюры
Треугольник и точка.   Треугольник и точка.   Треугольник и точка.  

accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
30.10.2009, 05:38 #11
там через уравнения делать надо, я думал всё, как же определить пересекаются ли прямые, а сегодня нашёл, когда составляешь определитель Крамера, если он равен нулю, то прямые параллельны, а если нет, то точку пересечения можно найти (то есть, её даже можно не искать, просто определитель системы посчитать, нулевой он или нет)
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.10.2009, 06:00 #12
Garik18,
Координаты фигуры следующие: A(-2,-1) B(-1,1) C(0,0) D(0,1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
int main()
{
    double X, Y;
    cout<<"Vvedite koordinatu X: "<<endl;
    cin>>X;
    cout<<"Vvedite koordinatu Y: "<<endl;
    cin>>Y;
    if(Y<=2*X+3 && Y<=1 && X<=0 && Y>=X/2)
        cout<<"Prinadlegit"<<endl;
    else
        cout<<"Ne prinadlegit"<<endl;    
    return 0;
}
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
30.10.2009, 09:18 #13
Код
[guest@station tmp]$ ./t
Vvedite koordinatu X:
0.5
Vvedite koordinatu Y:
0.1
Ne prinadlegit
[guest@station tmp]$ ./t
Vvedite koordinatu X:
0.5
Vvedite koordinatu Y:
0.2
Ne prinadlegit
[guest@station tmp]$
маленький треугольник остался
0
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.10.2009, 09:38 #14
Цитата Сообщение от accept Посмотреть сообщение
Код:
[guest@station tmp]$ ./t
Vvedite koordinatu X:
0.5
Vvedite koordinatu Y:
0.1
Ne prinadlegit
[guest@station tmp]$ ./t
Vvedite koordinatu X:
0.5
Vvedite koordinatu Y:
0.2
Ne prinadlegit
[guest@station tmp]$
маленький треугольник остался
Если это ко мне относится, то советую посмотреть пост №2 в этой теме. Там нарисован правильно этот четырехугольник. И координаты который Вы проверяли действительно не принадлежет фигуре.
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
30.10.2009, 09:57 #15
а, я то уже новый проверял
через прямые я сделал - не подходит (они пересекаются в любом случае)
0
30.10.2009, 09:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2009, 09:57
Привет! Вот еще темы с ответами:

Иерархия классов "Точка-Отрезок-Треугольник" - C++
Создайте иерархию классов Точка-Отрезок-Треугольник. Класс Point уже дан, мучаюсь с классом Line. После динамического объявления объекта...

Класс треугольник с произвольным классом - равнобедренный треугольник - C++
Создать класс треугольник, члены класса - длины 3-х сторон. Предусмотреть в классе методы проверки существования треугольника, вычисления и...

Дана точка М(x, y). Присвоить z = 1, если точка принадлежит окружности с радиусом R и центром в точке (a, b) и z = 0 в противном случае. - C++
Дана точка М(x, y). Присвоить z = 1, если точка принадлежит окружности с радиусом R и центром в точке (a, b) и z = 0 в противном случае.

Даны отрезки [a, b] и [c, d] и точка A с координатой х. Определить, принадлежит ли данная точка одному из этих отрезков, обоим или лежит вне их - C++
Даны отрезки и и точка A с координатой х. Определить, принадлежит ли данная точка одному из этих отрезков, обоим или лежит вне их


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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