Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Аппроксимация контура   Найти похожие ветки 

 
Анонимщик ©   (2004-10-15 17:30) [0]

Мне нужно аппроксимировать набор точек, описывающих замкнутый контур, похожий на эллипс (x^2/a^2 + y^2/b^2=1), эллипсом, и найти соответствующие лучшие в каком-то смысле (метода наименьших квадратов, например) a и b. Собственно алгоритм меня не интересует, есть ли библиотеки, позволяющие такое делать?


 
begin...end ©   (2004-10-15 17:47) [1]

Я встречал только про аппроксимацию полиномами. А для эллипса - не знаю, возможно, и есть. Но тут нужно решить два уравнения, это довольно просто.


 
MBo ©   (2004-10-15 17:53) [2]

Оси эллипса параллельны осям координат?


 
MBo ©   (2004-10-15 18:13) [3]

Если нет, то теоретически, насколько мне кажется, можно посчитать моменты распределения плотности точек первого и второго порядка, что даст "центр" эллипса (2 параметра) и еще три параметра, однозначно характеризующие эллипс (для описания эллипса общего вида необходимо 5 величин)


 
TUser ©   (2004-10-15 18:50) [4]

А если да (что следует из формулы) - тогда функция F(a,b), которая дает сумму квадратов отклонений для всех этих точек, имеет единственный минимум, который можно найти оптимизацией. Параметров-то всего два.


 
Ega23 ©   (2004-10-15 18:55) [5]

для описания эллипса общего вида необходимо 5 величин)

А разве трёх недостаточно?


 
Sapersky   (2004-10-15 19:17) [6]

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

А можно хотя бы ссылкой намекнуть, как это?

Вообще, если по скорости не критично, то можно делать многомерную оптимизацию (или как она правильно называется), генетическим алгоритмом, например.
Брать 2 точки (фокусы эллипса), считать сумму расстояний от них до каждой точки контура - для эллипса она должна быть равна. Т.е. чем равнее, тем эллипсоиднее :), точнее, зависит от того, какой эллипс нужен - если "наиболее приближённый", то брать среднее от всех расстояний и считать сумму разностей его и всех точек; если вписанный - минимальное расстояние и ещё учитывать площадь.


 
Ega23 ©   (2004-10-15 19:21) [7]

Sapersky   (15.10.04 19:17) [6]

Ну вот вроде именно так и нужно. По крайней мере, я бы именно так и делал.


 
Cobalt ©   (2004-10-15 23:23) [8]

Гы :)
У меня сегодня по Вычислительной Математике проходили тему Интерполяция и аппроксимация ):


 
MBo ©   (2004-10-16 12:12) [9]

>можно посчитать моменты распределения плотности точек первого и второго порядка
>А можно хотя бы ссылкой намекнуть, как это?
Книги по численным методам, в частности, Numerical Recipes (есть в инете).
Насколько я помню, в Math есть процедура расчета нескольких первых моментов (отдельно по координатам X и Y).
Реально ли это поможет в данном случае - не знаю, не пробовал.


 
MBo ©   (2004-10-16 17:39) [10]

>Реально ли это поможет в данном случае
Увы, поможет лишь при равномерном (или по крайней мере) известном распределении точек по углу, длине дуги, или другому параметру.


 
Анонимщик ©   (2004-10-18 11:24) [11]

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1097705573
saNat
2004-10-14 02:12
2004.10.31
Как убрать курсор в TMemo


1-1097753020
Tormoz
2004-10-14 15:23
2004.10.31
Определить, каким образом вызвана форма...


14-1097475279
Мазут Береговой
2004-10-11 10:14
2004.10.31
Американцы сняли фильм. Называется "Такси"...


4-1096332243
qwant
2004-09-28 04:44
2004.10.31
Сделать дефрагментатор диска


4-1096028348
Comp
2004-09-24 16:19
2004.10.31
Visual Styles





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский