Пример 2.Преобразования: Растяжение, Поворот и Сдвиг
Пусть заданы координаты трех точек
\(A = (0, 0); B=(0, 1); C=(0,3)\) Можно нарисовать треугольник
\(\overline{ABC}\),
но на экране монитора он будет выглядеть очень маленьким.
- Как его увеличить?
- А если нам надо его сместить на полотне, чтобы он выглядел более "симпатично"?
- А если изображение надо повернуть?
Для решения "задачи увеличения" достаточно координаты точки
\((x, y)\ умножить\ на\ некоторое\ число\ m\)
Для решения "задачи смещения" достаточно координаты точки
\((x, y)\ увеличить\ на\ некоторые\ числа\ a, b \)
А что делать для поворота?
Оказывается, что можно ввести две опреции для двумерных точек, которые решают данные проблемы:
- "сложение" \((x,\ y)\ +\ (a,\ b) =(x\ +\ a,\ y\ +\ a)\) - легко заметить, что это обычное "векторное сложение"
- "умножене" \((x,\ y)\ *\ (a,\ b) =(x\cdot a -\ y\cdot b,\ x\cdot b\ +\ y\cdot a)\)
Заметим, что это операции сложения и умножения "комплексных чисел", для которох выплняются правила сложения и умножения "обычных чисел"
Вычислим
\((x, y)* (m,0) = (x\cdot m - y\cdot 0, x\cdot 0 + y\cdot m) = (x\cdot m, y\cdot m)\) - значит умножение на
\((m,0)\) выполняет функцию масштабирования
Следующая программа поможет понять механизм "комплексного умножение"
Программа запрашивает два числа
\(m, n\) и строит:
- черный треугольник с точками \(A*(|m|,0), B*(|m|,0),C*(|m|,0)\)
- красный треугольник с точками \(A*(m,n), B*(m,n),C*(m,n)\)