Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив1 / doc92 / Лаба 1 (2).doc
Скачиваний:
33
Добавлен:
03.08.2013
Размер:
265.73 Кб
Скачать

Алгоритм выполнения программы

Данная программа написана на языке С++. Ввод данных осуществляется через командную строку.

Коэффициенты масштабирования, угол поворота и новые координаты записаны в коде согласно

варианту.

Описание с начала работы программы:

1) Этап 1: подключение библиотек, запуск графического режима, объявление переменных, рисование в окне координатной оси с обозначенными на ней значениями по Х и по Y.

#include <graphics.h>

#include <stdio.h>

#include <string>

#include <iostream.h>

#include <math.h>

#include <stdlib.h>

void setka ()

{

int i;

setcolor(COLOR(71,71,71));

for(i = 0; i < 800; i = i + 10 ) {

line(10+i, 10, 10+i, 590);

line(10, 10+i, 790, 10+i);

}

setcolor(COLOR(151,151,151));

line(10,300,790,300);

line(400,10,400,590);

line(790,300,780,305);

line(790,300,780,295);

line(400,10,395,20);

line(400,10,405,20);

outtextxy(380, 3, "y");

outtextxy(780, 307, "x");

outtextxy(385, 305, "0");

}

2) Этап 2: Получение данных о начальной точке фигуры (квадрат). Начальные координаты указывают нижний левый угол.

void kvadrat(int x,int y,int w)

{

x=x+400;

y=300-y;

setcolor(COLOR(255,100,0));

line (x,y,x,y-w);

line (x,y-w,x+w,y-w);

line (x+w,y-w,x+w,y);

line (x+w,y,x,y);

printf("Квадрат успешно нарисован! \n");

}

3) Этап3: Выбор пользователем типа преобразования над исходной фигурой (перенос, масштабирование или поворот).

4) Этап4: Рисование преобразованной фигуры новым цветом в координатной плоскости.

5) Этап5: Выбор пользователем дальнейших действий: продолжения ГП или же выход из программы. При продолжении ГП осуществляется переход к пункту 3.

6) Этап6: Выход из графического режима после нажатия на любую клавишу. Завершение работы программы.

7) Этап7: Конец. Завершение работы программы.

Процедура выполняющая ГП:

1) Получение данных о типе преобразования (только одно из трех).

2) В соответствии с выбранным типом ГП получение данных для переноса – перемещение по осям X и Y, для масштабирования – коэффициент масшт. по осям X и Y, для поворота – угол поворота фигуры относительно центра этой фигуры.

3) Выполнение расчетов для определения новых координат вершин фигуры

после преобразования. Для переноса – сложение векторов, осуществляется, в связи с использованием стандартной декартовой системы координат сложением отдельно по осям (X иY).

Аналогично и для масштабирования – расчет идет умножением текущей координаты каждой вершины на коэффициент.

Алгоритм для операции поворота

А) Определяется, находится ли центр фигуры в начале координатной плоскости, если нет, то осуществляется перенос центра фигуры в точку (0,0) с запоминанием расстояние такого переноса (для обратного преобразования).

Б) Расчет новых координат для каждой вершины по указанным формулам (реализуемое умножением матриц, представленное в разложенном виде)

В) Перенос фигуры после порота в начальную точку.

После выполнения необходимых процедур ГП данные о координатах передаются в функцию рисования фигуры, где она выводится на экран (спобом проведения линий от одной точки к другой).

Вывод

В результате проделанной работы мы ознакомились с методами геометрических преобразований графических объектов, вспомнили, что такое Си++, узнали как работать с графикой, произвели базовые преобразования с объектами.

*

10

Соседние файлы в папке doc92