2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 20:50 


23/05/16
11
Добрый вечер.
Изучая тему матричных преобразований, остановился на задаче "Изменение масштаба фигуры в 1.3 раза вдоль вектора".
Дано: точка P (x1,y1), задающая вектор относительно начала координат.
Необходимо: найти матрицу преобразования, изменяющую масштаб фигуры в 1.3 раза вдоль вектора P.
Ход моих рассуждений:
1. Матрица преобразования имеет вид:
$$\begin{bmatrix}
 a&  b \\
 c&  d \\
\end{bmatrix}$$
где коэффициенты a и d отвечают соответственно за масштабирование вдоль осей x и y, а коэффициенты с и b за сдвиг вдоль соответствующих осей.
2. Так как масштабирование фигуры ведется в 1.3 раза, то сумма приращений (относительно 1) коэффициентов a и d должна быть равна 0.3, а сами эти коэффициенты расчитываются относительно координат вектора P:

$a = 0.3 \frac{\left\lvert x1\right\rvert}{\left\lvert x1\right\rvert+\left\lvert y1\right\rvert}$
$d = 0.3 \frac{\left\lvert y1\right\rvert}{\left\lvert x1\right\rvert+\left\lvert y1\right\rvert}$

3. Остается найти коэффициенты c и b. Мы масштабируем вдоль вектора и следовательно необходимо, чтобы угол, на который производится масштабирование и сдвиг (относительно соответствующих осей) совпадал с углом между вектором P и соответствующими осями. Отсюда:

$\frac{c}{a}$ = $\frac{y1}{x1}$

$\frac{b}{d}$ = $\frac{x1}{y1}$

И остается только записать матрицу преобразования.

Не могу найти ошибку в рассуждениях. На практике преобразование также выполняется неверно. Например при масштабировании вдоль вектора (1000,1) получается матрица:
$$\begin{bmatrix}
 1.2997&  0.0002997 \\
 0.29997&  1.0003 \\
\end{bmatrix}$$

Что в итоге не изменяет некоторые точки вовсе из-за особенностей матрицы.

Помогите, пожалуйста, разобраться. Заранее благодарю.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 21:33 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
maksustoff в сообщении #1251314 писал(а):
1. Матрица преобразования имеет вид:
$$\begin{bmatrix}
a&  b \\
c&  d \\
\end{bmatrix}$$
где коэффициенты a и d отвечают соответственно за масштабирование вдоль осей x и y, а коэффициенты с и b за сдвиг вдоль соответствующих осей.

Почему это так?

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 21:57 


23/05/16
11
Brukvalub в сообщении #1251322 писал(а):
maksustoff в сообщении #1251314 писал(а):
1. Матрица преобразования имеет вид:
$$\begin{bmatrix}
a&  b \\
c&  d \\
\end{bmatrix}$$
где коэффициенты a и d отвечают соответственно за масштабирование вдоль осей x и y, а коэффициенты с и b за сдвиг вдоль соответствующих осей.

Почему это так?


Добрый вечер.
Возьмем точку (в виде вектора):
$$\begin{bmatrix}
 x && y 
\end{bmatrix}$$
Применим к ней преобразование (т.е. умножим на матрицу описанную матрицу). Получим новые координаты точки:
$$\begin{bmatrix}
 ax+yc && dy + bx 
\end{bmatrix}$$
Получаем, что коэффициент a и d описывает расширение на соответствующие величины по осям OX и OY (т.е. масштаб).
Коэффициенты с и b описывают зависимость (т.е. сдвиг на соответствующие величины). Так коэффициент c описывает сдвиг вдоль оси ОX, a коэффициент b сдвиг вдоль оси OY.
Надеюсь верно понял вопрос)

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 22:11 
Заслуженный участник


27/04/09
28128
Возможно, всё-таки следовало бы отталкиваться от линейной алгебры, а не подставлять числа просто так. Пусть ваш вектор $\mathbf p$ составляет ортогональный базис с каким-то ещё вектором $\mathbf q$. Линейный оператор $A$ можно задать, выписав его действие на элементы некоторого базиса, и для искомого $A\mathbf p = 1{,}3\mathbf p$, $A\mathbf q = \mathbf q$. Значит, в базисе $(\mathbf p.\mathbf q)$ матрицей $A$ будет $$\begin{bmatrix} 1{,}3 & 0 \\ 0 & 1 \end{bmatrix}.$$Как выразить матрицу оператора в одном базисе через матрицу оператора в другом базисе, надеюсь, вы знаете, и как найти $\mathbf q$, надеюсь, тоже. При желании это можно узнать из обычного учебника линейной алгебры типа Кострикина (Введение в алгебру, часть 2: Линейная алгебра).

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 22:17 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
maksustoff в сообщении #1251331 писал(а):
Получаем, что коэффициент a и d описывает расширение на соответствующие величины по осям OX и OY (т.е. масштаб).
Коэффициенты с и b описывают зависимость (т.е. сдвиг на соответствующие величины). Так коэффициент c описывает сдвиг вдоль оси ОX, a коэффициент b сдвиг вдоль оси OY.

Это только ваши фантазии, происходящие из нежелания читать учебники.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение27.09.2017, 22:31 


23/05/16
11
Brukvalub в сообщении #1251338 писал(а):
maksustoff в сообщении #1251331 писал(а):
Получаем, что коэффициент a и d описывает расширение на соответствующие величины по осям OX и OY (т.е. масштаб).
Коэффициенты с и b описывают зависимость (т.е. сдвиг на соответствующие величины). Так коэффициент c описывает сдвиг вдоль оси ОX, a коэффициент b сдвиг вдоль оси OY.

Это только ваши фантазии, происходящие из нежелания читать учебники.


Данные выкладки взял из лекционного материала по компьютерной графике. Видимо ошибаюсь.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение28.09.2017, 01:10 
Заслуженный участник


26/05/14
981
maksustoff в сообщении #1251341 писал(а):
Данные выкладки взял из лекционного материала по компьютерной графике. Видимо ошибаюсь.

Полагаю, что в лекционном материале речь шла матрицах размера 3 на 3.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение28.09.2017, 06:29 


23/05/16
11
slavav в сообщении #1251389 писал(а):
maksustoff в сообщении #1251341 писал(а):
Данные выкладки взял из лекционного материала по компьютерной графике. Видимо ошибаюсь.

Полагаю, что в лекционном материале речь шла матрицах размера 3 на 3.


Да, Вы правы. Я прошу прощения, моя ошибка.

arseniiv в сообщении #1251337 писал(а):
Возможно, всё-таки следовало бы отталкиваться от линейной алгебры, а не подставлять числа просто так. Пусть ваш вектор $\mathbf p$ составляет ортогональный базис с каким-то ещё вектором $\mathbf q$. Линейный оператор $A$ можно задать, выписав его действие на элементы некоторого базиса, и для искомого $A\mathbf p = 1{,}3\mathbf p$, $A\mathbf q = \mathbf q$. Значит, в базисе $(\mathbf p.\mathbf q)$ матрицей $A$ будет $$\begin{bmatrix} 1{,}3 & 0 \\ 0 & 1 \end{bmatrix}.$$Как выразить матрицу оператора в одном базисе через матрицу оператора в другом базисе, надеюсь, вы знаете, и как найти $\mathbf q$, надеюсь, тоже. При желании это можно узнать из обычного учебника линейной алгебры типа Кострикина (Введение в алгебру, часть 2: Линейная алгебра).


Спасибо большое за ответ. Как поступить в описанном мной случае я понял. Но матрица преобразования, как заметил slavav является матрицей 3 на 3 (т.е. используются однородные координаты). Как нужно поступать для построения матрицы в этом случае? Подскажите, пожалуйста.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение28.09.2017, 08:53 
Модератор


19/10/15
1196
 i  maksustoff, используйте для умножения знаки $\cdot$ или $\times$, а не звездочку. Я поправил Ваши сообщения.

 Профиль  
                  
 
 Re: Матричное преобразование масштабирования фигуры
Сообщение29.09.2017, 08:19 


23/05/16
11
Разобрался. Спасибо большое за помощь!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group