|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Расчёт парметров трансформации. Масштабирование(разное по X и по Y) Пермещение и Поворот
Геодезист
Сибирь (где медведи по улицам ходят)
Регистрация: 12.03.2009
Сообщений: 860
|
||
Просмотров: 4856
|
|
||||
Да в этом то проблем нет, я и растр могу(программно) по-разному по X и по Y растягивать. Нужно только как-то посчитать это "по-разному"
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Из меня объясняльщик плохой, вот похожая тема - http://forum.dwg.ru/showthread.php?t=63148 там показано как образуется система уравнений
В вашем случае всё гораздо проще - 2d соответственно матрица будет 3х3, аффинное преобразование - система будет линейной Еще - если вы уже нашли перенос и поворот (хотя помоему поворот в случае разных масштабов у вас посчитан неверно) и дело только за разными масштабами по Х и У, то scalex=(t2.x-t4.x)/(t1.x-t3.x) и scaley=(t2.y-t4.y)/(t1.y-t3.y) |
|||
![]() |
|
||||
Здесь, в коде C# (помимо прочих) эта матрица представлена в виде объекта Matrix3d. В ActiveX операция выполняется как ThisDrawing.Utility.TranslateCoordinates.
Возможно ты сможешь из лиспа добраться до чего-то из обозначенного и воспользоваться этим? UPD Google быстро нашёл это.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 19.10.2012 в 12:47. |
||||
![]() |
|
||||
...
затёр ![]()
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 19.10.2012 в 13:37. |
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>Google быстро нашёл это.
В результате не будет чистой матрицы поворота, будет матрица_переноса*матрица_масштаба*матрица_поворота из которой можно вытянуть перенос, масштаб, поворот Disney, если одна из "целевых" точек является нацалом "целевой" системы координат (т.е. является точкой вставки растра) то всё сводится к матрице 2х2 (масштаб*поворот) edit: Вот вроде как решение для случая когда одна из исходных и целевых точек лежат в начале координат исходного и целевого растра, например C и C` (т.е. перенос отбрасываем и считаем его как C`-C). считаем A-C, B-C, A`-C`, B`-C` у меня это P и PP соответственно. Составляем систему и решаем - находим матрицу преобразования. Далее нужно вычленить растяжение по осям, тут два варианта - либо это длины векторов столбцов (sx=|m11,m21|, sy=|m12,m22|), либо векторов строк (sx=|m11,m12|, sy=|m21,m22|) - нужно выяснить эксперементальным путем, сообразить не получается Это все ИМХО, я ничего не проверял Последний раз редактировалось zamtmn, 19.10.2012 в 14:53. |
|||
![]() |
|
||||
Да, Дима, ты абсолютно прав, это вовсе не "любые" пары, а именно такие, которые подчиняются трансформации: масштаб (может быть разный по X и по Y) -> Перенос -> Поворот. Хотя на самом деле они бываю и кривыми, во-первых земля нефига ни плоская, во-вторых отсканировать\сфотографировать можно под углом, но тут уже действительно лучше пользоваться всевозможными Raster Design.
Цитата:
Всем спасибо за участи. С начало решил так: [IMG]http://i065.***********/1210/2b/7c4ebb520ff5.jpg[/IMG] ![]() Но программа иногда выдавала: Ошибка делю на 0 Из-за того, что почти всегда исходные координаты даны по углам растра, и из-за этого, часто либо ∆X, либо ∆Y равны 0. [IMG]http://i018.***********/1210/1c/12df09318f9f.jpg[/IMG] Но так оно даже проще решается ![]() Т.е. пока работает, если потом пользователи начнут, жаловаться, попробую скомбинировать оба метода. Всем спасибо ![]()
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Давно уже выложена на "Геодезисте", и ссылка есть в первом посте.
Обновленную версию уже выложил. Разномасштабной трансформации, почему-то потребовали расты привязанные градусной (широта долгота) привязкой.
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Может, но AutoCAD не умеет из растра трапеции делать
![]() Так, что радуемся тому, что есть. К новой версии я сделал приписку Цитата:
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |