Нахождение матрицы не-афинного преобразования по заданным координатам.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нахождение матрицы не-афинного преобразования по заданным координатам.

Нахождение матрицы не-афинного преобразования по заданным координатам.

Ответ
Поиск в этой теме
Непрочитано 04.02.2011, 14:48 #1
Нахождение матрицы не-афинного преобразования по заданным координатам.
Сергей Дубина
 
Регистрация: 06.04.2009
Сообщений: 702

Известен набор исходных координат (матрица А) и набор результирующих координат (матрица D) полученных с побощью матрицы преобразования В (см. приложение). Матрица С является промежуточной. Результирующая матрица D получается из матрицы С путем деления матрицы С на её-же последний столбец для получения единицы.

Необходимо найти матрицу В.

Вложения
Тип файла: dwg
DWG 2007
преобразование.dwg (67.4 Кб, 1764 просмотров)

__________________
КазнитьØнельзяØпомиловать:eek:
Просмотров: 7026
 
Непрочитано 05.02.2011, 13:31
#2
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Не буду утверждать, может я и ошибаюсь, но по-моему в таком контексте задача не решается.
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 05.02.2011, 13:43
#3
rpahan


 
Регистрация: 19.01.2011
Сообщений: 75


Открывай математику высшую и раздел матрицы, там ищеш перемножения матриц
rpahan вне форума  
 
Непрочитано 05.02.2011, 14:20
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,169


алгебраическое решение на ум не пока приходит
Чуть позже попробую задать эту задачку Маткаду в блоке численного решения Given - Find, может чего вычислит, хотя бы достаточно приблизительно
kp+ вне форума  
 
Автор темы   Непрочитано 07.02.2011, 08:33
#5
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от TararykovDG Посмотреть сообщение
Не буду утверждать, может я и ошибаюсь, но по-моему в таком контексте задача не решается.
Должна решаться. Вопрос только как?
Цитата:
Сообщение от rpahan Посмотреть сообщение
Открывай математику высшую и раздел матрицы, там ищеш перемножения матриц
Там такого нет. Правила перемножения матриц нахождение обратной матрицы разными методами и т.д.
Цитата:
Сообщение от kp+ Посмотреть сообщение
алгебраическое решение на ум не пока приходит
Чуть позже попробую задать эту задачку Маткаду в блоке численного решения Given - Find, может чего вычислит, хотя бы достаточно приблизительно
Спасибо. Буду ждать.
З.Ы.
Для справки, для афинного преобразования, матрица [b]=[A^(-1)]*[D], для массива из трех произвольных координат (естественно есть частные случаи, для котрых нет решения)
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 11:25
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,169


По крайней мере, "в лоб" - с помощью Given-Find и Given-Minerr - Mathcad ниасилил
kp+ вне форума  
 
Автор темы   Непрочитано 07.02.2011, 12:54
#7
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Наверно это нелинейные уравнения
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 14:53
#8
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>Нахождение матрицы не-афинного преобразования по заданным координатам.
>>Необходимо найти матрицу В.
Матрица B какраз является матрицей аффинного преобразования, а вы совершив 2 действия с данными пытаетесь восстановить одно.

Не обратимым ваше преобразование делает последнее деление (отброс одной координаты = превращение точек в прямые). Если вам известна матрица C, то B можно найти по формуле из [5]. Если известна только D - ситуация равносильна попытке восстановить 3D деталь по одной 2D проекции - мало данных.

edit: Всетаки B не аффинная матрица

Последний раз редактировалось zamtmn, 07.02.2011 в 15:17. Причина: вспомнил определение аффинных преобразований
zamtmn вне форума  
 
Автор темы   Непрочитано 07.02.2011, 15:19
#9
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от zamtmn Посмотреть сообщение
>Нахождение матрицы не-афинного преобразования по заданным координатам.
>>Необходимо найти матрицу В.
Матрица B какраз является матрицей аффинного преобразования, а вы совершив 2 действия с данными пытаетесь восстановить одно.

Не аффинным ваше преобразование делает последнее деление (отброс одной координаты = превращение точек в прямые). Если вам известна матрица C, то B можно найти по формуле из [5]. Если известна только D - ситуация равносильна попытке восстановить 3D деталь по одной 2D проекции - мало данных.
Вы условие внимательно читали?
Известно [А] и [D]: найти [В] зная взаимосвязь между [A] -> [b] -> [C] -> [D]
Не нужно кричать на весь мир что небо голубое - то что матрица [В] обладает афинными свойствами это очевидно. А в целом нет. Поэтому тема и была так названа.
Про 3D деталь вы заблуждаетесь. Координаты [А] и [D] плоские. [А] для нахождения [В] необходимо не более 4 точек.
Вся фишка заключается в том что для нахождения всех элементов [В] необходимо решить систему нелинейных уравнений. По этому пути я сейчас и иду.
__________________
КазнитьØнельзяØпомиловать:eek:

Последний раз редактировалось Сергей Дубина, 07.02.2011 в 15:27.
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 15:28
#10
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Известно А и D: найти В зная взаимосвязь между A -> B -> C -> D
восстановите С, если знаете взаимосвязь.
>>Про 3D деталь вы заблуждаетесь. Координаты А и D плоские. А для нахождения В необходимо не более 4 точек.
нет, не заблуждаюсь, плоские\неплоские без разницы - одна координата была потеряна после деления

edit: Хотя может и заблуждаюсь и дополнительной информации что исходный объект плоский хватит для решения

Последний раз редактировалось zamtmn, 07.02.2011 в 15:37.
zamtmn вне форума  
 
Автор темы   Непрочитано 07.02.2011, 15:35
#11
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от zamtmn Посмотреть сообщение
восстановите С, если знаете взаимосвязь.
Как?

Единицы в последнем столбце это не координата!!!
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 15:42
#12
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Как?
вот именно что никак, а система что линейная, что нелинейная - решений будет много. вы найдете какуюто B и какуюто С, поделив какуюто С на ее последний столбец - получите вашу D
zamtmn вне форума  
 
Автор темы   Непрочитано 07.02.2011, 15:49
#13
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от zamtmn Посмотреть сообщение
вот именно что никак, а система что линейная, что нелинейная - решений будет много.
Решение будет одно
Цитата:
Сообщение от zamtmn Посмотреть сообщение
вы найдете какуюто B и какуюто С, поделив какуюто С на ее последний столбец - получите вашу D
Вот это мне и надо. Есть предложения или дальше будем флуд гонять?
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 16:01
#14
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>Вот это мне и надо
Какаято B <> исходная B.

>>Есть предложения или дальше будем флуд гонять?
1) домножте D на случайные числа тем самым "восстановив" C
2) насколько понял это у вас перспективное проецирование? погуглите "восстановление положения камеры по фото"
zamtmn вне форума  
 
Автор темы   Непрочитано 07.02.2011, 16:08
#15
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от zamtmn Посмотреть сообщение
домножте D на случайные числа тем самым "восстановив" C
Эти числа не случайны - они часть общего целого. Домножив на случайные числа мы получим "какую-то другую" [b]
Цитата:
Сообщение от zamtmn Посмотреть сообщение
погуглите "восстановление положения камеры по фото"
уже две недели пытаюсь так сформулировать вопрос чтобы мне "не продали что нибудь ненужное"
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 07.02.2011, 20:26
#16
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,169


чуть позже попробую в том же Mathcad'е реализовать некое подобие bruteforce - т.е. перебор значений всех элементов [b] (в некотором диапазоне) с достаточно мелким шагом и проверку полученной матрицы [B'] путем подстановки в выражение, из которого получается [D]

Зная примерный диапазон значений элементов матрицы [b] (надо думать, от 0 до 10) и учитывая ее небольшую размерность 3х3, можно надеяться на умеренное время поиска решения даже при переборе с шагом 0,001.

Кстати, есть ли у матрицы [b] какие-то особенности?
Похоже, что B(1;1) и B(2;2) всегда равны 0, B(2;1) и B(1;2) всегда 1, B(3;1) и B(3;2) - всегда 4, и только последний столбец "несет смысловую нагрузку". Тогда две трети перебора отпадают, что уже хорошо

Последний раз редактировалось kp+, 07.02.2011 в 20:37.
kp+ вне форума  
 
Непрочитано 07.02.2011, 20:43
#17
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


>>уже две недели пытаюсь так сформулировать вопрос чтобы мне "не продали что нибудь ненужное"
Незнаю, попадалось это вам уже или нет:

http://super.tka4.org/materials/stud...lad%202/h1.pdf
В математику без пузыря вникать не хочется, но судя по заключению дельная статья.

http://sourceforge.net/projects/artoolkit/
опенсурсная программа тоже вроде про то что надо, можно подглядеть реализацию
zamtmn вне форума  
 
Автор темы   Непрочитано 09.02.2011, 09:46
#18
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Цитата:
Сообщение от kp+ Посмотреть сообщение
Кстати, есть ли у матрицы [b] какие-то особенности?
Похоже, что B(1;1) и B(2;2) всегда равны 0, B(2;1) и B(1;2) всегда 1, B(3;1) и B(3;2) - всегда 4, и только последний столбец "несет смысловую нагрузку". Тогда две трети перебора отпадают, что уже хорошо
только В(3,3)=1
Остальные элементы носят совмещенные функции:
B(1;1),B(2;2),B(2;1) и B(1;2) отвечают за поворот и сдвиг, диагональные (кроме В(3,3)) отвечают за масштаб (в сочетании с B(1;1),B(2;2),B(2;1) и B(1;2)), В(3,1),В(3,2) за сдвиг, В(1,3) и В(2,3) за "непарралельнось"
у меня маткада нет если не трудго загоните нелинейную систему уравнений (см. вложение)



Цитата:
Сообщение от zamtmn Посмотреть сообщение
Незнаю, попадалось это вам уже или нет:
pdf: Спасибо, слишком круто, нужно проще.
source: В чужих исходниках ковыряться дело непростое.
Вложения
Тип файла: zip СНУ.zip (74.6 Кб, 62 просмотров)
__________________
КазнитьØнельзяØпомиловать:eek:
Сергей Дубина вне форума  
 
Непрочитано 09.02.2011, 11:38
#19
zamtmn

КИПиА
 
Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
<phrase 1=


mathematica5 систему решила, ответ в текстовом файле с символами форматирования математики весит 261435 байт, без них бкдет килобайт 50 голой формулы))
Вложения
Тип файла: rar 123.rar (5.0 Кб, 58 просмотров)

Последний раз редактировалось zamtmn, 09.02.2011 в 11:44.
zamtmn вне форума  
 
Автор темы   Непрочитано 09.02.2011, 12:08
#20
Сергей Дубина


 
Регистрация: 06.04.2009
Сообщений: 702


Математику, хотя бы в маткад можно перегнать? Вчера маткад нашел, а математику незнаю смогу-ли.
По тексту 123.NB понятно суть довольно смутно. В любом случае спасибо.
__________________
КазнитьØнельзяØпомиловать:eek:

Последний раз редактировалось Сергей Дубина, 09.02.2011 в 16:48.
Сергей Дубина вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Нахождение матрицы не-афинного преобразования по заданным координатам.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как на лиспе начертить много линий по заданным координатам из одной точки topograf83 LISP 4 26.09.2009 22:53