Как выглядит стандартное решение эллипса по центру и 3 точкам?



@akaChewy

Суть такова:
Есть пруток, который обещает быть круглого сечения, но на самом деле сечение этого прута ближе к эллипсу, к тому же ещё и гуляет по всей длине.
Я могу взять 3 прибора для измерения диаметра, расположить их друг относительно друга со смещением 120 градусов (интуиция подсказывает, что этого будет достаточно) и в реальном времени снимать показания.
Имея эти данные я хотел бы вычислять площадь эллипса и вносить поправочный коэффициент. А так же хотелось бы знать максимальный диаметр/радиус эллипса, чтоб предупреждать о возможности застревания прутка.
Собственно вопрос:
Нужно найти площадь эллипса, минимальный и максимальный радиус.
Зная r1, r2 и r3 и угол между ними.

60960916b06c1565161826.png


Решения вопроса 0


Ответы на вопрос 2



@wataru Куратор тега Алгоритмы

TL;DR:

S = Pi*sqrt([ (L1+L2+L3)^2-2*(L1^2+L2^2+L3^2) ]/3)
r^2,R^2 = [ L1+L2+L3±sqrt(6*(L1^2+L2^2+L3^2)-2*(L1+L2+L3)^2) ]/3

тут L1, L2, L3 — квадраты трех измерений.

Вывод формул:
Чуть-чуть аналитической геометрии и куча элементарной алгебры помогут вам вывести эти уравнения.
Если ввести систему координат с осями по главным радиусам эллипса, то уравнение эллипса будет:
x^2/a^2+y^2/b^2 = 1

При этом все точки на эллипсе можно задать через угол радиуса к точке:

x(alpha) = a*cos(alpha)
y(alpha) = b*sin(alpha)

Эта формула совсем понятна, если представить, что эллипс — это единичная окружность, растянутая вдоль осей на коэффицинты a и b.

Обозначим синус и косинус угла для первого измерения как:
s = sin(a1), c = cos(a1)

Пусть квадраты расстояний — L1, L2, L3.

Отсюда можно составить уравнение для длины вдоль угла a1 (первое измерение), просто подставив известные x(a1) и y(a1).
L1 = a^2c^2+b^2s^2

Для остальных измерений надо прибавлять 120 градусов к углу под cos и sin. Если раскрыть cos(120+a1) = cos(120)cos(a1)-sin(120)sin(a1) и sin(120+a1) = cos(120)sin(a1)+sin(120)cos(a1), то можно составить еще 2 уравнения:

L2 = a^2(-1/2*c-sqrt(3)/2*s)^2+b^2(sqrt(3)/2*c-1/2*s)^2
L3 = a^2(-1/2*c+sqrt(3)/2*s)^2+b^2(-sqrt(3)/2*c-1/2*s)^2

Всего с учетом тригонометрического тождества s^2+c^2=1 у нас 4 уравнения на 4 неизвестных a, b, c, s.

Но нам не нужны все значения. Площадь эллипса Pi*a*b, а радиусы эллипса — a и b.

Раскрыв квадраты выше и всячески складывая эти уравнения можно получить в итоге

a^2+b^2 = 2/3*(L1+L2+L3)
a^2*b^2 = [ (L1+L2+L3)^2-2*(L1^2+L2^2+L3^2) ]/3

Отсюда площадь:

S = Pi*ab = Pi*sqrt([ (L1+L2+L3)^2-2*(L1^2+L2^2+L3^2 ]/3)

Если представить, что дан круг (L1=L2=L3), то формула вырождается в Pi*L1, что и должно быть (помним, что L1 — квадрат радиусов).

Чтобы найти радиусы эллипса, вам надо найти a и b. Выше уже даны два уравнения для суммы и произведения a^2 и b^2 — можно из них получить квадратное уравнение для t=a^2. Два его решения и будут вашими радиусами эллипса (не забудьте взять корни). тут надо аккуратно подставить выражения в школьные формулы для квадратного уравнения. Получается, что

r^2,R^2 = (L1+L2+L3±sqrt(6*(L1^2+L2^2+L3^2)-2*(L1+L2+L3)^2)) / 3

Опять же, подставляя равные L, оба радиуса будут L1 — что и надо.



@Lynn

Уравнение эллипса с центром в (0,0) — ax^2 + bxy + cy^2 = 1

Подставляйте известные точки и получите коэффициенты

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *