2008-09-25 10 views
4

У меня есть эллипс с центром в (0,0), а ограничивающий прямоугольник равен x = [-5,5], y = [-6,6]. Эллипс пересекает прямоугольник в (-5,3), (- 2,5,6), (2,5, -6) и (5, -3)Как найти угол поворота большой оси эллипса с учетом его ограничивающего прямоугольника?

Я ничего не знаю об эллипсе, но единственное Мне нужно знать, к какому углу поворачивается главная ось.

кажется, что ответ должен быть очень простым, но я просто не вижу его ... спасибо за помощь!

ответ

3

Градиент эллипса идентичен градиенту пересечений с ограничивающим прямоугольником вдоль одной стороны эллипса. В вашем случае это линия от (-2,5,6) до (5, -3), верхняя сторона вашего эллипса. Эта линия имеет вертикальное падение 9 и горизонтальный ход 7,5.

Таким образом, мы получим следующий прямоугольный треугольник.

(-2.5,6) 
    *----- 
    |\x 
    | \ 
    | \ 
9 | \ 
    | \ 
    | x\ 
    +------* (5,-3) 
    7.5 

Угол, который мы ищем, является x одинаковым в обоих местах.

можно вычислить как:

-1 
tan (9/7.5) 

, который дает нам угол -50.19 градусов

+0

«Градиент эллипса совпадает с градиентом пересекается с прямоугольником вдоль одной стороны эллипса.» Предполагая, что это правильно, ваше гораздо более элегантное решение, чем мое. – 2008-09-25 08:59:50

+0

Эллипс зеркалируется вокруг большой оси, поэтому верхняя и нижняя линии параллельны (а также параллельны самой большой оси). Я не могу доказать это с первых принципов, но это правильно, и вы можете сказать по зеркальной природе четырех пересечений. – paxdiablo 2008-09-25 10:02:15

2

Если (0, 0) является центром, чем уравнение Вашего эллипс:

F (x, y) = Ax^2 + By^2 + Cxy + D = 0

Для любого заданного эллипса не все коэффициенты A, B, C и D определены однозначно. Можно умножить уравнение на любую ненулевую константу и получить новое уравнение того же эллипса.

4 пункта У вас есть 4 уравнения, но поскольку эти точки представляют собой две пары симметричных точек, эти уравнения не будут независимыми. Вы получите 2 независимых уравнения. Вы можете получить еще 2 уравнения, используя тот факт, что эллипс касается прямоугольника в точках шланга (так я его понимаю).

Таким образом, если Р (х, у) = Ax^2 + С^2 + Cxy + D Ваши условия:
дР/дх = 0 в точках (-2.5,6) и (2,5, -6)
дР/ду = 0 в точках (-5,3) и (5, -3)

Вот четыре линейных уравнений, которые Вы получаете

F(5, -3) = 5^2 * A + (-3)^2 * B + (-15) * C + D = 0 
F(2.5, -6) = (2.5)^2 * A + (-6)^2 * B + (-15) * C + D = 0 
dF(2.5, -6)/dx = 2*(2.5) * A + (-6) * C = 0 
dF(5, -3)/dy = 2*(-3) * B + 5 * C = 0 

После немного очистки:

25A + 9B - 15C + D = 0 //1 
6.25A + 36B - 15C + D = 0 //2 
    5A  - 6C  = 0 //3 
     - 6B + 5C  = 0 //4 

Все еще не все 4 уравнения независимы, и это хорошо. Множество однородно, и если они независимы, вы получите уникальное, но бесполезное решение A = 0, B = 0, C = 0, D = 0.

Как я уже говорил, коэффициенты не определены однозначно, поэтому вы можете установить один из коэффициентов, как вам нравится, и избавиться от одного уравнения.Например

25A + 9B - 15C = 1 //1 
    5A  - 6C = 0 //3 
     - 6B + 5C = 0 //4 

От этого Вы получаете: A = 4/75, B = 1/27, C = 2/45 (D, конечно, -1)

Теперь, чтобы добраться до угла , применить преобразование координат:

x = ξcos(φ) - ηsin(φ) 
y = ξsin(φ) + ηcos(φ) 

(я просто не мог удержаться, чтобы использовать эти письма :))
уравнению F (х, у) = 0

F(x(ξ, η), y(ξ, η)) = G(ξ, η) = 
    A (ξ^2cos^2(φ) + η^2sin^2(φ) - 2ξηcos(φ)sin(φ)) 
+ B (ξ^2sin^2(φ) + η^2cos^2(φ) + 2ξηcos(φ)sin(φ)) 
+ C (ξ^2cos(φ)sin(φ) - η^2cos(φ)sin(φ) + ξη(cos^2(φ) - sin^2(φ))) + D 

Используя эти два тождества:

2cos(φ)sin(φ) = sin(2φ) 
cos^2(φ) - sin^2(φ) = cos(2φ) 

вы получите коэффициент С 'который стоит на £ п продукта в G (ξ, η) быть:

C' = (BA) sin (2φ) + Ccos (2φ)

Теперь ваш вопрос: для какого угла φ коэффициент C 'исчезает (равен нулю)
Существует более одного угла φ, так как существует более одной оси. В случае главной оси B «> A»

0
  1. Установите угол эллипса = 0
  2. Вычислить 4 точки пересечения
  3. Удается ошибка между расчетными точками пересечения и желаемых из них (т. е. суммировать 4 расстояния).
  4. Если ошибка слишком большое использование секущая метод или Ньютон-Rhapson выработать новый угол для эллипса и перейти к 2.

Я использовал подобный подход к работе еще одну проблему Эллипс:

http://successfulsoftware.net/2008/07/18/a-mathematical-digression/

http://successfulsoftware.net/2008/08/25/a-mathematical-digression-revisited/

Смотрите также:

http://en.wikipedia.org/wiki/Secant_method

http://en.wikipedia.org/wiki/Newton_Rhapson