![]() |
|
![]() ![]() ![]() |
|
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
Помогите решить такую задачку по геометрии, пожалуйста:
Есть эллипс, с центром в точке (0;0). Эллипс может быть повёрнут вокруг центра на угол Alpha. Нужно найти координаты прямоугольника, в который вписан эллипс, то есть охватывающий прямоугольник. Эллипс можно задавать как угодно, например в параметрическом виде (через a и b), либо через функцию от t, как удобней. -------------------- ![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
записываем в параметрическом виде X координаты
получаем аналитическую функцию находим экстремумы (производная=0) считаем значения в этих точках получаем min и max X эллипса... -------------------- qqq |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
проблема с тем, как найти производную от уравнения. эллипс ведь повёрнутый. -------------------- ![]() |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Непонятно: стороны прямоугольника д.б. параллельны осям координат или он тоже повернут?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
стороны прямоугольника параллельны осям
-------------------- ![]() |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
М.б. не самое изящное решение, но самое простое. Считаем длину проекции каждой из полуосей на ось X. Та, которая больше - задает нам длину прямоугольника по этой оси. Повторяем эту же операцию для оси Y.
Т.е., если угол отсчитывается против часовой стрелки от оси OX S1=cos(alfa)*a S2=cos(90+alfa)*b В данном случае предполагается, что полуось a при alfa=0 параллельна OX. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
вроде, полуось необязательно проходит через крайнюю по X или Y точку эллипса, если эллипс повёрнутый:
Присоединённый файл ( Кол-во скачиваний: 22 ) ![]() -------------------- ![]() |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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 ) ![]() |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Тогда действительно, получается нужно взять уравнение для конкретного эллипса и найти экстремумы функции. Осталось вывести уравнение для эллиса, "повернутого" относительно начала координат
![]() |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: нет Всего: 232 |
вот-вот ![]() можно не для конкретного а для любого... -------------------- ![]() |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 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 -------------------- Пролетал мимо. |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
1-й способ:
пишем уравнение обычного эллипса, действуем на него матрице поворота 2-й способ: уравнение эллипса можно записать еще так: (x,y)=sin(t) * (ax,ay) + cos(t) * (bx,by) (ax,ay) - вектор, задающий одну полуось (bx,by) - другую... -------------------- qqq |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |