"Раскрашивание" треугольника в Геодезии.

Тема в разделе "Геодезия как наука", создана пользователем zvezdochiot, 10 ноя 2021.

  1. zvezdochiot

    zvezdochiot Форумчанин

    Данная тема предназначена для ознакомления с интерполяционными методами применительно к результатам спутниковых наблюдений.

    Для того, чтобы не связываться со сложным и неустойчивым аффинным преобразованием из одного треугольника в другой зачастую применяют более простую технику: "закрашивание" треугольника разностями (или интерполяция разностей). Здесь имеется очень хорошая визуальная аналогия с непосредственным закрашиванием треугольников трёхкомпонентными цветами в компьютерной графике:
    [​IMG]
    Только в геодезии в качестве цветов выступают разности координат вершин двух "похожих" треугольников.

    Рассматривать окончательный оптимизированный алгоритм не буду, он ухудшает понимание действия, рассматривать буду только базовый алгоритм.

    Имеются 3 исходных пункта {A, B, C} с координатами и эти же пункты в спутниковой съёмке {a, b, c}. Помимо них внутри треугольника содержится множество съёмочных точек {m}. Для треугольника A-B-C известны разности координат исходных и съёмочных:

    d{A,B,C}{x,y,h} = {A,B,C}{x,y,h} -{a,b,c}{x,y,h}

    Для "закрашивания" (интерполяции/экстраполяции) точки m{x,y,h} строим дополнительную прямую, например из точки a через точку m на линию b-c, получив на ней вспомогательную точку s.

    PS: Здесь есть "слабое" место - это когда линия a-m параллельна линии b-c. В этом случае следует поменять расстановку точек {a,b,c}.

    В зависимости от того, попадает точка s{x,y,z} в промежуток b-c, точка m либо может принадлежать треугольнику, либо точно не принадлежит. Ежели точка m находится ближе точки s к точке a и выполняется предыдущее условие, то точка m находится внутри треугольника, иначе точно не находится внутри.

    Для точки s{x,y,z} по линии b-c линейной интерполяцией/экстраполяцией от точек {b и c} определяются значения разностей координат точки S:

    dS{x,y,h} = lineint({b,c,s}{x,y,h}, d{B,C}{x,y,h})

    Переходим теперь к линии a-s и тем же самым линейным интерполированием/экстраполированием определяем значения разностей точки M:

    dM{x,y,h} = lineint({a,s,m}{x,y,h}, d{A,S}{x,y,h})

    Ну и сами "закрашенные" координаты точки m:

    M{x,y,h} = m{x,y,h} + dM{x,y,h}

    Данный метод не оптимизирован от слова совсем. В компьютерной графике применяются методы с многочисленными оптимизациями, но они мешают увидеть суть "окрашивания" (интерполяции/экстраполяции) треугольника.

    --------------------------------------------------------

    Описание линейной интерполяции lineint().

    Распишу на примере координаты x:

    dS.x = lineint({b,c,s}x, d{B,C}x) = dB.x + (dC.x - dB.x) * s.l / c.l

    s.l = sqrt((s.x - b.x)^2 + (s.y - b.y)^2 + (s.h - b.h)^2)
    c.l = sqrt((c.x - b.x)^2 + (c.y - b.y)^2 + (c.h - b.h)^2)

    --------------------------------------------------------

    Пересечение S линий A-M и B-C:

    d = (b.x*(m.y-a.y)+c.x*(a.y-m.y)+(c.y-b.y)*m.x+a.x*(b.y-c.y))
    kL = -(a.x*(c.y-b.y)+b.x*(a.y-c.y)+(b.y-a.y)*c.x)/d
    s.x = a.x + (m.x-a.x)*kL
    s.y = a.y + (m.y-a.y)*kL
    s.h = a.h + (m.h-a.h)*kL

    Всё.
     
    stavr, Olimpix, мирось и 2 другим нравится это.
  2. Deleted member 122005

    Deleted member 122005 Только чтение

    Возникает вопрос. А не проще ли для "закрашивания" точки m сделать следующее... "Цвет" точки m равен совокупности трёх "цветов" в вершинах треугольника (эти три "цвета" условно обзову "исходными цветами"). Вес каждого "исходного цвета" назначить обратно пропорциональным расстоянию от точки m до соответствующей вершины треугольника. "Цвет" точки m принять равным среднему весовому.
     
  3. zvezdochiot

    zvezdochiot Форумчанин

    Это уже радиальная интерполяция. Она образует три ярко выраженные окружности вокруг вершин с особой точкой в самой вершине. Такая интерполяция нелинейна. Но при желании можно конечно.

    Ты не обратил внимание на главное! "Уравнивание" в данном случае предполагает (и это хорошо видно на картинке) нахождение съёмочных точек внутри треугольников исходных точек. В этом подвох! Зачастую это условие тупо не выполняется!
     
  4. Deleted member 122005

    Deleted member 122005 Только чтение

    Нет, я понял, что речь опять же о неком поле поправок по типу NTv2. Вопрос в том, какую интерполяцию лучше выбрать. Я считаю, что лучше сделать так, поскольку в линейной модели влияние одной из вершин может быть сведено практически к нулю в том случае, когда точка m расположена вблизи стороны треугольника. В то же время целесообразно обеспечить сходимость точки m не только по отношению к двум наиболее близким к ней точкам (например, А и B, которые образуют сторону треугольника), но и ко всем ближайшим исходным пунктам в принципе. В том числе и к тем, которые находятся за пределами треугольника, но также включены в сеть.
     
    zvezdochiot нравится это.
  5. zvezdochiot

    zvezdochiot Форумчанин

    Сделал тестовую таблицу.
     

    Вложения:

    • tricolor.xls
      Размер файла:
      31,5 КБ
      Просмотров:
      19
  6. andrew_klikunov

    andrew_klikunov Форумчанин

    В NTv2 используется билинейная.
     
  7. zvezdochiot

    zvezdochiot Форумчанин

    Ну здесь тоже какбэ не одномерная, на секундочку.

    Добавил рабочий вариант таблицы.
     

    Вложения:

  8. andrew_klikunov

    andrew_klikunov Форумчанин

    Тут ещё такой момент...Всё таки, NTv2 - это грид, прямоугольная сетка, не треугольники там. И там преобазование идет между датумами, проекций там нет. Про TIN в пересчетах статью прикладываю.
     

    Вложения:

  9. zvezdochiot

    zvezdochiot Форумчанин

    Я даже более того скажу, NTv2 - это скорее растр, чем какая то сетка. Но в данной теме разговор ведётся за что то более нашенское, отечественное: https://geodesist.ru/threads/kalibrovka-ili-uravnivanie.89266/#post-1033804
     
  10. andrew_klikunov

    andrew_klikunov Форумчанин

    Да, он так и строится, в начале растры разностей B и L, потом уже в специфический формат и всё.

    Так уже изобрели таблицу поправок от СК-32 к СК-42 по листам 1:1 000 000. Задолго до той инструкции...
     
  11. zvezdochiot

    zvezdochiot Форумчанин

    Ну мало ли, что изобрели. Метод то остался. Раньше вообще всё "любили" по таблицам делать.
    "Был у меня тоже один изобретатель..."
     
  12. zvezdochiot

    zvezdochiot Форумчанин

    Для сравнения сделал таблицу с радиальной интерполяцией. Нелинейность значительная. Но конкретнее можно говорить "за/против" только после продолжительного тестирования.
     

    Вложения:

  13. ВЯЗ

    ВЯЗ Форумчанин

    Ну что. Симпатично. И даже цветисто. Но поразмыслив чуток, прихожу к мнению, что ваше предложение все же не является средством решения задачи выбора набора исходных пунктов, не отягощающих построение ошибками исходных данных. Скорее -это решение задачи сглаживания морщин дисторсий геодезического построения, имеющего ошибки исходных данных. Причем эти ошибки уже должны быть втиснуты в определенные рамки. Иначе сглаживать придется весьма серьезные деформации, лишающие решение вского смысла. Установление рамок применимости вашего решения, видимо, ждет завершения вашего исследования.
    Вот кстати, для анализа и визуализации деформаций ваше решение будет весьма уместно.
    Успехов!
     
    Ohr, мирось и В.Шуфотинский нравится это.
  14. zvezdochiot

    zvezdochiot Форумчанин

    Это не исследование, а аналитический аналог графическому методу из https://geodesist.ru/threads/kalibrovka-ili-uravnivanie.89266/#post-1033804 . В нём не указано, что есть какие то ограничение на разность координат, указано только, что "это" должно быть сделано.
     
    мирось и ardi.stroi нравится это.
  15. zvezdochiot

    zvezdochiot Форумчанин

    Добавил простейшую перестановку вершин для максимального сокращения количества невалидных точек.
     

    Вложения:

  16. zvezdochiot

    zvezdochiot Форумчанин

    Вложения:

    мирось нравится это.
  17. zvezdochiot

    zvezdochiot Форумчанин

    Коли речь зашла за "исследования"...

    Линейная и радиальная интерполяция являются простыми распределениями величин без учёта самих величин. А ежели поставить "задачу" шире? Ежели потребовать, чтобы распределение величин зависело от самих величин?

    Вот вам и "исследование". В качестве альтернативы линейной и радиальной интерполяции добавил нелинейную "интерполяцию" (распределение) с помощью трёх "единичных сфер".
     

    Вложения:

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление