|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.03.2014, 23:11 | #1 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
3d трансформация, матрицы, повороты, масштабирование
Может кто нибудь на словах объяснить как делать правильно масштабирование относительно новых координат?
Смысл такой - есть набор точек, определяющий фигуру. Мне надо повернуть фигуру, а потом уже повернутую отмасштабировать относительно координат. Все делается через матрицы. И в этом самая загвоздка. У меня есть матрица поворота. Фигура поворачивается. Есть матрица масштабирования. Фигура масштабируется. Но! Сложить все в кучку не удается. Адекватный результат получается только, если сначала фигура масштабируется, а потом уже поворачивается. А если поменять местами матрицы во время их перемножения - получается фигня.... Мне нужно понять, чяднт... |
10.03.2014, 23:25 | #2 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
не, все нормально работает, оказыцца
Извиняюсь за беспокойство)
Прост я се придумал тестовые фигуры с выгибонами, а не просто прямоугольники, поэтому и масштабирование после поворотов кажется идиотским: |
11.03.2014, 02:39 | #3 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Не надо менять матрицы местами - умножение зависит от порядка. И результат операций тоже
|
11.03.2014, 08:22 | #4 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Практически всегда сперва делается масштабирование (Scale) исходной фигуры, потом поворот (Rotate, если до масштабирования, то коэффициенты масштабирования усилят/уменьшат и поворот, что как бэ редко является тем, чего хочется) и только потом смещение (Translate, и его поведение, если он до предыдущих шагов сделан, вообще сложнопредсказуемо).
Чтобы использовать его у Вас, насколько я могу понять логику Вашей программы, а именно - операции эти разделены по времени - необходимо при любом изменении настроек пересобирать итоговую матрицу путём перемножения S*R*T (именно в этом порядке, т.к. уже озвучено, что произведение матриц некоммутативно) и потом с её (итоговой матрицы) помощью исходную фигуру сразу размещать на холсте. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
3d трансформация прямоугольника | Smogg | Помощь студентам | 3 | 07.03.2014 00:47 |
Повороты векторов | Smogg | Помощь студентам | 3 | 29.12.2013 14:51 |
Трансформация (pascal - C++) | spinogryz_ua | Помощь студентам | 4 | 30.03.2012 23:58 |
Трансформация (Pascal, C++) | spinogryz_ua | Помощь студентам | 1 | 22.02.2012 11:06 |
Повороты картинок | yura-cat | Помощь студентам | 1 | 30.10.2008 14:28 |