|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.12.2010, 22:36 | #1 |
Пользователь
Регистрация: 30.11.2010
Сообщений: 29
|
Вычислительная геометрия на плоскости (си)
Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат.Требуется найти площадь многоугольника. Стороны многоугольника не соприкасаются (за исключением соседних – в вершинах) и не пересекаются. В первой строке входного файла INPUT.TXT находится число N. В следующих N строках находятся пары чисел (Xi, Yi) – координаты точек. Если соединить точки в данном порядке, а также первую и последнюю точки, получится заданный многоугольник (3 ≤ N ≤ 50 000, -20 000 ≤ Xi, Yi ≤ 20 000). В выходной файл OUTPUT.TXT выведите одно число – площадь многоугольника. Его следует округлить до ближайшего числа с одной цифрой после запятой.
Как делать подскажите? |
14.12.2010, 23:07 | #2 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 30
|
Для каждой пары вершин определить коэффициенты a и b уравнения прямой вида y=ax+b, проходящей через них, и вместе c границами области определения сохранить в массиве структур. Далее, построчно сканируя и пользуясь этим массивом, определять попадание внутрь многоугольника и подсчитывать число точек внутри него.
Последний раз редактировалось V0id; 14.12.2010 в 23:19. |
14.12.2010, 23:19 | #3 | |
Пользователь
Регистрация: 30.11.2010
Сообщений: 29
|
Цитата:
|
|
14.12.2010, 23:26 | #4 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 30
|
|
14.12.2010, 23:34 | #5 |
Пользователь
Регистрация: 30.11.2010
Сообщений: 29
|
|
14.12.2010, 23:55 | #6 |
Пользователь
Регистрация: 12.12.2010
Сообщений: 30
|
Очень поздно вы за это взялись! Если бы хотя бы в обед, можно было бы что-нибудь придумать, но теперь остается только нанять опытного фрилансера. Я же иду спать. Могу лишь подсказать, как рассчитываются коэффициенты. Для пары точек (x0,y0) и (x1,y1): a = (y1-y0)/(x1-x0), b = y0-a*x0, область определения отрезка: [min(x0,x1),max(x0,x1)].
|
15.12.2010, 00:19 | #7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Если я правильно понял, то почти то же самое: площадь семиугольника.
Если считать, что многоугольник выпуклый, то разбиваете его на треугольники, находите по формуле векторного произведения площадь каждого, суммируете, получаете площадь всего многоугольника.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
15.12.2010, 00:43 | #8 | |
Пользователь
Регистрация: 30.11.2010
Сообщений: 29
|
Цитата:
Вот программа по алгоритму как в ссылке: Код:
Сдать нужно до 15:00 мск.. Последний раз редактировалось Stilet; 15.12.2010 в 11:34. |
|
15.12.2010, 01:57 | #9 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
15.12.2010, 09:01 | #10 | |
Пользователь
Регистрация: 12.12.2010
Сообщений: 30
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Геометрия в Си | rik_nel | Общие вопросы C/C++ | 5 | 14.12.2010 13:43 |
Вычислительная практика (транскрипция) | smart70 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 03.08.2010 13:21 |
Вычислительная геометрия на С | Soull | Помощь студентам | 7 | 18.05.2010 12:54 |
Си геометрия | Денни | Помощь студентам | 11 | 05.03.2010 09:41 |
Вычислительная эквивалентность исполнителей | Анатолий 111 | Помощь студентам | 0 | 25.12.2009 00:38 |