Страница 1 из 1

Создать полигон с заданной площадью

Добавлено: 15 ноя 2018, 12:37
crashkkm
Каким образом создать полигон с заданной площадью, при этом некоторые из его граней должны быть зафиксированы?
Например имеется такая голубая граница, в нее надо вписать полигон на ровно 50,53 кв.м.
Спойлер
Изображение

Re: Создать полигон с заданной площадью

Добавлено: 15 ноя 2018, 14:13
gamm
crashkkm писал(а):
15 ноя 2018, 12:37
Например имеется такая голубая граница, в нее надо вписать полигон на ровно 50,53 кв.м.
0) рисуете полигон по точкам границы, если его площадь менее требуемой, то задача не решается.

План А:
1) делаете на детальной сетке дистанционное преобразование от границы (считаете расстояние), и направление градиента (не D8, а реального) в точках границы.
2) Двигаете точки по градиенту, считаете расстояние. По трем расстояниям сдвига, решив квадратное уравнение, вычисляете на сколько нужно сдвинуть все точки.

План В:
1) делаете на детальной сетке дистанционное преобразование от границы (считаете расстояние).
2) Проводите изолинии по расстоянию, получаете полигоны и считаете площади. По трем значениям расстояний решаете квадратное уравнение, и получаете расстояние, на котором нужно провести изолинию.
3) Повторяете (2), пока не получите требуемую точность. Если не сойдется (начнет колебаться), используете (2) из плана А.

P.S. Можно ограничиться двумя точками, получится метод Ньютона-Рафсона (метод касательных), по 3 точкам сходится быстрее, но считать сложнее.

Re: Создать полигон с заданной площадью

Добавлено: 15 ноя 2018, 16:05
bim2010
Где два программиста, там три мнения. Что это значит?
Мнение первое, второе и правильное...
"метод подгонки"

Re: Создать полигон с заданной площадью

Добавлено: 15 ноя 2018, 17:03
gamm
bim2010 писал(а):
15 ноя 2018, 16:05
"метод подгонки"
так он, родимый, и описан - в векторном и растровом вариантах :-) Второй более стабилен, если начальные невязки большие.