2010-06-30 4 views
4

Учитывая точку P на «канонической» эллипса, определяемого по осям a, b и длиной дуги s, как я могу найти точку Q, а также на эллипсе, то есть s по часовой стрелке вдоль эллиптической кривой от P - чтобы, если бы я начинал с P и «прогуливался» по эллиптической кривой на расстоянии s, я бы достигл Q - программно и без взлома вычислительного банка?Эллиптический Длина дуги

Я слышал, что это можно вычислить с помощью какой-то эллиптической интеграции, но мне нужно сделать это связкой и быстро. Я ищу простой в использовании, недорогостоящий и довольно точный метод аппроксимации. Или, по крайней мере, метод, который является одним или двумя из этих вещей. Я буду реализовывать это в python.

Редактировать: В качестве альтернативы, мне может потребоваться создать таблицу поиска значений позиции вокруг эллипсов (мне может понадобиться только 10-е из разнородных эллипсов). Как мне это сделать и какой метод я могу использовать для его заполнения?

ответ

3

Вам нужно будет интегрировать уравнение эллипса. На самом деле это не сложно.

Посмотрите на уравнениях здесь:

http://mathforum.org/library/drmath/view/51945.html

Поскольку вы используете питона, Рунге-Кутта для интеграции реализуется в Python здесь (я не знаю, лицензию, хотя) :

http://doswa.com/blog/2009/04/21/improved-rk4-implementation/

Просто на шаге 3 и 4 из mathforum решения вы уже имеете значение для DS (дуга клыков), и вы хотите дх.

После нахождения dx используйте шаг 6, чтобы найти y.

+1

Согласен; истинная математическая интеграция является такой же простой и точной, как вы когда-либо собираетесь получить. Я думаю, что искатель пытается избежать, это «интеграция» в смысле [Euler Integration] (http://en.wikipedia.org/wiki/Euler_method) или [Verlet Integration] (http: //en.wikipedia. org/wiki/Verlet_integration), который подразумевает * буквально * добавление крошечных 'ds' в точку до тех пор, пока вы не достигнете нужного вам' s'. –

1

Чтобы вычислить arclengths, вы можете использовать scipy.special.ellipeinc. (Более подробная информация приведена Роджер Стаффорд here.)

Если это не достаточно быстро, вы можете обернуть вычисление длины дуги в функции и использовать memoize decorator кэшировать результат предыдущих вызовов функций (длина дуги).

Или, как вы уже упоминали, вы можете предварительно вычислить нужные вам значения и сохранить их в dict.

-1

Для решения проблем вам нужна конъюнкция: есть круг в элементе elipse
a = 1, что он имеет тот же периметр han elipse. Это примерно 2πrp.your. периметр тогда P = 2πrp x a

+0

Что такое 'p',' r' и 'a'? Первоначальный вопрос заключается в нахождении длины дуги вдоль части эллипса. Вы, кажется, говорите, что, чтобы найти периметр всего эллипса, вам нужно найти окружность круга, имеющего тот же периметр. Это то же самое, что сказать «найти периметр, сначала найти периметр». – Teepeemm

Смежные вопросы