Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.11.2015
Сообщений: 12

Вычисление площади многоугольника

10.12.2015, 19:59. Показов 1763. Ответов 6

Студворк — интернет-сервис помощи студентам
во вложении
Миниатюры
Вычисление площади многоугольника  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2015, 19:59
Ответы с готовыми решениями:

Вычисление площади многоугольника
Пусть получены координаты точек многоугольника в виде (список кортежей): Как найти его площадь? Предполагаю, что можно с помощью...

Вычисление площади многоугольника
На плоскости дан простой многоугольник (т. е. без самокасаний и самопересечений, но не обязательно выпуклый). Написать программу...

Вычисление площади многоугольника
В общем, есть некий выпуклый многоугольник с вершинами в точках x и y (значения могут заданы рандомно либо введены с клавиатуры, не суть)....

6
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
10.12.2015, 22:47
предлагаю считать через треугольники внутри многоугольника.
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,893
Записей в блоге: 2
11.12.2015, 09:32
Классика: площадь = половине суммы векторных произведений всех сторон
C++
1
2
3
4
5
6
7
8
9
10
11
12
float Square( const Point * pt, int count )
{
 float sum = 0;
 for (int i = 0; i < count; ++i) {
  const Point & p0 = pt[(i + count - 1) % count];
  const Point & p1 = pt[i];
  const Point & p2 = pt[(i + 1) % count];
  sum += cross(p1 - p0, p2 - p1); 
 }
 
 return sum / 2;
}

Не по теме:

Вот когда вываливает задание не удосужившись поздороваться с людьми, мне почему-то думается "ну вот, сиранул(а)":)

1
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,893
Записей в блоге: 2
12.12.2015, 12:44
Да, кстати неправильно написал - это же площадь "углов". Верно так
C++
1
2
3
4
5
6
7
8
float Square( const Point * pt, int count )
{
 float sum = 0;
 for (int i = 0; i < count; ++i) 
  sum += cross(p[i], p[(i + 1) % count]); 
 
 return sum / 2;
}
Очевидно что если центр выпуклого мн-ка в точке (0, 0) - это верно "по чертежу", cross возвращает площадь тр-ка 2 точки которого - сторона, а 3-я центр (0, 0). Однако где бы мы ни ставили 3-ю точку - сумма получается той же (и верной) Дело в том что площадь знаковая - положительная против и отрицательная по часовой стрелке. Поэтому хотя какие-то площади и вылезут за границы мн-ка, они уничтожатся другими и сумма остается той же. А значит можно смело брать 3-ю точку (0, 0) для любого мн-ка

Наверное я зря трачу слова, продвинутая вебовская молодежь все это давным-давно знает
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
12.12.2015, 16:38
На компьютере это не трудно сделать. Программа, которая
сканирует этот рисунок вертикальным прямыми, позволит
рассчитать среднюю высоту этой фигуры. А значит останется
только умножить ее на длину и получить площадь.
PS.
И масштаб не забудьте.
0
 Аватар для snake32
3511 / 1694 / 236
Регистрация: 26.02.2009
Сообщений: 8,471
Записей в блоге: 6
18.12.2015, 16:56
Цитата Сообщение от Igor3D Посмотреть сообщение
векторных произведений
Вроде определён только для 3d и результат - вектор.
какая формула внутри cross для 2д? Косое/псевдоскаляроное призведение?
0
1969 / 825 / 115
Регистрация: 01.10.2012
Сообщений: 4,893
Записей в блоге: 2
19.12.2015, 10:20
Цитата Сообщение от snake32 Посмотреть сообщение
Вроде определён только для 3d и результат - вектор.
какая формула внутри cross для 2д? Косое/псевдоскаляроное призведение?
Для 3d: формулу Вы знаете. Рез-т есть вектор направление которого перепендикулярно обоим исходным и образующее с ними правую тройку. А вот длина = синусу угла между исходными векторами, ну конечно помноженному на их длины. А это и есть удвоенная площадь тр-ка.

Для 2d: просто частный случай 3d. Поскольку исходные вектора лежат в плоскости XY, то рез-т всегда будет (0, 0, z) и длина/площадь будет = z. А формула вырождается в

z = p0.x * p1.y - p0.y * p1.x
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2015, 10:20
Помогаю со студенческими работами здесь

Вычисление площади многоугольника (перевести с C++ и Delphi)
помогите пожалуйста перевести с с++ на Visual C++ . если можете помочь то отпишитесь что поможете . #include &quot;stdafx.h&quot; ...

Вычисление площади произвольного многоугольника по координатам его вершин
Вычисление площади произвольного многоугольника по координатам его вершин.Кто смотжет сделать буду премного благодарен

Поиск площади многоугольника
я не знаю как написать программу: Многоугольник на плоскости задан целочисленными координатами N вершин в декартовой системе координат....

Функция нахождения площади многоугольника
В задаче ввести натуральное число n (где n&lt;=10) и координаты n точек , образующих многоугольник. Найти площадь многоугольника, разбив его...

Задача вычисления площади многоугольника
в общем у меня курсовой.... програма сделана.... но не мной... что мне нужно... Пожауйста напишите что и где делаеться в програме......


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru