|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
алгоритм трансформации множества точек
архитектор
Москва
Регистрация: 07.07.2007
Сообщений: 664
|
||
Просмотров: 9595
|
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
рыть нужно в этом направлении
http://www.google.ru/search?source=i...80%D0%B0%D0%BD но рыть придется долго, тебе на каком языке нужно? |
|||
![]() |
|
||||
baaba, объясни как можно придумать формулу или алгоритм если у тебя на рисунке точки совершенно хаотично переходят в другие. Вот когда определишься (хотя-бы на словах) как одна точка переходит в другую, тогда и поговорим. А пока это выглядит так "Хочу то не знаю что".
|
||||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
В общем случае задача не решается, вот похожая теа:
http://forum.dwg.ru/showthread.php?t=63148 решилась за счет наличия перспективных искажений, копать нужно в томже направлении |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Ищи алгоритм афинного преобразования. Применяется для множества точек, когда может быть одновременно и перемещение, и поворот (причем разные для различных точек).
Такие преобразования выполняются в геоинформационных системах. Можно вообще из разных систем координат, в т.ч. не прямоугольных. При афинных преобразованиях задается некоторое количество (небольшое) точек с исходными координатами и, для них же - новые координаты. А трансформированы в результате могут быть координаты сотен тысяч точек. Естественно, при этом будет какая-то погрешность, допустимость которой надо знать. |
|||
![]() |
|
||||
Цитата:
A(1,1) B(2,5) C(5,3). И четвёртая точка D - (4,4). После трансформации группы получаем новые значения: A(8.2,3.7) B(8.7,7.1) C(11.4,6.9) Вопрос: каково значение D? Ответ: (10.4,7.6), получен опытным путём (см вложения), значения округлены до одной десятой. Характер трансформации задаётся тремя точками для всего множества точек. Если задавать двумя точками то не будет наклона и разных коэффициентов сжатия, будет просто перенос и поворот группы точек. На рисунке я показал оси координат, что бы было яснее. ShaggyDoc, спасибо за наводку! Буду разбираться. |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Цитата:
По схеме поста 8, совершенно очевидно, что преобразование аффинное (одно для всех точек).
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Было-бы намного интереснее если ShaggyDoc объяснил почему метод Transform не поддерживает разные масштабы и наклон. Казалось, бы перемножай себе матрицу трансформирования на координаты....
Мне мотивация автодеска не понятна.
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Цитата:
![]() Этот метод все поддерживает, что можно впихнуть в матрицу, т.е сдвиг, масштабирование по любой оси или сразу по нескольким, поворот в 3д. Причем, никто не мешает брать последовательность матриц и вычислять результирующую. ps. именно матрицы, мне помогли делать вычисления луча, после многократного отражения от различных поверхностей в пространстве.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Цитата:
Если отыщу своего "пациента" диагноз сможешь поставить?
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ Последний раз редактировалось Елпанов Евгений, 21.04.2011 в 11:16. |
||||
![]() |
|
||||
Цитата:
Но если не веришь, создай по отдельности три матрицы - масштабирование, сдвиг и поворот, а потом перемножь их, если не получится - давай код в студию, тебе обязательно подскажут, где ошибка... ps. вижу твою настойчивость, хочу уточнить, что именно у тебя не работает в автокаде с матрицами? Может я чего то не понял. По сути, автодеск сам использует этот метод для всех преобразований между различными пространствами, например между пространством блока и пространством модели. А блок может иметь масштаб разный по осям, повернутый в пространстве и не лежащий в точке начала координат, да еще в нем могут быть другие блоки итд... pps. Еще разок посмотрел код, в действительности в коде идет вращение, равное масштабирование по всем осям и сдвиг от начала координат в указанную точку! Посмотри переменные X и Y передают смещение по осям. Если тебе необходимо неравное масштабирование, то в матрицу передается переменная S с масштабом, т.е ты можешь в каждую строку матрицы передать разный масштабный коэффициент...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ Последний раз редактировалось Елпанов Евгений, 21.04.2011 в 11:43. |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
1. В лиспе я ноль, поэтому твой код могу понять лишь весьма поверхностно.
2. Мой код на вба. На работе его я не нашел. Любая комбинация поворотов, перемещений и равного масштабирования работает. Стоит изменить отношение масштабов или сдвига (не перемещения!) акад ругается... и я это дело забросил. Мне такое редко нужно. Сейчас делаю так: акад -> ыксель -> акад , гемор,сам понимаешь, еще тот...
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Сергей Дубина, В моем коде, все трансформации сразу прописаны в одну матрицу, поэтому она не очень наглядна. Попробуй сделать на вба три матрицы и перемножить их, а потом уже применить. Обязательно проверь, что получится после перемножения - может у тебя в этом месте ошибка.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны. /Сунь Цзы/ |
||||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Из математики очевидно что операции с матрицей трансформации при любых коэффициентах (кроме переполнения, а это не тот случай т.к. коэффициенты были достаточно малыми) не должны приводить к ошибке, если последняя строка в ней равна (0 0 0 1).
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
|
||||
Регистрация: 06.04.2009
Сообщений: 702
|
Задан квадрат:
1,1 1,2 2,2 2,1 Матрица трансформации (как видите "криминала" в ней нет) 5 3 0 0 1 2 0 0 0 0 1 0 0 0 0 1 Результат должен быть таким: (разномасштабирование+поворот+сдвиг) 3,5 4,7 6,10 5,8 Графически это продемонстрировано во вложении. функция Transform из AutoCAD в таких случаях возвращает ошибку. Проверьте может у кого Transform нормально пашет?
__________________
КазнитьØнельзяØпомиловать:eek: |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Импорт координат точек из файла съемки тахеометра Trimble M3 в AutoCAD | Red Nova | Программирование | 33 | 17.05.2011 16:46 |
Объединение множества точек | 666 | AutoCAD | 7 | 12.03.2010 02:16 |
Алгоритм сортировки точек | _Andre_ | Программирование | 6 | 08.06.2006 12:39 |
Нужна помощь! Полилиния с равными интервалами опорных точек. | pffafer | AutoCAD | 8 | 14.03.2005 21:24 |