Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Вывод матрицы перемещения

Запись от 8Observer8 размещена 03.02.2017 в 13:29
Показов 2760 Комментарии 0

Содержание блога

Цитата Сообщение от dashaLuna Посмотреть сообщение
1.задано точку (1, 2). найти матрицу преобразования, переводит заданную точку в точку (1, -2)
2.задано точку (1, 3). найти матрицу преобразования, переводит заданную точку в точку (-1, 3)
3.записать матрицу преобразования, которая будет отображать любую точку симметрично относительно оси Х
4.записать матрицу преобразования, которая будет отображать любую точку симметрично относительно оси В
Все 4 задания об одном и том же: о переносе точки. Задания 1 и 3 - это перенос точки относительно оси Y. Задания 2 и 4 - это перенос точки относительно оси X. Причём 1 и 2 - перенос точки с указанными координатами, а 3 и 4 - перенос точки в обобщённом виде.

От вас требуется вывод матрицы переноса, что я опишу ниже. Если вы не поймёте как выводится матрица переноса, то подставлять в уже готовую матрицу - это бестолковая затея. В математике нужно понимать, что откуда берётся, то есть выводится, тогда задачи решены.

Вывод матрицы перемещения

И так. У нас есть точка (x, y). Нам нужно получить (x', y'). Уравнения записываются так:

Code
1
2
x' = x + Tx
y' = y + Ty
, где Tx и Ty - это перемещения по оси X и по оси Y соответственно (см. рисунок по спойлером ниже)

Кликните здесь для просмотра всего текста


Обозначим уравнения выше единицей в скобках (1)

В матричном виде уравнения (1) записываются так в обобщённом виде:

Code
1
2
|х'| =  |a b| |x|
|y'|    |c d| |y|
Перепишем в виде уранений, то есть раскроем умножение матрицы на вектор:

Code
1
2
x' = a * x + b * y
y' = c * x + d * y
Если уравнение выше сопоставить с (1), то нам не хватает размера матрицы для Tx и Ty, поэтому добавить размерность к векторам и матрице:

(2)
Code
1
2
3
|х'|   |a b с| |x|
|y'| = |d e f| |y|
|1 |   |g h k| |1|
Перепишем в виде уравнений:
Code
1
2
3
x' = a*x + b*y + c*1
y' = d*x + e*y + f*1
1 =  g*x + h*y + k*1
Для того, чтобы из уравнений выше получить уравнений (1) коэффициенты должны быть следующими:
a = 1, b = 0, c = Tx
d = 0, e = 1, c = Ty
g = 0, h = 0, k = 1 (тут должно просто выполняться равенство 1=1)

Подставим значения коэффициентов в уравнение (2)

(3):
Code
1
2
3
|х'|   |1 0 Tx| |x|
|y'| = |0 1 Ty| |y|
|1 |   |0 0 1 | |1|
Мы получили матрицу перемещения. Вот она:
Code
1
2
3
|1 0 Tx|
|0 1 Ty|
|0 0 1 |
Оформлю решение всех 4 задач.

(x, y) -> (x', y')

x' = x + Tx
y' = y + Ty

1) (1, 2) -> (1, -2)

1 = 1 + Tx
-2 = 2 + Ty

Tx = 1 - 1 = 0
Ty = -2 + (-2) = -4

Ответ:
Code
1
2
3
|1 0  0|
|0 1 -4|
|0 0  1|
2) (1, 3) -> (-1, 3)

-1 = 1 + Tx
3 = 3 + Ty

Tx = -1 + (-1) = -2
Ty = 3 - 3 = 0

Ответ:
Code
1
2
3
|1 0  0  |
|0 1  -2y|
|0 0  1  |
3) Симметрия относительно оси X

x' = x
y' = -y

x' = x + Tx
y' = y + Ty

x = x + Tx
-y = y + Ty

Tx = x - x = 0
Ty = -y + (-y) = -2y

Ответ:
Code
1
2
3
|1 0  0 |
|0 1 -2y|
|0 0  1 |
4) Симметрия относительно оси Y

x' = -x
y' = y

x' = x + Tx
y' = y + Ty

-x = x + Tx
y = y + Ty

Tx = -x + (-x) = -2x
Ty = y - y = 0

Ответ:
Code
1
2
3
|1 0  -2x|
|0 1  0  |
|0 0  1  |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru