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