как узнать длину овала
Нахождение длины дуги эллипса
IP76 > Нахождение длины дуги эллипса
Как ни странно, но для нахождения длины дуги эллипса нет какой-то определенной функции, как в случае длины дуги окружности, или нахождения координат точки на эллипсе. Это интегральное уравнение.
Калькулятор
Get a better browser, bro…
Интегральное уравнение будем решать как обычно делается в подобных случаях: суммировать очень маленькие значения, которые получаются в результате работы некоей функции, на заданном диапазоне данных, которые наращиваются на чрезвычайно малую постоянную величину. Эта малая величина задается вызывающей стороной. В конце статьи есть рабочий пример с исходниками, в котором можно поиграться с этой «малостью».
Длина дуги, как сумма хорд
Самое простое, что может прийти в голову, это двигаться от начала дуги к ее концу с небольшим наращиванием угла отклонения, считать хорду и прибавлять ее к накапливаемой сумме.
Рис.1. Сумма хорд
(1) Сумма хорд
Проще говоря, находим координаты двух точек на эллипсе, отстоящих друг от друга на некий малый угол, по ним находим хорду, как гипотенузу получившегося прямоугольного треугольника.
В коде выглядит так:
Проверим с планетарным размахом. По последним данным Международной Службы Вращения Земли (IERS — 1996) большая экваториальная полуось Земли равна 6 378 136,49 м, а полярная малая — 6 356 751,75 м.
Посчитаем периметр меридиана каким-нибудь онлайн-калькулятором, получаем 40 007 859.543 (некоторые могут дать другое число, т.к. используют приближенные формулы для вычисления периметра).
Представленная выше функция за 109 милисекунд выдала результат 40 007 996.265 при дельте 0.001. Это нельзя назвать точным результатом.
Длина дуги, как интеграл
Длиной некоторой дуги называется тот предел, к которому стремится длина вписанной ломаной, когда длина наибольшего ее звена стремится к нулю:
(2) Предел суммы хорд при максимальной длине хорды, стремящейся к нулю
(3) Длина t-го звена (хорды) вписанной ломаной
Таким образом, длина дуги эллипса может быть описана интегральным уравнением:
(4) Интегрально-дифференциальное уравнение дуги эллипса
Используя параметрическое уравнение эллипса, приходим к уравнению:
Где t1 и t2 – параметры для начала и конца дуги параметрического уравнения эллипса. Параметром является некий угол к оси абсцисс. Что такое и как найти параметр для угла эллипса подробно изложено тут.
Зная, что (cos t)’ = — sin t, (sin t)’ = cos t (подробный вывод приведен тут и тут), получаем следующую формулу:
(5) Длина дуги эллипса
Выводов достаточно, чтобы написать вторую функцию нахождения длины дуги эллипса.
Результат при dt = 0.001 равен 40 007 859,543 за 109 милисекунд. Отлично!
Длина дуги через эксцентриситет
Это еще не окончательный вид уравнения. В ряде интересных параметров для эллипса есть такая числовая характеристика, показывающая степень отклонения эллипса от окружности, как эксцентриситет. Формула для эллипса:
(6) Эксцентриситет эллипса через полуоси
Чем эксцентриситет ближе к нулю, т.е. разница между a и b меньше, тем больше эллипс похож на окружность и наоборот, чем эксцентриситет ближе к единице, тем он более вытянут.
Выразим b 2 = a 2 (1 — e 2 ), подставим в формулу (5), помним, что sin 2 t + cos 2 t = 1 (справочник [1]), убираем a 2 за знак корня, и, как постоянную величину, за знак интеграла тоже, получаем:
(7) Окончательный вид уравнения для длины дуги эллипса
Пишем функцию, ожидаем более шустрого выполнения:
Результат 40 007 859.543, за чуть меньшее время, 94 милисекунды.
Длина дуги через эксцентриситет с подготовкой
Возьмем за основу последнюю функцию. Алгоритм построен так, что в цикле идем от стартового угла, к конечному, на каждой итерации подсчитывая параметр. А если сразу посчитать начальный и конечный параметры и определить условие выхода из цикла? Этим мы однозначно снизим вычислительную нагрузку внутри цикла.
Рис.2. Параметры дуги эллипса.
То есть, вместо того, чтобы идти из точки A в точку B, мы заранее считаем параметры t1 и t2. И в цикле больше нахождением параметров не занимаемся, а только считаем очередное приращение.
Берем код последней реализации и улучшаем:
Результат — 40 007 859,543 за 30 милисекунд! Мысль явно здравая.
Длина дуги и хорошо забытые хорды
Но вернемся к сумме хорд. Что там-то не так? Казалось бы, все просто, понятно и должно работать, но результат, мягко говоря, не точен.
Работая с вещественными типами, результат зависит от «мелкости» приращения, от разрядности используемых типов. Накапливаемые погрешности, неточное представление дробного числа и прочие прелести чисел с плавающей запятой.
Тип Extended – самый точный из существующих в Delphi (и, как следствие, самый медленный). Перепишем нахождение длины дуги хордами, используя этот тип, и без вызовов внешних функций нахождения координат на эллипсе.
Результат 40 007 859.542 за 94 милисекунды. Разница в одну тысячную, и такое же время. Весьма неплохо!
Практика
Качаем, запускаем. Видим такое окно:
Рис.3. Пример: Вид при запуске
При запуске в полях полуосей находятся «земные» значения. Эллипс сильно смахивает на окружность. Можно сразу нажать «Расчет», увидеть значения полярного меридиана, и начинать уже эксперименты.
Для начала проверим корректность получаемых результатов. Я попытался найти какие-нибудь онлайн калькуляторы для подсчета длины дуги эллипса, в которых можно было бы указать стартовый угол и произвольное отклонение, либо просто пару углов, определяющих дугу. Но все калькуляторы считают периметр эллипса. А с произвольной дугой как-то… не встретились.
Длина дуги эллипса (s) в зависимости от его параметра (θ) Автор: Illustr — собственная работа, CC BY-SA 4.0, Ссылка
Заскриним несколько моментов и посчитаем корректность:
Рис.4. Скрины расчетов
Введем a=2, b=0.5, стартовый угол равен 0, отклонение θ=5.642.
Рис.5. Подсчет длины дуги для a=2, b=0.5, стартовый угол=0, отклонение θ=5.642
Видим результат у всех один 8.055. Т.е правы все.
Аналогично поступаем с остальными тремя скринами:
Какой результат более истинный? Смотрите сами. Уменьшение дельты, т.е. угла для подсчетов, ведет к более точному результату. На 0.001 интегральные функции выдали результат как хордовые. При более грубой дельте, интегральные чуть изменились, а хордовые верны своему результату.
Сделаем дельту очень мелкой, равной 0.00001. Результат у всех, кроме первой, тот же, 1.333.
Лично я начинаю верить 5-ой формуле.
Вывод : Формулы 2-5 работают как надо. Фаворит 5. За меньшее время, т.е. при более «грубой» дельте, находит правильный результат.
Проверим на ужасных эллипсах. Т.е. где эксцентриситет очень близок к единице.
Рис.6. Проверка на очень «сплющенном» эллипсе
Можем заметить следующее: при 0.00001 функции 2 и 3 дали результат, близкий к результату функции 4, полученный при дельте 0.001. При дельте 0.00001 функция 4 дала результат, близкий к результату функции 5. Сама же функция 5 слабо колеблется в показаниях, что при дельте в 0.001, что при 0.00001.
Аналогичную ситуацию можно пронаблюдать при сильно вытянутом эллипсе:
Рис.7. Проверка на очень «вытянутом» эллипсе
Таким образом, имеет смысл использовать функции 4 и 5. Одну, как представительницу интегрального сословия, самую быструю и более точную из них. Другую, как представительницу очевидного и простого метода, работающую, между тем, лучше своих интегральных коллег при минимальных ресурсных затратах.
По интерфейсу
Правая кнопка мыши задает стартовый угол. Удерживая правую кнопку мыши можно «прогуляться» по эллипсу. Конечная точка дуги будет следовать за стартовой точкой, отстоя на заданный ранее угол. Если поставить галку на «сохранять параметрическое отклонение», параметрический угол между t1 и t2 станет неизменен. Очень полезно пронаблюдать, как будет меняться сектор.
Левая кнопка мыши задает конечную точку дуги, т.е. угол отклонения.
Среди центральных кривых второго порядка особое место занимает эллипс, близкий к окружности, обладающий похожими свойствами, но всё же уникальный и неповторимый.
Определение и элементы эллипса
Множество точек координатной плоскости, для каждой из которых выполняется условие: сумма расстояний до двух заданных точек (фокусов) есть величина постоянная, называется эллипсом.
По форме график эллипса представляет замкнутую овальную кривую:
Наиболее простым случаем является расположение линии так, чтобы каждая точка имела симметричную пару относительно начала координат, а координатные оси являлись осями симметрии.
Отрезки осей симметрии, соединяющие две точки эллипса, называются осями. Различаются по размерам (большая и малая), а их половинки, соответственно, считаются полуосями.
Точки эллипса, являющиеся концами осей, называются вершинами.
Расстояния от точки на линии до фокусов получили название фокальных радиусов.
Расстояние между фокусами есть фокальное расстояние.
Отношение фокального расстояния к большей оси называется эксцентриситетом. Это особая характеристика, показывающая вытянутость или сплющенность фигуры.
Основные свойства эллипса
имеются две оси и один центр симметрии;
при равенстве полуосей линия превращается в окружность;
все точки фигуры лежат внутри прямоугольника со сторонами, равными большой и малой осям эллипса, проходящими через вершины параллельно осям.
Уравнение эллипса
Пусть линия расположена так, чтобы центр симметрии совпадал с началом координат, а оси – с осями координат.
Для составления уравнения достаточно воспользоваться определением, введя обозначение:
а – большая полуось (в наиболее простом виде её располагают вдоль оси Оx) (большая ось, соответственно, равна 2a);
c – половина фокального расстояния;
M(x;y) – произвольная точка линии.
В этом случае фокусы находятся в точках F1(-c;0); F2(c;0)
После ввода ещё одного обозначения
получается наиболее простой вид уравнения:
Параметр b численно равен полуоси, расположенной вдоль Oy (a > b).
В случае (b b) формула эксцентриситета (ε) принимает вид:
Чем меньше эксцентриситет, тем более сжатым будет эллипс.
Площадь эллипса
Площадь фигуры (овала), ограниченной эллипсом, можно вычислить по формуле:
a – большая полуось, b – малая.
Площадь сегмента эллипса
Часть эллипса, отсекаемая прямой, называется его сегментом.
Длина дуги эллипса
Длина дуги находится с помощью определённого интеграла по соответствующей формуле при введении параметра:
Радиус круга, вписанного в эллипс
В отличие от многоугольников, круг, вписанный в эллипс, касается его только в двух точках. Поэтому наименьшее расстояние между точками эллипса (содержащее центр) совпадает с диаметром круга:
Радиус круга, описанного вокруг эллипса
Окружность, описанная около эллипса, касается его также только в двух точках. Поэтому наибольшее расстояние между точками эллипса совпадает с диаметром круга:
Онлайн калькулятор позволяет по известным параметрам вычислить остальные, найти площадь эллипса или его части, длину дуги всей фигуры или заключённой между двумя заданными точками.
Как построить эллипс
Построение линии удобно выполнять в декартовых координатах в каноническом виде.
Строится прямоугольник. Для этого проводятся прямые:
Сглаживая углы, проводится линия по сторонам прямоугольника.
Полученная фигура есть эллипс. По координатам отмечается каждый фокус.
При вращении вокруг любой из осей координат образуется поверхность, которая называется эллипсоид.
Координаты точки эллипса по углу
IP76 > Координаты точки эллипса по углу
Для нахождения координат точки эллипса по углу существует простое и элегантное решение. Понимаю, что для маститого математика это решение является очевидным. Однако, для меня в то далекое время, когда инет был диким, связь модемной, а я сильно молодым, это таковым не являлось.
Калькулятор точки на эллипсе
Давайте посмотрим, как это выглядит на практике. Потом теория. Оранжевый маркер отвечает за угол, на основании которого считаем координаты. Красный — параметрический угол, о котором ниже.
Get a better browser, bro…
Параметрическое уравнение эллипса
Обратимся, как обычно, к Википедии. Находим там следующее:
Каноническое уравнение эллипса может быть параметризовано:
Очевидно, что t — это угол, и это не «наш» угол. Это какой-то другой угол, который функционально связан с «нашим». «Нашим» называю угол, от которого требуется посчитать координаты.
Таким образом, задача нахождения координат точки эллипса по углу сводится к задаче нахождения угла t, зависящим от требуемого. Нахождением этой зависимости и займемся.
Подготовка
У нас есть эллипс, описанный двумя полуосями a и b. Представим две окружности, имеющих общий центр. Меньшая окружность (зеленая) имеет радиус b. Большая окружность (синяя) имеет радиус a.
Проведем прямую из общего центра [X0;Y0] в произвольную точку плоскости [X;Y]. В результате пересечения с этими окружностями получаются две точки [X1;Y1] и [X2;Y2].
α – угол между прямой и осью X.
Малая окружность | X1 = b × cos α | Y1 = b × sin α |
Большая окружность | X2 = a × cos α | Y2 = a × sin α |
Таблица 1. Координаты точек пересечения прямой с окружностями
Нахождение зависимости
Используя уравнение (1) посчитаем координаты точки на эллипсе [X’;Y’] для угла α. Проведем прямую из центра [X0;Y0] в точку [X’;Y’]. Угол β – угол между этой прямой и осью X.
Задача сводится к тому, чтобы найти такой α, при котором β был бы равен интересующему нас углу. Таким образом, угол α будет являться параметром в уравнении (1) для требуемого угла β.
Найдем зависимость между получившимся углом β и углом α. На рисунке видно, что прилегающий к углу катет (синий) равен ранее рассчитанному X2, а противолежащий (зеленый) равен Y1:
X’ = X2 = a × cos α
Y’ = Y1 = b × sin α
Опыт показывает, что тут зачастую возникает легкий ступор. Возможно, рисунок вводит в некое заблуждение. Видим треугольник, и если с синим катетом вопросов нет, то с зеленым — масса. Почему синус от α? Угол «вона где», тут синус вообще не от того угла и т.д.
Смотрим на пересечение прямой и малой (зеленой) окружности. Зеленый катет прилетает именно оттуда. Именно так координату Y’ и рассчитывали, согласно уравнению(1). Рисунок — это иллюстрация, не метод решения.
Тангенс угла β в этом случае равен:
Используя формулу тангенса произведем дальнейшие преобразования:
(4) Зависимость тангенса α от тангенса β
Таким образом, видим прямую зависимость угла α, который нужен нам в качестве параметра в уравнении(1), от угла β, координаты точки от которого хотим получить.
Нахождение координат
Угол α находим через арктангенс. В Delphi (и не только) для этих целей используется функция ArcTan2 из модуля math. Она корректно возвращает знак ± угла в зависимости от квадранта, а также предусмотрительно нечувствительна к возможным коллизиям, типа деления на 0.
Находим синус и косинус от требуемого угла β и подставляем в параметры функции ArcTan2, согласно последней формуле (4):
Эллипс и его свойства
причём
Также эллипс можно определить как:
Содержание
Связанные определения
Соотношения между элементами фигуры
.
— большая полуось | ||||||
— малая полуось | ||||||
— фокальное расстояние | ||||||
— фокальный параметр | ||||||
— перифокусное расстояние | ||||||
— апофокусное расстояние |
Координатное представление
Длина дуги эллипса
Длина дуги плоской линии определяется по формуле:
Воспользовавшись параметрическим представлением эллипса получаем следующее выражение:
После замены выражение для длины дуги принимает окончательный вид:
,
Приближённые формулы для периметра
Максимальная погрешность этой формулы
0,63 % при эксцентриситете эллипса
0,988 (соотношение осей
1/6,5). Погрешность всегда положительная.
Приблизительно в два раза меньшие погрешности в широком диапазоне эксцентриситетов дает формула:
, где
Максимальная погрешность этой формулы
0,36 % при эксцентриситете эллипса
0,980 (соотношение осей
1/5). Погрешность также всегда положительная.
Существенно лучшую точность при Рамануджана :
При эксцентриситете эллипса
0,980 (соотношение осей
1/5) погрешность составляет
0,02 %. Погрешность всегда отрицательная.
Еще точней оказалась вторая формула Рамануджана:
Точные формулы для периметра
Джеймс Айвори и Фридрих Бессель независимо друг от друга получили формулу для периметра эллипса:
где — Арифметико-геометрическое среднее 1 и , а — модифицированное арифметико-геометрическое среднее 1 и , которое было введено С. Ф. Адлаем в статье 2012 года.
Площадь эллипса
Площадь эллипса вычисляется по формуле
Шаблон:Нет АИ
Если эллипс задан уравнением , то площадь можно определить по формуле
.