![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 256
|
кто силен в математике/геометрии, подскажите. как посчитать площадь произвольной фигуры, стороны которой - отрезки прямых?
для выпуклой фигуры задача крайне простая, но нужно именно для произвольной.
__________________
Программирование на Flash подобно шаманству, гаданию на кофейной гуще - никогда не знаешь, что получится. Anime Must Die! |
|
|||||
|
.grin! wuz here
|
задача абсолютно нерешабельная, ежели известны ток длины отрезков -- строй как хош.
ежели есть углы, то можно на треугольники порезать и их считать =))
__________________
Breakcore them all! |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 256
|
фигура задана координатами вершин. сама себя не пересекает.
вопрос в том, по какому принципу делить на треугольники, если фигура невыпуклая?
__________________
Программирование на Flash подобно шаманству, гаданию на кофейной гуще - никогда не знаешь, что получится. Anime Must Die! |
|
|||||
|
Человек и Здание
|
ну вот вариант навскидку.
1. фигура, конечно, не должна себя пересекать. 2. фигура д. лежать в одном квадранте, если не так - передвинь параллельным переносом. 3. площадь фигур есть сумма площадей трапеций, составленных одной гранью фигуры, перпендикулярами на ось х и проекцией грани. надеюсь, прощадь трапеции мы считаем без проблем. на иллюстрации будетS = S(abb1a1)+s(bcc1b1)-s(dcc1d1)-s(add1a1). решение о + или - принимаем след. образом. в каждую из точек верхней грани трапеции может приходить не более двух отрезков (фигура не пересекается, в т.ч. вершинами). один из этих отрезков есть верхняя грань трапеции, другой - иная грань фигуры. определяем, попадает эта "иная" грань внутрь трапеции или нет (разностью углов, определяем углы арктангенсом, например), если попадает, значит +, если не попадает, то -. алгоритм на практике не проверен, возможны косяки, но вроде похоже.
__________________
Регардсы. |
|
|||||
|
Цитата:
__________________
--------------------------- Это должно было случится. |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 256
|
Цитата:
![]()
__________________
Программирование на Flash подобно шаманству, гаданию на кофейной гуще - никогда не знаешь, что получится. Anime Must Die! |
|
|||||
|
Придумал нечто )
Варварское. Создаем мув. Строим фигуру, заливаем ее. Берем 4 крайних координаты. И начинаем пикс за пиксом заполнять и проверять hitTest() ; ![]() Как говорится метод "в лоб". |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 256
|
идея смольного про трапеции меня подкупила. буду думать. придумаю - покажу.
но если у кого есть готовый алгоритм - велкам! =)
__________________
Программирование на Flash подобно шаманству, гаданию на кофейной гуще - никогда не знаешь, что получится. Anime Must Die! |
|
|||||
|
Регистрация: Nov 2003
Сообщений: 256
|
Видимо, мне сегодня везет... %)
http://www.2devochki.ru/67/15467/1.html
__________________
Программирование на Flash подобно шаманству, гаданию на кофейной гуще - никогда не знаешь, что получится. Anime Must Die! |
|
|||||
|
алгоритм на идее смольного будет более компактный. он будет работать и для невыпуклых фигур. и не через трапеции площади надо будет брать, а все через интегралы и вычислить их наперед аналитически. в этом случае фигуру и передвигать никуда не надо. я уже не говорю про дурацкую формулу герона для вычисления площади треугольника ( см.линк ) - ее только восьмиклассники применяют.
кстати и с непрямыми сторонами должно считать. просто два часа времени надо, чтобы отладить все и протестить. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|