Я написал электронную таблицу для расчета этого. Вы можете увидеть его на https://skydrive.live.com/redir?resid=23B7BEDE6527529E!529&authkey=!AGboDW72AySsnK8, если хотите. (Это должно привести к созданию рабочей версии в Интернете, но вы также сможете загрузить ее.)
Основная техника работает так:
- Определить координаты X и Y для необожженных конечных точек
- Scrunch тех, кто использует простое масштабирование, чтобы получить координаты X и Y для желаемых конечных точек
- Отойдите от тех к углам
Это включает в себя довольно много расчетов. Вы можете проследить за этим в этой таблице, но вот все шаги:
Во-первых, я конвертирую ваши углы, чтобы использовать условные обозначения геометрии координат - насколько я могу судить, вы измеряете по часовой стрелке от 3 часов, но в координатной геометрии более нормальным является положительный угол, направленный против часовой стрелки. Таким образом, ваши начальные и конечные углы становятся 191 и 67 градусов соответственно. (Я сделал это, потому что в этом смысле математика менее запутана.))
Далее, электронная таблица определяет радиус в начальной и конечной точках. Вот формулы, которые я использую для начальной и конечной точек:
=D2*D3/SQRT(POWER(D3*COS(RADIANS(D4)),2) + POWER(D2*SIN(RADIANS(D4)),2))
=D2*D3/SQRT(POWER(D3*COS(RADIANS(D5)),2) + POWER(D2*SIN(RADIANS(D5)),2))
D2 и D3 - радиус X и Y. D4 - начальный угол, а D5 - конечный угол (настроенный на «условные» углы). Я получил эту формулу из статьи Википедии о Эллипсы в разделе, озаглавленном «Полярная форма относительно центра». Это уравнение принимает угол и говорит вам, каким будет радиус эллипса под этим углом.
Далее я использую это для вычисления координат X и Y для начальной и конечной точек. Вот формулы для начала X и Y:
=$B$8*COS(RADIANS(D4)) + D2
=D3-$B8*SIN(RADIANS(D4))
Как упоминалось ранее, D2 и D3 - это радиус X и Y, а D4 - начальный угол. (Формулы для конца X и Y выглядят одинаково только с D5. Причина добавления радиуса X состоит в том, что без этого числа варьируются от -Xradius до + Xradius. Добавление этого означает, что они варьируются от 0 до ширины. Ось Y делает что-то похожее, но я перевернул его, чтобы получить координаты экрана, потому что компьютерные графические системы часто склонны иметь это вверх ногами (где увеличение Y ведет вниз по странице). Да, не совсем верно, что я перевернул это, но исправил угол .. .sorry!
Далее мы вычисляем сжатые X и Y. Вот формулы для начальной точки:
=B9/B2*B13
=B10/B3*B14
B9 и B10 - предварительные растяжения X и Y, рассчитанные на предыдущем шаге. B2 и B3 - исходная ширина и высота, а B13 и B14 - сжатая ширина и высота. (Конечные формулы выглядят довольно похоже, конечно.) Так что это просто простая операция масштабирования.
Наконец, мы рассчитаем угол из них. Вот формула начального угла (и конечный угол почти идентичен)
=MOD(DEGREES(ATAN2(B16 - $D$13, $D$14-B17)), 360)
Функция ATAN2 принимает координаты X и Y и сообщает вам угол линии от начала координат до этой точки X, Y. Excel работает в радианах, поэтому мы должны преобразовать это обратно в градусы (точно так же, как я конвертировал из градусов в радианы в предыдущих формулах). А потом я беру это MOD 360, чтобы избежать отрицательных углов. ATAN2 никогда не выдает значения, превышающие PI (то есть 180 градусов), и выдает отрицательные значения для углов за пределами этого. Если взять это значение по модулю 360, оно вернется к положительному числу.
И затем последний шаг - преобразовать это обратно в вашу систему углов по часовой стрелке:
= 360 - B19
Подаваясь в ваших растянутых 1.88 / 3.4 размерах, мы получаем 165.51 и 287.70 градусов. Это не совсем совпадает с вашими номерами, но я пытаюсь понять, откуда вы их взяли. Они сделаны на глаз? И кормя в 2,5 / 2,55, я получаю 171,71 и 299,51. Опять же, немного отличается от вашего, но не сильно.