Попросили дать пояснения к статье «Нахождение длины дуги эллипса«, в частности к «Длина дуги через эксцентриситет» и «Длина дуги через эксцентриситет с подготовкой«.
Длина дуги это сумма длин хорд
Предположим, у нас есть эллипс с центром в точке (0,0). Задан некими полуосями a и b. Есть точка A на эллипсе, которая находится на пересечении линии, проведённой из центра координат под углом 45°. Есть точка B, которая отстоит от точки A на 90° по часовой стрелке. Угол в точке B, таким образом, равен -45°.
Теперь от точки А отложим 30° по часовой стрелке, поставим точку С, и от точки С ещё 30°, и поставим точку D. Посчитаем суммарную длину хорд A-C, C-D и D-B. В результате получим длину ломаной, вписанной в дугу. Пока это, конечно, не длина дуги.
Тридцать градусов в нашем случае, это интервал, задающий величину отклонения для нахождения следующей точки. Если мы будем уменьшать этот интервал, точек будет становиться больше, а расстояние между ними будет всё меньше.
В конечном счёте интервал станет настолько малым, что результат нас вполне может удовлетворить. Величина интервала зависит от точности результата, который хотим получить.
Очевидно, что длина дуги эллипса — это сумма хорд между точками дуги. И чем короче хорды, тем результат точнее.
Длиной некоторой дуги называется тот предел, к которому стремится длина вписанной ломаной, когда длина наибольшего ее звена стремится к нулю:
(1) Предел суммы хорд при максимальной длине хорды, стремящейся к нулю
Длина хорды через координаты
Длина хорды — это расстояние между двумя точками. Предположим, что у нас есть на дуге две точки P1(x1;y1) и P2(x2;y2). Тогда длина хорды будет вычисляться как декартово расстояние:
Очевидно, что на дуге у нас несколько таких точек. А при очень малом интервале угла между ними, этих точек очень много. Запишем те же самые точки в ином варианте: Pi-1(xi-1;yi-1) и Pi(xi;yi). Тогда для формулы (1), опираясь на (2), мы можем выразить длину i-го звена ломаной:
(3) Длина i-го звена (хорды) вписанной ломаной
Координаты для расчёта длин хорд
Координаты точки эллипса описываются параметрическим уравнением:
Только в случае окружности (то есть при ) параметр является углом между положительным направлением оси абсцисс и радиус-вектором данной точки.
На самом деле t — это всегда угол окружности, которой эллипс был до «сплющивания». Начало и конец дуги задаются углами. В нашем случае A: 45° и B: -45°. Если углы не меняются, то при изменении, например, оси b, параметрический угол t на «исходной» окружности, также меняется. Исходная окружность, это эллипс, у которого полуоси равны.
Таким образом, перед тем, как что-то считать, нам необходимо получить параметрический угол t1, соответствующий углу в точке А, и угол t2 — в точке B.
Как находить параметр для угла эллипса, подробно расписано в этой статье.
Нахождение параметрического угла для точки, полученной пересечением луча, проходящего через центр эллипса под неким углом к оси абсцисс.
1 2 3 |
//-- находим параметр (некий угол) для уравнения --- SinCos(Angle,sn,cs); t := ArcTan2(a*sn, b*cs); |
Интегральная сумма
Итак, мы выяснили, что длина дуги эллипса — это сумма звеньев (хорд) вписанной ломаной. Учитывая (3) это утверждение можно записать следующим образом:
(5) Длина дуги эллипса в интервале [A,B] = [0,n]
Нам нужно определить приращения для x и y. Используя параметрическое уравнение эллипса(4) и интернет всемогущий, определяем, что приращения у нас следующие:
(6) Приращения для x и y при постоянном dt
Значения x и y рассчитываются исключительно на основе параметра t, и к этому моменту мы уже забыли углы A и B, потому что у нас уже есть соответствующие им параметрические углы t1 и t2 .
С учётом (6) запишем формулу (5) в ином виде:
(7) Интегральная сумма для нахождения длины дуги эллипса
Что тут происходит. Интеграл — это сумма результатов подинтегральной функции, аргумент которой изменяется от t1 до t2 на ничтожно малую постоянную величину dt.
Длина дуги эллипса через эксцентриситет
В ряде интересных параметров для эллипса есть такая числовая характеристика, показывающая степень отклонения эллипса от окружности, как эксцентриситет.
(8) Эксцентриситет эллипса через полуоси
Выразим b2:
Подставим в формулу (7):
Помним основное тригонометрическое тождество:
Получаем:
Убираем, сокращаем и получаем:
Выносим постоянную a и из-под корня, и из-под интеграла:
Пояснения
Почему начали с суммы звеньев ломаной вписанной в искомую дугу эллипса, а считаем какие-то другие параметрические углы?
Для того, чтобы посчитать координаты ломаной нам всё равно нужно находить параметр для каждого угла. Также, для интегральной суммы нам нужно постоянное приращение аргумента. Если посмотреть на рис.4., то можем увидеть, что приращения параметра постоянны, а на дуге эллипса такого не наблюдаем.
Так как считать-то?
Вначале находим квадрат эксцентриситета:
Затем находим параметры t1 и t2 для углов начала (A) и конца (B) дуги:
Решаем, какой взять dt. Практика показывает, что 0.001 и быстр и достаточно точен.
После этого встаём на t1, аргумент t сейчас равен ему, и в цикле увеличиваем t на dt, считая нарастающую сумму:
Когда достигаем t2, считаем и останавливаемся. Полученный результат домножаем на a.
Всё.
Какое значение B нужно подставить в выражение t2=arctan(a/b*tan(B)), чтобы получить t2=315 градусов? B-это угол ведь?
t2 = arctan(a/b*tan(B)) =>
tan(t2) = a/b*tan(B) =>
tan(B) = b/a*tan(t2) =>
B = arctan(b/a*tan(t2))
При:
a=10
b=6
t2=315°
B = arctan(6/10*tan(315°))=arctan(6/10*tan(315*PI/180))
Ответ:
B = -0.540419500270583 = 5.742765806909 радиан
или
B = -30.9637565320734° = 329.036243467927°
В статье мы ищем t2 от B, зачем нужна обратная операция, не понятно. Но между тем, вопрос задан, ответ конкретен.
Знаете формулу S=пи*а*в-в/а(x*корень а^2-x^2 -a^2*arcsin x/a)
Нет
Но могу предположить, что это площадь сегмента