|
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 7
|
|
Сравнение двух кривых25.11.2016, 01:04. Показов 8375. Ответов 8
Метки нет (Все метки)
Доброго времени суток. Не так давно у меня возникла задача по сравнению изолиний. Не двух конкретных, конечно, а множества. Я в процессе создания алгоритма, многое уже сделано, но осталась основная задача - наилучшим образом сравнить две конкретных кривых. Теперь подробнее)
Есть куча изолинии в одном конкретном участке океана. Есть еще одна куча в другом. Требуется сказать какая кривая (а точнее кусок кривой определенной длины) из одного участка лучше всего совпадает с кривой из другого участка. При этом надо понимать, что все кривые разной длины, расположены с разным наклоном (т.е. может потребоваться поворот кривой отн-но второй кривой). Что я делаю. Беру конкретную кривую с первого участка, помещаю ее в новую систему координат с началом в середине кривой (примерно). Перевожу координаты каждой точки кривой в новые координаты. То же самое с кривой со второго участка. В итоге имеем два набора координат x,y. Соответственно каждый из этих наборов составляет кривую. Пусть наши кривые одинаковой длины (расстояния для обеих кривых от первой точки до последней равны). Кривые уже в одной системе координат, начала и концы кривых совмещены. Далее требуется для конкретно этой пары кривых выяснить насколько они совпадают. Что значит совпадают? Значит, если наложить одну прямую на другую (что в целом уже сделано ибо они в одной системе координат и с одинаковой начальной-конечной точкой), отклонения одной от другой будут минимальные. Каким же образом сравнивать эти отклонения? Я не придумал ничего лучшего и простого как посчитать площадь между ними. Есть подозрение, что это не самый точный способ) И также для многих кривых положение полученное мною (концы совмещены) не самое оптимальное, т.е. мне нужно перемещать одну кривую отн-но второй по одной из осей? Вот такие дела. Хотел задать вопрос, в итоге написал все и даже вопроса-то четкого сформулировать не могу. Скорее комментарии по поводу верности алгоритма (перенос кривых в новые системы координат, оптимальность метода площадей, перемещение кривых отн-но друг друга). Буду рад любой подсказке идее. Ну и конечно, если кто-то скажет, что почитать по поводу сравнения двух кривых (двух кривых на плоскости, расположенных совсем не рядом, возможно разной длины) буду безмерно благодарен.
0
|
|
| 25.11.2016, 01:04 | |
|
Ответы с готовыми решениями:
8
Найти точки пересечения двух кривых Отношение двух кривых, заданных в разном масштабе |
|
|
|
| 25.11.2016, 07:24 | |
|
тут наверное нужно больше про определение говорить
если кривые разной длины, то корректно ли их сравнивать? т.е. две подобные кривые, например, дуги окружности радиуса 100 и 200 с одинаковым углом будут равны? а сам способ как раз идеальный. минимальная площадь между кривыми. в пределе - ноль...
0
|
|
|
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
|
|
| 25.11.2016, 09:50 | |
|
Тут многое зависит от того как бы вы сравнивали их самостоятельно, без компьютера, а так методов сравнения можно много понапридумывать.
- в новой системе координат соединить начало и конец обоих кривых - считать сумму расстояний между соответствующими точками кривых при проходе по ним - положить (сжать) обе кривые концами на точки (0;0), (1;1) - делить результат вычисления на длину более длинной кривой, или на произведение длин кривых (в зависимости от типа сравнения). - сравнивать "поведение" кривых - вектор обхода кривых, или величину его изменения (т.е. сравнение по производной). - также проверить вариант когда у одной кривой начало и конец поменяли местами, из двух проверок выбрать ту которая показывает большую схожесть Сравнение по площади может работать неправильно если изолинию нельзя будет определить как однозначную функцию y=f(x), грубо говоря если нужно сравнить два овала с разными пропорциями, то мы получим довольно существенную разность в площадях при несущественной разности в форме.
0
|
|
| 25.11.2016, 10:25 | |
|
qillous
Попробуйте применить метод наименьших квадратов. Берете N точек на оси абсцисс и вычисляете ординаты ваших кривых. Находите разность соответствующих ординат, возводите в квадрат ... и все суммируете. Далее сдвигаете одну кривую "параллельно" самой себе и вновь производите расчеты. В общем Наименьшая сумма квадратов и будет лучшим результатом. (число точек на ваше усмотрение)
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
|
| 25.11.2016, 21:10 | |
|
Упомянули океан, скорей всего изоуровень это карта высот дна?
Наверно сверять сами изоуровни не имеет смысла т.к. обычно это гладкие кривые которые суть стояться по не существующих данных(аппроксимация или интерполяция). Сверять куски кривых тоже не имеет смысла т.к. это просто случайный шум. Мне кажется сверять нужно класс поверхности. Т.е. брать точки в 3д сразу куска поверхности. И распознать что это? Это холмы, это уступы, это овраги и т.п. Я бы гуглил “похожесть поверхностей” еще лучше “Классификация дна океана”. http://www.activestudy.info/ob... go-relefa/ В дополн инфе: “Принципы генетической классификации подводного рельефа Методы изучения подводного рельефа Генетические типы подводного рельефа” и т.д. А сам классификатор это наверно нейросеть которая обучалась на классифицированной вручную выборке данных. Аналог задачи распознать рукописные цифры.
0
|
|
|
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 7
|
|||||
| 25.11.2016, 23:57 [ТС] | |||||
|
Если взять две кривых, вырезать из листа бумаги одну и попробовать наложить на другую (как угодна перемещая, только без поворота на 180 градусов), то чем более они совпадут, тем лучше. Т.е. ни о каком подобие речи не идет, полное совпадение. У меня точки идут через каждые полмили, так что весьма точные данные. Для того, что я хочу. А теперь пример что именно мне нужно сделать, надеюсь станет совсем понятно. Довольно давно Фрэнсисом Бэконом было замечено совпадение берегов Африки и Южной Америки. Из этого выросла теория дрейфов материков. Именно о таком совпадение линий (только не берега, а подводных хребтов и иных образований) идет речь. То есть мне нужно найти уровни одной глубины (сами глубины могут быть разные), совпадающие наилучшем образом, как береговые линии некоторых материков. P.s. По поводу разной длины кривых. В целом длину можно ограничить небольшим интервалом (вдруг кривая чуть короче будет совпадать намного лучше). Естественно разным для разных участков океана.
0
|
|||||
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||
| 26.11.2016, 14:33 | ||
|
1)зачем сверять то что сильно изменяет форму? (дно или берег) Все давно посчитано… https://books.google.com.ua/bo... B8&f=false 2) За 100 млн. лет эрозия и т.д. могли фундаментально поменять мелкие детали рельефа и дна. Значит сверять их точно вообще бессмысленно. 3)Материки могли кроме сдвига еще и произвольно повернуться на некие 3 угла. Значит сверять изолинии мне кажется тоже бессмысленно и вообще не корректно. Наверно лучше поискать как исследователи сверяли их… Как велосипед бы сделал примерно так: Cтроил 2 поверхности в 3д по данным изолиний (рельеф Америки и Африки дальше обозначим A и B). Одна поверхность неподвижна (например A), другой найти 6 неизвестных численно(XYZ координаты начала системы координат поверхности B, три угла поворота вокруг каждой оси). Задача: найти такие 6 неизвестных чтобы расстояние между поверхностями было минимальным. Величина например среднего отклонения поверхностей (в км.) и будет ответ. Суть расчета: грубый расчет затем уточнение. Основа расчета: расстояние от вершины в 3д до треугольника. К примеру: есть данные изолинии высот от 0 до 5 км шаг 0.5 км. A неподвижна для B найти 6 неизвестных. 1) строим поверхности A и B с шагом 2.5 км ищем 6 неизвестных поверхности B. 2)Нашли грубо 6 неизвестных, снова строим поверхности с более мелким шагом и т.д. Или лучше поискать типа: Поиск совпадения поверхности. Скорей всего давно есть адекватные алгоритмы анализа совпадения двух поверхностей… Изначально приблизить поверхности лучше визуально в 3д редакторе вручную. Может даже это быстрей всего и проще вообще как ответ.
0
|
||
|
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 7
|
|
| 26.11.2016, 14:50 [ТС] | |
|
Спасибо, Вы правы по поводу 3д модели, стало ясно как пришить сюда вычматы. Но это немного перебор для моей работы. Сравнение идет не только по изолиниям, но и по многим другим фактором (как то магнитные аномалии, состав грунта и т.д.). Совпадение изолинии только один из аргументов.
По поводу сдвигов. Сдвиг еще может быть и по вертикали (сползание) и это описывается схемой Вернике. Именно поэтому 3д модель необязательна, совпадение линий с глубиной 2000 и 3000 тоже хорошо. Поворот по осям - да, конечно. Правда в моей случае только 2 оси. Я предполагаю, что решил эту проблему перемещением обеих изолиний в относительные системы координат. Видимо не прав( С поворотом возникли небольшие проблемы, может посоветует как лучше реализовать? Перейти в полярную систему координат правильно понимаю? По поводу давно все сделано - это не так. Моя работа актуальна, для очень многих областей таких сравнений не проводилось. Хотя алгоритм для такого написан почти со 100% вероятностью. Но во-первых, не очень представляю как его найти, во-вторых, предпочитаю сделать сам, пусть и велосипед, всегда есть вероятность, что мой алгоритм будет лучше. Да, вручную конечно проще для конкретного участка, но повторюсь, это уже сделано. Теперь хочется сравнить какие рез-ты даст алгоритм. И это работа на будущее. Если учесть, что мне нужно провести такое сравнение для 10 участков например, то проще один раз написать алгоритм, чем каждый раз сравнивать руками, ведь так?)
0
|
|
|
1472 / 827 / 140
Регистрация: 12.10.2013
Сообщений: 5,456
|
||||||||||
| 26.11.2016, 15:50 | ||||||||||
|
Некий цельный стержень из стекла. Разломили пополам, части откололись, остались две половинки. Найти такие 6 неизвестных (координаты XYZ и 3 угла) одной половинки стержня чтобы их максимально приблизить. Удобно смотреть поверхности а не изолинии. Значит лучше сверять только состав грунта, а магнитное поле будет только мешать. И вообще: тип грунта это например цвет поверхности точки, величина магнитного поля- прозрачность точки. Еще больше наглядность 3д модели. Аномалии состава грунта отличные метки для сопоставления. Можно выводить не всю карту а некие экстремумы точки. Попробовать поискать спец форумы узкой направленности по геологии или что это…
0
|
||||||||||
| 26.11.2016, 15:50 | |
|
Помогаю со студенческими работами здесь
9
Вычислить площадь фигуры между дугами двух кривых Написать программу для построения двух кривых по заданным точкам Построить семейство из двух кривых, заданных уравнением в полярных координатах Написать функцию нахождения точек пересечения двух кривых, основанную на методе простой итерации
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|