|
0 / 0 / 0
Регистрация: 12.11.2016
Сообщений: 7
|
|
Сравнение двух кривых25.11.2016, 01:04. Показов 8546. Ответов 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
Вычислить площадь фигуры между дугами двух кривых Написать программу для построения двух кривых по заданным точкам Построить семейство из двух кривых, заданных уравнением в полярных координатах Написать функцию нахождения точек пересечения двух кривых, основанную на методе простой итерации
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 11.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|