Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.05.2009, 02:29
WW_ WW_ вне форума
Новичок

Отправить личное сообщение для WW_ Посмотреть профиль Найти все сообщения от WW_
 
Регистрация: 20.02.2009
Сообщений: 13

Аффинное преобразование в пространстве - данные для теста
Написал программу для расчета аффинного преобразования в пространстве. Программа считает как прямое преобразование (для заданного набора точек и указанных параметров преобразования считает набор точек после преобразования), так и обратное преобразование (по заданным двум наборам точек находится наилучшее в некотором смысле семи, девяти или двенадцатипараметрическое преобразование).
Для наборов данных, которые расчитаны самой программой обратное преобразование считается отлично.
А вот для наборов данных из разных статей результаты слегка не совпадают, потому хочу проверить программу на "чужих" данных.
Кто может подсказать программу, которая по заданному набору точек (x,y,z) и параметрам аффинного преобразования (например, три поврота, три коэффициента масштабирования, три переноса) может посчитать координаты точек в новой системе?
Или кто может просто дать два набора точек (до и после преобразования, а я попробую "угадать" его параметры)?
  #2  
Старый 15.05.2009, 07:32
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Для двумерного случая матрицу аффиннного преобразования, переводящего три неколлинеарные точки (с индексом 0) в три другие (с индексом 1), можно посчитать так:

Код:
procedure CalcXF(var A: TMapMatrix; ax0, ay0, bx0, by0, cx0, cy0,
  ax1, ay1, bx1, by1, cx1, cy1: Double);
var
  b: TMapMatrix;
begin
//заполнение матриц
  SetMap(A, bx0 - ax0, by0 - ay0, cx0 - ax0, cy0 - ay0, ax0, ay0);
  SetMap(B, bx1 - ax1, by1 - ay1, cx1 - ax1, cy1 - ay1, ax1, ay1);
  ReverseMap(A, A);// обратная матрица
  MulMap(A, B, A); //умножение матриц A и B, результат в A
end;
Для 3D то же самое, только 4 некомпланарные точки брать.
  #3  
Старый 15.05.2009, 21:36
WW_ WW_ вне форума
Новичок

Отправить личное сообщение для WW_ Посмотреть профиль Найти все сообщения от WW_
 
Регистрация: 20.02.2009
Сообщений: 13

Как посчитать матрицу преобразований - не вопрос.
Программа считает её при числе точек от 4 и выше (по разным линейным и нелинейным МНК алгоритмам).
Просто для уверенности хотелось бы проверить её на чужих данных. На тех, что расчитывает сама программа (в ней есть и прямой расчет и обратный) всё в порядке.
  #4  
Старый 15.02.2010, 21:11
гость

 
Сообщений: n/a

Афинное преобразование
http://www.bte1927.ru/AFFINNOE_PREOBRAZOVANIE
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
12-параметрическое аффинное преобразованиев пространстве WW_ Математические алгоритмы (другое) 9 27.02.2009 20:25
Обратное z-преобразование ZPablo Реализация, исходники, языки 1 13.01.2009 00:28
Преобразование отсортированного массива pilgrim Математические алгоритмы 4 15.03.2008 19:09
Преобразование графа. гость Графы 1 13.01.2008 03:30
преобразование матрицы vehfl Математические алгоритмы 0 24.03.2007 11:28