Подскажите программы, которые позволяют вычислить параметры аффинного преобразования между произвольным наабором координат точек в 2 системах. Желательно, в свободного доступе...
На сайте http://www.racurs.ru/?page=5 выложены в свободном доступе: - ПО «Вычисление 7 параметров» - программа позволяет определить параметры преобразования систем координат; - ПО «Вычисление параметров проекции» - программа позволяет вычислить неизвестные параметры проекции Гаусса-Крюгера. (эти программы ниже в прикрепленных файлах).
Скажем так, рассмотрен простейший частный случай конформного преобразования - ортогональное преобразование. Оно работает далеко не всегда и вы это прекрасно знаете. Тоже самое делает программа CALC_KOORD уважаемого Valang'a. Попробуйте предложить им найти параметры и преобразовать координаты из своего примера Пример (Наведите курсор, чтобы раскрыть содержимое) Пример (раскрыть) Пример (свернуть) если я ничего не напутал, то это часть вашего примера Код: 108а;16974.03;12923.25;5862235.22;2289609.28 ? Или, если сподоблюсь там ответить (времени катастрофически не хватает), вы позволите мне привести ваш пример? Из доступных источников мне нравится Weighted Coordinate Transformations and their applications Описание настоящего конформного преобразования дано в Geomatics Guidance Note number 7, part 2 2.3.1.2 Polynomial transformation with complex numbers Тоже самое есть в учебнике Евгения Григорьевича Бойко Сфероидическая геодезия.
Пользователи автокада используют команду "выровнять" (_align), которая по 2 (3) указаниям исходных - результирующих точек переносит, поворачивает и масштабирует объекты, но сколько не искал - не находил lisp программу, которая бы могла вывести в текстовое окно эти параметры, которые фактически вычисляются программой и используются для трансформации...
Ребят, у кого есть доступ к Транскору. Посчитайте параметры трансформации будьте так любезны. Очень нужно
Ваша программа находит параметры ортогонального преобразования. С одной стороны, это правильно для геодезиста, так как он имеет дела с конформными проекциями, а ортогональное преобразование сохраняет конформность. Но вопрос стоял о более общем случае, об аффинном преобразовании.
Совершенно верно. Хмм. Построить МНК по общей формуле аффинного преобразования и решить систему нормальных уравнений, не используя центра масс, после чего загнать это в си? Не проще ли в таблице это провернуть. Кодить без конкретной задачи - абсурдная затея.
Это очень, очень плохая идея. Хотя можно и так, но только в том случае, если у вас есть четверная точность, что-то типа __float128 в gcc. Ибо для промежуточных результатов будет не хватать разрядной сетки (52+1 бит мантиссы), отводимой под двойную точность. Да и расширенная точность (64 бита мантиссы) здесь не поможет. Решение задачи МНК в общем случае через составление нормальных уравнений есть вселенское зло. (Ответ, почему это так, можно найти в книге Лоусона и Хенсона Solving Least Squares Problems.) Хотя иногда на это идут вынужденно, с осознанием трудностей, которые предстоит преодолевать. Проще. Но ещё проще на Visual Basic for Applications
Ссылка на хорошую книгу никогда не повредит: Чарльз Лоусон (Charles L. Lawson) Весьма сомнительное заявление, учитывая, что аффинное преобразование - это достаточно "произвольное" преобразование. Как бы ни был "хорош" алгоритм, параметры, которые он выдаст, вряд ли будут соответствовать "ожидаемым" результатам. И не имея промежуточных таблиц будет невозможно "скорректировать" результат.
число обусловленности исходной матрицы условных уравнений возводится в квадрат ⇒ надо в два раза увеличивать разрядность вычислений. З.Ы. Если память не изменяет, то кредовцы используют SVD, без составления нормальных уравнений.