Масштабирование фигуры для полного включения другой фигуры

У меня проблема с оптимизацией, которую я не могу понять. У меня есть две формы, каждая из которых описывается параметрическими уравнениями. Назовите их a(тета) и b(тета).

Что я хотел бы сделать, так это, учитывая одну форму a (тета), масштабировать другую форму b (тета), чтобы полностью закрыть первую форму. Сложность заключается в том, что фактическая геометрическая форма a(theta) и b(theta) может меняться в зависимости от параметров, заданных пользователем.

Я могу сделать это, проверив каждую точку на поверхности a(theta) и b(theta), но я надеялся, что есть более эффективный в вычислительном отношении метод. У кого-нибудь есть предложения?

Спасибо!

Вот рисунок, показывающий, что я имею в виду под одной формой внутри другой:

Две формы, одна внутри другой.


person Oak Nelson    schedule 08.01.2021    source источник
comment
Каждая точка - это много, близкое к бесконечности...   -  person Yves Daoust    schedule 08.01.2021
comment
Даже для простых форм найти оптимальное решение может быть непросто. Если полярное начало является общим, вычислите или оцените наибольшее r внутренней формы и наименьшее r внешнего.   -  person Yves Daoust    schedule 08.01.2021


Ответы (1)


Если вам нужно просто масштабировать внешнюю фигуру без необходимости находить даже близкое к оптимальному решение, то это относительно просто.

Преобразуйте оба уравнения в полярные координаты. Настройте коэффициент радиуса b. Вычтите, чтобы у вас было что-то вроде

c(theta, r) = r * b(theta) - a(theta)

Теперь вы просто решаете r, находите такое значение, при котором c положительно для всех тэта. это будет так же сложно, как и ваши параметризованные описания форм.


Если вам нужно минимальное или близкое к минимальному решение, то хорошего решения в закрытой форме не существует. Рассмотрим определение (r, theta) выше, но добавьте больше параметров: вы также можете перевести или повернуть уравнение, что даст вам

c(theta, alpha, r, (h, k)) = r * b(theta + alpha, (h, k)) - a(theta)

В этом 5-мерном пространстве труднее искать. Типичная эвристика — это градиентный спуск в пространстве поиска, но он не работает с произвольными пространствами — только с теми, градиенты которых хорошо себя ведут.


Если у вас есть известные ограничения на ваши формы, может быть хорошее общее решение с поворотами и переводами. Например, если вы знаете, что фигуры выпуклые, проблема становится намного проще: вы определяете максимальный и минимальный промежутки или итеративно расширяете и перемещаете внешнюю форму, пока не будут устранены все перекрытия. Однако для этого потребуется новое определение проблемы и новый опубликованный вопрос.

person Prune    schedule 08.01.2021
comment
Задача с выпуклыми формами совсем непростая. - person Yves Daoust; 08.01.2021
comment
Найти оптимальное решение с выпуклыми формами непросто; простое хорошее решение находится в пределах досягаемости. В любом случае, это намного проще, чем общий случай. - person Prune; 08.01.2021
comment
Я не согласен. Он внутри выпуклого многоугольника вогнутый, задача не проще. - person Yves Daoust; 08.01.2021
comment
Я думаю, мы используем термины по-разному. - person Prune; 08.01.2021
comment
Нет, мы не. Если вы понимаете, о чем я. - person Yves Daoust; 08.01.2021
comment
Спасибо Prune и Yves, это было полезно! - person Oak Nelson; 12.01.2021