- •Аннотация
- •Анатацыя
- •Реферат
- •Содержание
- •Введение
- •1 Краткие теоретические сведения
- •1.1Алгоритмы поворота изображения
- •1.2 Функция ImageRotate
- •2 Реализация вычислений
- •2.1 Функция поворота изображения
- •2.2 Использование ImageRotate
- •3 Результаты вычислений
- •3.1 Пример поворота изображения
- •3.2 Поворот изображения с помощью ImageRotate
- •Заключение
- •Список использованных источников
- •[Электрон. Ресурс – е_Библиотека ктс] Иллюстрированный самоучитель по Mathematica. #самоучитель по Mathematica/ #Оглавление.Htm
1.1Алгоритмы поворота изображения
Пусть:
O - это центр поворота,
M - некая точка исходного изображения.
Для каждой точки M нужно найти угол alpha между отрезком OM и горизонталью и длину r отрезка OM.

Рисунок 2 – Точка М исходного изображения
Теперь, чтобы повернуть изображение на угол beta, нужно каждой точке M присвоить цвет точки исходного изображения с координатами x,y, где
x = xo + r * cos(alpha + beta)
y = yo + r * sin(alpha + beta)
xo,yo - центр поворота, r - длина отрезка OM

Рисунок 3 – Образ точки M при повороте на угол beta
Важно именно каждой точке нового изображения сопоставлять точку старого изображения, а не наоборот, так как иначе некоторые точки нового изображения останутся не закрашенными.
При использовании декартовой системы координат используется следующий алгоритм поворота.
В двумерном пространстве поворот можно описать одним углом со следующей матрицей линейного преобразования в декартовой системе координат:
![]()
Положительным углам при этом соответствует вращение вектора против часовой стрелки в обычной, правосторонней системе координат, и по часовой в левосторонней системе координат.
1.2 Функция ImageRotate
В КТС Mathematica для поворота изображения используется стандартная функция ImageRotate.
ImageRotate выполняет следующие действия:
-
поворачивает изображение против часовой стрелки на 90 °.
-
поворачивает изображение так, что верхний край изображения будет на указанной стороне.
-
поворачивает изображение против часовой стрелки на угол, заданный в радианах.
-
возвращает изображение определенного размера.
Особенности функции ImageRotate:
-
Возможные спецификации по стороне: Сверху, снизу, слева, справа.
-
ImageRotate поворачивает изображение вокруг его центра.
-
ImageRotate вычисляет цвета пикселей нового изображения исходя из цветов соседних пикселей исходного изображения
-
ImageRotate позволяет сохранить или изменить фон поворачиваемого изображения.
-
По умолчанию ImageRotate автоматически выбирает наиболее подходящий алгоритм интерполяции. Этот алгоритм может быть также указан вручную.
У функции ImageRotate, возможные спецификации для размера включают в себя:
-
W - ширина выходного изображения
-
{W, H} - ширина и высота выходного изображения
-
Автоматический
-
Все
-
Полный - использование размеров исходного изображения
2 Реализация вычислений
2.1 Функция поворота изображения
Введём следующие обозначения переменных и параметров функции:
-
tfi - угол поворота в градусах, который запрашивается у пользователя
-
fi - пересчитанный угол поворота в радианах
-
ima[index][num] – исходное изображение
-
imagetemp – конечное изображение
-
xn, yn – координаты точек нового изображения
-
width – ширина нового изображения
-
height – высота нового изображения
-
trgb – цвет пикселя нового изображения

Рисунок 3 – Фрагмент кода функции поворота изображения
2.2 Использование ImageRotate
3 Результаты вычислений
3.1 Пример поворота изображения
Рассмотрим пример работы функции поворота на следующем изображении:

Рисунок 4 – Исходное изображение
Сначала откроем изображение, выбрав Файл->Открыть:

Рисунок 5 – Файл->Открыть
Укажем местоположение файла:

Рисунок 6 – Указание места размещения файла

Рисунок 7 – Общий интерфейс программы
Далее необходимо выполнить следующие команды: Действие->Поворот.

Рисунок 8 – Действие->Поворот
В появившемся диалоговом меню необходимо ввести требуемый угол поворота в градусах против часовой стрелки и нажать OK:

Рисунок 9 – Диалоговое окно, запрашивающее величину угла поворота
Программа выполнит поворот изображения и выдаст его на рабочий экран:

Рисунок 10 – Итоговое изображение
Для сохранения изображения нужно выполнить последовательность команд Файл->Сохранить или Файл->Сохранить как. В первом случае файл с исходным изображением будет обновлён новым, а во втором будет создан новый отдельный файл с заданным именем:

Рисунок 11 – Файл->Сохранить как
