![]() |
|
|
![]()
|
|
| HappyMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 347 Регистрация: 29.7.2004 Репутация: нет Всего: 2 |
Даны координаты углов 4-х угольника!(по часовой стрелке) нужно найти его площадь! Ответ - дробное число, 2 знака после запятой!
Добавлено @ 00:14 ну не обязательно дробное... если там квадрат например то ответ- челое число, два знака после запятой... Добавлено @ 00:16 т.е будут просто 2 нуля.. --------------------
© Mal Hack |
|||
|
||||
| HappyMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 347 Регистрация: 29.7.2004 Репутация: нет Всего: 2 |
вы мне главно алгоритм подскажите, а писать я сам буду..
Добавлено @ 00:29 у меня есть вариант: 1) находим граници 4-х угольника (прямоугольник) 2) делаем ФОР с левой верхней границе по правой нижней с шагом 0,01 3) если точка (х,у) не принадлежат ни одной из 4-х точек то находим 2 точки 4-х угольника - длижайшие к данной! 4) Типа делаем ФОР между этими точками и если наша точка находится на этой прямой или за (т.е внутри) то Площ=Площ+0,01. ........... надеюсь мысль понятна... --------------------
© Mal Hack |
|||
|
||||
| Jureth |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 23.11.2004 Где: где-то в Западной Сибири Репутация: нет Всего: 3 |
А готовых формул в учебнике геометрии нет? Всяко подобная задача всплывала у математиков.
Для прямоугольника напр. можно просто выяснить длины сторон (как разность координат), а потом их перемножить. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Делим на 2 треугольника, проверяем что поделили правильно - отрезок внутри, считаем площади треугольников (S=SQRT(p*(p-a)*(p-b)*(p-c))) и складываем.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
||||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Забыл........формула работает только для выпуклых четтырехугольников
З.Ы. Сэнкс Акина |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
произведение диагоналей на синус угла между ними
честно говоря, не уверен, но вроде подходит Добавлено @ 13:13 а-а-а, еще пополам поделить Добавлено @ 13:14 а вообще никакого синуса не надо, просто векторное произведение -------------------- qqq |
|||
|
||||
| De Gray |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 18.2.2005 Где: Регистрация? Репутация: 1 Всего: 4 |
S = (L_01*L_03*sin(Fi_103) + L_12*L_23*sin(Fi_123))*0.5
L_IJ -- расстояние между вершинами с номерами I,J. FI_IJK угол, образованный вершинами с номерами IJK. номерация выбирается так(т.е. просто циклически сдвигается), чтобы sin(FI_123,103) был положителен. Должно работать для всех -- т.к. просто считает полщади треугольников, из которых многоугольник состоит. --------------------
Извяните, шо мы к вас за поможите обращаимси. |
|||
|
||||
| EMK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 27.10.2004 Репутация: нет Всего: нет |
Обход по часовой стлелке определяем площади трапеций (X2-x1)*((y2+y1)/2)+(x3-x2)*((y3+y2)/2)+(X4-x3)*((y4+y3)/2)+((X1-x4)*((y1+y4)/2)
|
|||
|
||||
| MBo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 10.6.2002 Репутация: 5 Всего: 18 |
||||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Но только хитрое произведение определенных векторов. То есть тут важно какие векторы множишь. При этом надо не забыдь положительное векторное произведение поделить на два. То есть что-то похожее на S = |ABxAD|/2 + |CDxCB|/2 Если A, B, C и D это точки прямоугольника расположеные в обходе против часовой стрелки, а AB и т.д. это их связывающие векторы. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| borisvolfson |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.2.2005 Репутация: 2 Всего: 3 |
Самый универсальный алгоритм - это вычисление площади многоугольника через ориетированную площадь треугольника. Каждую сторону достариваем до треугольника, причем третья вершина - начало координат. Находим сумму ориетированных площадей треугольников.
|
|||
|
||||
| poor_yorik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 148 Регистрация: 12.1.2005 Где: Общаги г. Киева Репутация: 3 Всего: 8 |
Если даны 4 точки (x1, y1), (x2, y2), (x3, y3), (x4, y4), то фомула такая
S=abs((x1-x2)*(y2+y1)+(x2-x3)*(y3+y2)+(x3-x4)*(y4+y3)+(x4-x1)*(y1+y4))/2; Для всех многоугольников есть простой алгоритм нахождения площади по точкам.
Этот код находит площадь любого (в том числе и невыпуклого) n-угольника заданного массивом вершин p. --------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай... |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |