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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Garik18
0 / 0 / 0
Регистрация: 29.10.2009
Сообщений: 10
29.10.2009, 03:35     Треугольник и точка. #1
Мне завтра сдавать лабораторну работу в универе, это последний день, а я приехал только сегодня из далека(ездил в гости за 300 км) День сдачи завтра последний, поэтому очень прошу помочь мне...

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

Очень вас прошу помочь мне, выручяйте плиз...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2009, 03:35     Треугольник и точка.
Посмотрите здесь:

C++ Точка и Треугольник
C++ Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику.
Треугольник C++
Треугольник) C++
Треугольник и точка C++
удалить из каждой группы идущих подряд цифр, которой не предшествует точка, все начальные нули (кроме последнего, если за ним идет точка) C++
Треугольник на с++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.10.2009, 07:29     Треугольник и точка. #2
иллюстрация
там, наверное, для каждой точки нужно проверить фиксированные расстояния
Миниатюры
Треугольник и точка.   Треугольник и точка.   Треугольник и точка.  

accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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
точка пересечения существует, если система уравнений имеет решение

с вики то, что нужно
Миниатюры
Треугольник и точка.  
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2009, 08:52     Треугольник и точка. #4
Цитата Сообщение от Garik18 Посмотреть сообщение
Мне завтра сдавать лабораторну работу в универе
Может быть мой ответ уже будет не актуальным, но все же отвечу. Предлагаю такой вариант:
Проверяем на пересечение отрезка (координаты введеной точки - точка A) со всеми отрезками (сторонами четырехугольника) AB, BD, DC, CA. Затем берем следующий отрезок (координаты введеной точки - точка B) и тоже проверяем на пересечение со всеми сторонами четырехугольника, и т.д.
Так вот если пересечений отрезков нет то точка внутри фигуры, если есть то точка вне фигуры.
Этот алгоритм подходит для общего случая.
Кстати где-то здесь на форуме недавно писал код для определения пересекаются ли отрезки или нет.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
29.10.2009, 11:03     Треугольник и точка. #5
а если точка, принадлежащая фигуре, может принадлежать стороне ?
то нужно будет проверять ещё принадлежность в алгоритме проверки пересечения отрезков
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.10.2009, 11:14     Треугольник и точка. #6
Цитата Сообщение от accept Посмотреть сообщение
а если точка, принадлежащая фигуре, может принадлежать стороне ?
Не совсем понял вопроса. Если он был адресован ко мне, то пожалуйста поподробнее напишите что Вы имели ввиду.
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 и т.д.

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

accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.10.2009, 05:38     Треугольник и точка. #11
там через уравнения делать надо, я думал всё, как же определить пересекаются ли прямые, а сегодня нашёл, когда составляешь определитель Крамера, если он равен нулю, то прямые параллельны, а если нет, то точку пересечения можно найти (то есть, её даже можно не искать, просто определитель системы посчитать, нулевой он или нет)
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 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;
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
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]$
маленький треугольник остался
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 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 в этой теме. Там нарисован правильно этот четырехугольник. И координаты который Вы проверяли действительно не принадлежет фигуре.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
30.10.2009, 09:57     Треугольник и точка. #15
а, я то уже новый проверял
через прямые я сделал - не подходит (они пересекаются в любом случае)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2009, 10:20     Треугольник и точка.
Еще ссылки по теме:

Наследование классов: реализовать классы точка, линия, треугольник, круг C++
Треугольник C++
Треугольник в С++ C++
Входит ли точка в треугольник? C++
Иерархия классов "Точка-Отрезок-Треугольник" C++

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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
30.10.2009, 10:20     Треугольник и точка. #16
Понятно, я не заметил что он данные координат менял. И делал для координат которые указаны вместе с моим кодом.
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Garik18,
Цитата:
Координаты фигуры следующие: A(-2,-1) B(-1,1) C(0,0) D(0,1)
Yandex
Объявления
30.10.2009, 10:20     Треугольник и точка.
Ответ Создать тему
Опции темы

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