|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2010, 13:22 | #1 |
Пользователь
Регистрация: 17.12.2010
Сообщений: 19
|
ГЕОМЕТРИЧЕСКАЯ ЗАДАЧА С++
Составить программу, отображающую на экране дисплея в текстовом режиме исходные данные и требуемые результаты. Реализовать ввод исходных данных следующими способами по выбору пользователя:
1. Вручную с клавиатуры; 2. С помощью генератора псевдослучайных чисел. На плоскости координатами своих упорядоченных вершин задан произвольный многоугольник без самопересечения и точка А вне многоугольника. Определить число вершин, видимых из точки А как я понял нужно соединить эту точку с вершинами если какая-то прямая пересекает сторону(до этой вершины ) многоугольника , то не видна точка Тут весь вопрос, как определить пересечение. пока сделал вот это: Код:
|
21.12.2010, 08:23 | #2 |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 458
|
Как определить что они пересекаются , это тебе не программирование надо сейчас в помощь , а математику ... Просто проверять все прямые как ты и сказал , соединив твою точку со всеми вершинами . Но вот формула для проверки всего этого математически я не помню
Но идея у тебя правильная !!!!
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
|
21.12.2010, 12:20 | #3 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 28
|
Пересечение прямых определяется примерно так: составляется уравнение каждой прямой, и решается система из 2-х уравнений и 2-х неизвестных и решая ее находишь точку пересечения, нужно будет исключить решение вне грани многоугольника, и если решением является точка, к которой проведен отрезок из А.
|
21.12.2010, 12:33 | #4 |
Пользователь
Регистрация: 17.12.2010
Сообщений: 19
|
это я понял, но как исключить пересечения вне многоугольника?
|
21.12.2010, 18:04 | #5 |
Пользователь
Регистрация: 20.12.2010
Сообщений: 28
|
Если точка пересечения лежит на отрезке от B(x1;y1) до C(x2;y2), то её координаты должны (x,y) удовлетворяют условию:
min(x1,x2)<=x<=max(x1,x2) min(y1,y2)<=y<=max(y1,y2) И так в цикле для каждой точке составляешь уравнение прямой от А до этой точки, во вложенном цикле проверяешь по всем прямым многоугольника принадлежит ли какая нибудь точка пересечения на отрезке, и если такой не нашлось то значит из А эту точку видно. |
21.12.2010, 18:32 | #6 |
Пользователь
Регистрация: 17.12.2010
Сообщений: 19
|
так, это понял..
но для начала мне нужно отсортировать точки так, что бы получался многоугольник без самопересечения. для этого Находим нижнюю точку - min(y) (если их несколько, то берем любую) Её координаты - (x0,y0) Остальной массив сортируем по возрастанию значения (xi-x0)/(yi-y0) но компилятор ругается( Код:
Последний раз редактировалось kochet-kov; 21.12.2010 в 18:42. |
21.12.2010, 19:11 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
21.12.2010, 19:20 | #8 |
Пользователь
Регистрация: 17.12.2010
Сообщений: 19
|
да, нет уже нашел ошибку.. на 0 не делит...
|
22.12.2010, 18:39 | #9 |
Пользователь
Регистрация: 17.12.2010
Сообщений: 19
|
я переделал начало программы..
теперь мне нужно отсортировать точки по алгоритму Джарвиса.. кто может с этим помочь? Код:
если конкретнее на данном этапе на получается найти самую левую из самых нижних точку Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Геометрическая задача в VS2010 С++ | FEAREX | Помощь студентам | 7 | 17.12.2010 09:53 |
Геометрическая задача!!! (1 курс, дельфи) | Movek | Помощь студентам | 1 | 03.10.2010 19:21 |
Геометрическая задача | HackNick | Общие вопросы C/C++ | 5 | 02.09.2010 20:49 |
Олимиадная геометрическая задача по программированию | zmiter | Помощь студентам | 3 | 04.06.2009 13:44 |
Геометрическая задача С++ | bloo[d] | Общие вопросы C/C++ | 9 | 30.01.2008 18:27 |