Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Площадь 4-х угольника по 4-ем точкам 
:(
    Опции темы
HappyMan
Дата 21.2.2005, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



Даны координаты углов 4-х угольника!(по часовой стрелке) нужно найти его площадь! Ответ - дробное число, 2 знака после запятой!
Добавлено @ 00:14
ну не обязательно дробное... если там квадрат например то ответ- челое число, два знака после запятой...
Добавлено @ 00:16
т.е будут просто 2 нуля..


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
HappyMan
Дата 21.2.2005, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 347
Регистрация: 29.7.2004

Репутация: нет
Всего: 2



вы мне главно алгоритм подскажите, а писать я сам буду..
Добавлено @ 00:29
у меня есть вариант:

1) находим граници 4-х угольника (прямоугольник)
2) делаем ФОР с левой верхней границе по правой нижней с шагом 0,01
3) если точка (х,у) не принадлежат ни одной из 4-х точек то находим 2 точки 4-х угольника - длижайшие к данной!
4) Типа делаем ФОР между этими точками и если наша точка находится на этой прямой или за (т.е внутри) то Площ=Площ+0,01.
...........

надеюсь мысль понятна...


--------------------
Цитата
Желательно на 100%.
© Mal Hack
PM MAIL   Вверх
Jureth
Дата 21.2.2005, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 23.11.2004
Где: где-то в Западной Сибири

Репутация: нет
Всего: 3



А готовых формул в учебнике геометрии нет? Всяко подобная задача всплывала у математиков.

Для прямоугольника напр. можно просто выяснить длины сторон (как разность координат), а потом их перемножить.
PM   Вверх
Akina
Дата 21.2.2005, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Делим на 2 треугольника, проверяем что поделили правильно - отрезок внутри, считаем площади треугольников (S=SQRT(p*(p-a)*(p-b)*(p-c))) и складываем.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 21.2.2005, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



S=SQR((p – a)*(p – b)*(p – c)*(p – d) – a*b*c*d*(Cos((B + D)/2)^2))

Сюда схади.......


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
~FoX~
Дата 21.2.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 2
Всего: 68



Забыл........формула работает только для выпуклых четтырехугольников
З.Ы. Сэнкс Акина


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
maxim1000
Дата 21.2.2005, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



произведение диагоналей на синус угла между ними
честно говоря, не уверен, но вроде подходит
Добавлено @ 13:13
а-а-а, еще пополам поделить
Добавлено @ 13:14
а вообще никакого синуса не надо, просто векторное произведение


--------------------
qqq
PM WWW   Вверх
De Gray
Дата 21.2.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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) был положителен.
Должно работать для всех -- т.к. просто считает полщади треугольников, из которых многоугольник состоит.
--------------------
Извяните, шо мы к вас за поможите обращаимси.
PM MAIL   Вверх
EMK
Дата 21.2.2005, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.10.2004

Репутация: нет
Всего: нет



Обход по часовой стлелке определяем площади трапеций (X2-x1)*((y2+y1)/2)+(x3-x2)*((y3+y2)/2)+(X4-x3)*((y4+y3)/2)+((X1-x4)*((y1+y4)/2) smile
PM MAIL   Вверх
MBo
Дата 21.2.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: 5
Всего: 18



PM MAIL   Вверх
cardinal
Дата 26.2.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Цитата(maxim1000 @ 21.2.2005, 11:13)
а вообще никакого синуса не надо, просто векторное произведение

Но только хитрое произведение определенных векторов. То есть тут важно какие векторы множишь. При этом надо не забыдь положительное векторное произведение поделить на два. То есть что-то похожее на
S = |ABxAD|/2 + |CDxCB|/2
Если A, B, C и D это точки прямоугольника расположеные в обходе против часовой стрелки, а AB и т.д. это их связывающие векторы.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
borisvolfson
Дата 26.2.2005, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 3.2.2005

Репутация: 2
Всего: 3



Самый универсальный алгоритм - это вычисление площади многоугольника через ориетированную площадь треугольника. Каждую сторону достариваем до треугольника, причем третья вершина - начало координат. Находим сумму ориетированных площадей треугольников.
PM MAIL   Вверх
poor_yorik
Дата 25.3.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 12.1.2005
Где: Общаги г. Киева

Репутация: 3
Всего: 8



Если даны 4 точки (x1, y1), (x2, y2), (x3, y3), (x4, y4), то фомула такая smile
S=abs((x1-x2)*(y2+y1)+(x2-x3)*(y3+y2)+(x3-x4)*(y4+y3)+(x4-x1)*(y1+y4))/2;
Для всех многоугольников есть простой алгоритм нахождения площади по точкам.
Код

for i:=1 to n do
 s:=s+(p[i].x-p[i mod n +1].x)*(p[i mod n +1].y+p[i].y)/2
s:=abs(s);

Этот код находит площадь любого (в том числе и невыпуклого) n-угольника заданного массивом вершин p.
--------------------
Семь раз отмерь, один раз - откомпиль.... Семь раз отпей, один раз - отлей... Семь раз отъешь, один раз - не жадничай и другим дай...
PM MAIL YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.