Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2014, 19:44   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию 3d трансформация прямоугольника

В общем, известны положения точек углов начального и конечного положения.
Как узнать, рассчитать способ преобразования из первого во второе?

И, пожалуйста, не отсылайте к первоисточникам. Я читал про матрицы, но мало что понял конкретного.



Зы. куда здесь на сервер грузить фотки, чтоб не показывалось их две штуки в сообщении - одна как в теле сообщение, а другая как приложенный файл?
Изображения
Тип файла: jpg 3d-rect.jpg (22.0 Кб, 74 просмотров)

Последний раз редактировалось Smogg; 06.03.2014 в 19:46.
Smogg вне форума Ответить с цитированием
Старый 06.03.2014, 20:04   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Ну ручаюсь за ответ http://pmg.org.ru/basic3d/index.html
Цитата:
Зы. куда здесь на сервер грузить фотки, чтоб не показывалось их две штуки в сообщении - одна как в теле сообщение, а другая как приложенный файл?
Не пихайте ее в тело сообщения. Сделайте текстовую ссылку на вложение.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 06.03.2014, 20:48   #3
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
Сообщение от _PROGRAMM_ Посмотреть сообщение
Ну ручаюсь за ответ http://pmg.org.ru/basic3d/index.html
Не совсем. Мне нужно понять что-то типа этого :
Цитата:
Проще всего сначала построить матрицу преобразования из квадрата в 4-угольник, а потом взять обратную.
Точки плоскости будем записывать, как принято в компьютерной графике, как строки: (x y 1) для собственной точки и (x y 0) для несобственной. Строка (c* c*y c) обозначает ту же точку, что и (x y 1) (при с!=0).
Пусть матрица преобразования M=((a11 a12 a13) (a21 a22 a23) (a31 a32 a33)). Точка (u,v) квадрата переходит в точку (x,y) четырёхугольника, если для некоторого с!=0 выполняется
(u v 1)*M=(c*x c*y c).
Сначала возьмём вершину (0,0). Получим
a31=c1*x1, a32=c1*y1, a33=c1. Видно, что мы можем взять a33=c1=1 (матрица тоже определена с точностью до пропорциональности), и у нас есть последняя строчка:
a31=x1, a32=y1, a33=1.
Теперь подставим остальные вершины. Получим 9 уравнений:
a11+x1=c2*x2
a12+y1=c2*y2
a13+1=c2
a11+a21+x1=c3*x3
a12+a22+y1=c3*y3
a13+a23+1=c3
a21+x1=c4*x4
a22+y1=c4*y4
a23+1=c4
Это квадратная система из 9 линейных уравнений. Её легко решить методом Гаусса. А можно вручную исключить все переменные, кроме c2,c3,c4, получить систему из 3 уравнений, решить каким-нибудь методом Крамера (через определители) и восстановить a11,a12,...,a23.
Потом уже посчитать матрицу, обратную к построенной. Можно тоже через определители.

© https://toster.ru/q/56024
1) Почему "Проще всего сначала построить матрицу преобразования из квадрата в 4-угольник, а потом взять обратную."? Значит ли это, что умножая вектор точки квадрата на обратную получим точку четырехугольника, а умножая вектор точки четырехугольника на "прямую" матрицу (которую находим первой) получим точку квадрата?

2) Почему "Строка (c* c*y c) обозначает ту же точку, что и (x y 1) (при с!=0)."?
(c* c*y c) - здесь опечатка и должно быть (c*х c*y c)?
Smogg вне форума Ответить с цитированием
Старый 07.03.2014, 00:47   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

1) Проще думаю потому, что в вершинах известные и простые числа (0 и 1).
x*M=x'
x*M*M^(-1)=x'*M^(-1)
x=x'*M^(-1)
2) Опечатка.

В Вашем случае будем иметь XM=X', где X и X' - матрицы из координат вершин
X^(-1)*X*M=X^(-1)*X'
M=X^(-1)*X'

PS Могу ошибаться
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трансформация XML m9yt C# (си шарп) 4 17.05.2013 14:28
Трансформация изображения Тоба Общие вопросы Delphi 6 06.07.2012 19:26
Трансформация (Pascal, C++) spinogryz_ua Помощь студентам 1 22.02.2012 11:06
Трансформация изображения свр Общие вопросы по Java, Java SE, Kotlin 0 24.08.2010 14:23
Трансформация изображений Артэс Свободное общение 27 14.12.2009 10:27