Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций -=Вычислительная техника и прог...docx
Скачиваний:
11
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

5.1.7. Преобразование координат и анимационные эффекты

Преобразование координат используют при изменении масштаба изображения, переносе и повороте изображений. Рассмотрим линейные преобразования координат двумерных объектов. Такие преобразования выполняются с помощью соответствующих формул.

Предположим, что в декартовой системе координат задана плоская геометрическая фигура и — координаты одной из её точек. Пусть координаты этой же точки после преобразования. Тогда параллельное перемещение фигуры на пикселей вдоль оси 0x и на пикселей вдоль оси 0y можно выполнить с помощью формул:

;

.

Растяжение фигуры в и раз выполняется на основе соотношений

;

.

Поворот фигуры вокруг начала координат на угол :

;

.

В ходе разработки анимационных программ необходимо создавать эффект перемещения графических объектов. Простейший способ реализации этого эффекта заключается в том, чтобы нарисовать объект соответствующим цветом, а затем скрыть его путем повторного перерисовывания цветом фона. Затем изобразить объект в новых координатах. С целью повышения быстродействия программы при обработке изображений больших размеров их сначала копируют в оперативную память, а затем выводят на экран их копии в требуемых координатах. Для этого используют функции

void getimage (int x1, int y1, int x2, int y2, void far *bitmap) ;

void putimage (int x, int y, void far *bitmap, int op).

Функция getimage сохраняет в памяти изображение, очерченное прямоугольником, левым верхним углом которого является точка (x1 , y1), а правым нижним — точка (x2 , y2). Изображение сохраняется в памяти по указателю bitmap. Объём памяти, необходимый для хранения изображения, можно определить с помощью функции

imagesize (int x1, int y1, int x2, int y2) ;

Возвращаемое ею значение можно непосредственно передавать одной из функций для выделения оперативной памяти.

Функция putimage восстанавливает изображение на экране в координатах левого верхнего угла (x , y). Параметр op, принимающий возможные значения от 0 до 4, обозначает способ взаимодействия новой копии изображения с изображением, которое уже имеется на экране. В простейшем случае, когда op=0, происходит простое копирование изображения из памяти. Значение op=1 позволяет выполнять побитовую операцию «исключающего или» над содержимым оперативной памяти и видеобуфера для каждого пикселя. Это дает возможность удалить изображение в тех точках экрана, где помещен его оригинал. Если эту операцию выполнить дважды для одних и тех же координат экрана, то изображение не изменится. Это весьма полезно при программировании движущихся по экрану объектов.

Для того, чтобы движущийся по экрану объект отображался в каждой позиции определенное заданное время необходимо предусмотреть приостановление выполнения программы после вывода объекта на экран. Выполнить приостановку программы можно с помощью следующей функции

delay (unsigned int milliseconds) ;

Функция delay приостанавливает выполнение программы на время, определяемое переменной milliseconds, заданное в миллисекундах. Для использования функции delay необходимо подключить библиотеку <dos.h>.

6. Операции над строками и файлами в языке С/С++

6.1. Функции ввода и вывод

Функции ввода и вывода содержатся в библиотеках, как показано на рис. 6.1.

Рисунок 6.1 — Функции ввода и вывода в языках С и С++

6.1.1. Ввод и вывод средствами С

6.1.1.1. Функция getchar()

Формат функции:

int getchar(void) ;

Функция возвращает (передаёт, считывает) в программу символ в форме int из стандартного ввода (клавиатуры). Если символ не может быть прочитан, то функция возвращает значение 0x E0F.

6.1.1.2. Функция putchar()

Формат функции:

int putchar(int ch) ;

Функция выводит на стандартное устройство вывода (на экран монитора) символ ch. Если вывод символа был успешным, то функция передает в программу значение ch, в противном случае возвращается 0x E0F.

Пример:

#include <stdio.h>

void main

{ /* ====== Объявление переменных ====== */

int a; // – считываемый / передаваемый символ

/*====== Начало выполнения программы ====== */

a=getchar( ) ; // – считывание символа с клавиатуры

putchar (a) ; // – вывод символа на экран

/*====== Завершение программы ====== */

return ;

}