Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти прямоугольник, охватывающий эллипс, помогите решить задачку 
:(
    Опции темы
mr.DUDA
Дата 23.1.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



Помогите решить такую задачку по геометрии, пожалуйста:

Есть эллипс, с центром в точке (0;0). Эллипс может быть повёрнут вокруг центра на угол Alpha. Нужно найти координаты прямоугольника, в который вписан эллипс, то есть охватывающий прямоугольник.

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


--------------------
user posted image
PM MAIL WWW   Вверх
maxim1000
Дата 23.1.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



записываем в параметрическом виде X координаты
получаем аналитическую функцию
находим экстремумы (производная=0)
считаем значения в этих точках
получаем min и max X эллипса...


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


3D-маньяк
****


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

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



Цитата(maxim1000 @ 23.1.2006, 13:07 Найти цитируемый пост)
записываем в параметрическом виде X координаты
получаем аналитическую функцию
находим экстремумы (производная=0)
считаем значения в этих точках
получаем min и max X эллипса...

проблема с тем, как найти производную от уравнения. эллипс ведь повёрнутый.


--------------------
user posted image
PM MAIL WWW   Вверх
DENNN
Дата 23.1.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Непонятно: стороны прямоугольника д.б. параллельны осям координат или он тоже повернут?
PM ICQ   Вверх
mr.DUDA
Дата 23.1.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



стороны прямоугольника параллельны осям


--------------------
user posted image
PM MAIL WWW   Вверх
DENNN
Дата 23.1.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



М.б. не самое изящное решение, но самое простое. Считаем длину проекции каждой из полуосей на ось X. Та, которая больше - задает нам длину прямоугольника по этой оси. Повторяем эту же операцию для оси Y.
Т.е., если угол отсчитывается против часовой стрелки от оси OX
S1=cos(alfa)*a
S2=cos(90+alfa)*b

В данном случае предполагается, что полуось a при alfa=0 параллельна OX.
PM ICQ   Вверх
mr.DUDA
Дата 23.1.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



вроде, полуось необязательно проходит через крайнюю по X или Y точку эллипса, если эллипс повёрнутый:


Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  ellipse1.PNG 4,38 Kb


--------------------
user posted image
PM MAIL WWW   Вверх
DENNN
Дата 23.1.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот схема


S1=cos(alfa)*a
S2=sin(alfa)*b

S1>S2 -> Width=2*S1=2*cos(alfa)*a

S3=cos(alfa)*b
S4=sin(alfa)*a

S3>S4 - > HEIGHT=2*S3=2*cos(alfa)*b
Добавлено @ 15:01
mr.DUDA меня уже поправил - я был не прав. Высота в данном примере будет найдена неверно.

Это сообщение отредактировал(а) DENNN - 23.1.2006, 15:15

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  1.png 14,06 Kb
PM ICQ   Вверх
DENNN
Дата 23.1.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Тогда действительно, получается нужно взять уравнение для конкретного эллипса и найти экстремумы функции. Осталось вывести уравнение для эллиса, "повернутого" относительно начала координат smile(
PM ICQ   Вверх
mr.DUDA
Дата 23.1.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



Цитата(DENNN @ 23.1.2006, 14:11 Найти цитируемый пост)
Тогда действительно, получается нужно взять уравнение для конкретного эллипса и найти экстремумы функции. Осталось вывести уравнение для эллиса, "повернутого" относительно начала координат (

вот-вот smile
можно не для конкретного а для любого...


--------------------
user posted image
PM MAIL WWW   Вверх
Fin
Дата 23.1.2006, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


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

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



Уравнение элипса:
X = A * cos(t)
Y = B * sin(t)
,где
A - апогей элипса
B - перигей элипса

Что то мне подсказывает, хотя я не доказал, что искомые уравнения будут
Ширина = 2 * (A - (A-B)*sin(Al))
Высота = 2 * (B + (A-B)*sin(Al))

где Al - угол поворота элипса (Углы поворота от 0 до 180 градусов)

Еше раз повторяю, данные уравнения не доказаны.

Это сообщение отредактировал(а) Fin - 23.1.2006, 19:59


--------------------
Пролетал мимо.
PM MAIL   Вверх
maxim1000
Дата 23.1.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



1-й способ:
пишем уравнение обычного эллипса, действуем на него матрице поворота
2-й способ:
уравнение эллипса можно записать еще так:
(x,y)=sin(t) * (ax,ay) + cos(t) * (bx,by)
(ax,ay) - вектор, задающий одну полуось
(bx,by) - другую...


--------------------
qqq
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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