Найти прямоугольник наибольшей площади, вписанный в эллипс.
Условия и ограничения:
Оптимальное решение не нужно (а оно есть? ), скорость важнее
Очевидно, оси эллипса параллельны осям координат
Вписанный прямоугольник также ориентирован по осям координат
(Самое главное)Мой размякший мозг, который чем-то подобным занимался несколько лет назад
Объясняю, для чего это нужно:
есть некоторая рабочая область, на которой находятся объекты различной формы. У каждого объекта есть свойство Текст. Оный и требуется отобразить. Для простоты для каждой формы вычисляется прямоугольник, в который текст будет выводиться.
Т.е. особая точность не нужна, т.к. скорость пересчета влияет на скорость отрисовки.
В крайнем случае, "пошлите" меня к какому-нить сборищу алгоритмов по геометрии, что-то с кандачка не получается нарыть более-менее приличных.
NBЯ знаю, что в эллипс можно вписать бесконечное число прямоугольников
--
К вашим услугам,
Re: Вписать прямоугольник в эллипс (fast-n-dirty решение)
Здравствуйте, Spaider, Вы писали:
S>Задача состоит в следующем:
S>Найти прямоугольник наибольшей площади, вписанный в эллипс.
S>Условия и ограничения: S>
S> Оптимальное решение не нужно (а оно есть? ), скорость важнее S> Очевидно, оси эллипса параллельны осям координат S> Вписанный прямоугольник также ориентирован по осям координат S> (Самое главное)Мой размякший мозг, который чем-то подобным занимался несколько лет назад S>
S>Объясняю, для чего это нужно: S>есть некоторая рабочая область, на которой находятся объекты различной формы. У каждого объекта есть свойство Текст. Оный и требуется отобразить. Для простоты для каждой формы вычисляется прямоугольник, в который текст будет выводиться.
S>Т.е. особая точность не нужна, т.к. скорость пересчета влияет на скорость отрисовки.
S>В крайнем случае, "пошлите" меня к какому-нить сборищу алгоритмов по геометрии, что-то с кандачка не получается нарыть более-менее приличных.
S>NBЯ знаю, что в эллипс можно вписать бесконечное число прямоугольников
Условия: Пересечение диагоналей прямоугольника и осей эллипса совпадают. И для простоты, считаем эту точку пересечения началом координта. Тогда уравнение эллипса :
x^2/a^2 + y^2/b^2 = 1
Решение:
Координаты верхнего левого угла прямоугольника:
x = a*(b^2/(1 + b^2))^0.5
y = (b^2/(1 + b^2))^0.5
Алексей.
... << RSDN@Home 1.1.3 stable >>
Re: Вписать прямоугольник в эллипс (fast-n-dirty решение)