|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.02.2009, 13:21 | #1 |
Форумчанин
Регистрация: 08.12.2008
Сообщений: 156
|
Определение площади многоугольника
добрый день.
буду очень благодарен, если вы мне поможете определить площадь многоконтурного многоугольника (неизвестно, выпуклый или нет). Этот многоугольник представлен в виде массива координат: Код:
|
16.02.2009, 20:11 | #2 |
Пользователь
Регистрация: 20.06.2008
Сообщений: 95
|
Bayazet, могу подкинуть тебе довольно хитрый способ приближенно найти площадь произвольной фигуры (при условии, что фигура не слишком большая).
Алгоритм (для досовского паскаля): 1) Находим самые большые x_max и y_max. 2) Расчитываем коэффициенты деления по формулам: kx=x_max/x_size, ky=y_max/y_size, где x_size и y_size - размеры досовского экрана в пикселях. 3) Пересчитываем все координаты вершин по формулам: x1=x/kx; y1=y/ky. 4) В паскале есть возможность по координатам вершин построить на экране залитый полигон. Строим его по пересчитанным координатам; 5) Сканируем весь экран на наличие точек цвета полигона и считаем их количество N; 6) Находим приближенное значение площади: S=N*kx*ky. P.S.: Лично я частенько пользуюсь графическим методом расчета, когда аналитически сложно вычислить что-либо P.P.S: А что такое "многоконтурный многоугольник"?
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
Последний раз редактировалось bag; 16.02.2009 в 20:15. |
16.02.2009, 20:43 | #3 | |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Цитата:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
|
16.02.2009, 21:04 | #4 |
Форумчанин
Регистрация: 29.01.2009
Сообщений: 175
|
Возможно я чтото непонял... но где у твоего квадрата ( (0,0)(10,0)(0,10)(10,10) )пересекаются стороны??
Все люди делятся на 10 типов: те, кто понимают двоичную систему счисления и те, кто нет.
|
16.02.2009, 21:42 | #5 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Вычисление площади многоугольника
Кстати, существует простой метод для вычисления площади произвольного многоугольника.
Площадь треугольника вычисляется по формуле Код:
Для произвольного многоугольника берем произвольную точку O. (например, начало координат). Тогда площадь равна сумме площадей треугольников. S(1,2,3,4,...,N) = S(O, 1, 2) + S(O, 2, 3) + S(O, 3, 4) + ... + S(O, N-1, N)+S(O, N, 1) Подробнее см. Ф.Клейн. "Элементарная математика с точки зрения высшей". Там же рассматриваются самопересекающиеся многоугольники. Последний раз редактировалось alexBlack; 16.02.2009 в 21:46. |
17.02.2009, 12:48 | #6 |
Форумчанин
Регистрация: 15.02.2008
Сообщений: 621
|
Может я ошибаюсь.... но помоему мона будет и по площадям трапеций:
Ps-массив точек ^_^ Код:
Помог? Ну так нажми на весы!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Построчный алгоритм заполнения многоугольника с затравкой (Билдер С++) | SKA_zo4nik | Помощь студентам | 8 | 28.03.2011 20:15 |
Площади квадратов | Arch0000 | Помощь студентам | 10 | 15.02.2009 19:41 |
Задача с периметром многоугольника | Abakan | Общие вопросы C/C++ | 1 | 02.01.2009 19:06 |
Необходимо определить периметр многоугольника, заданного координатами вершин | Андрю)(@ | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 23.12.2008 12:30 |
Рисование многоугольника (собственный класс) | MaTBeu | Общие вопросы C/C++ | 1 | 08.12.2007 14:53 |