Анимация вращения квадрата
Разработка компьютерной программы, реализующей компьютерную анимацию вращения квадрата средствами программы Code::Blocks. Технические возможности запуска анимации и ее остановки. Использования компьютерной программы "анимация вращения квадрата".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | отчет по практике |
Язык | русский |
Дата добавления | 02.12.2018 |
Размер файла | 199,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧЕРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
“ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИТЕТ” (ГОУВПО “ВГТУ”)
ИНСТИТУТ РАДИОТЕХНИКИ И ЭЛЕКТРОНИКИ
КАФЕДРА РАДИОТЕХНИКИ
СПЕЦИАЛЬНОСТЬ РАДИОТЕХНИКА
ОТЧЕТ ПО КУРСОВОЙ РАБОТЕ
ПО ДИСЦИПЛИНЕ: “ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ”
ПО ТЕМЕ: “АНИМАЦИЯ ВРАЩЕНИЯ КВАДРАТА”
Выполнил:
Горшков Д.В., РТ-151
Проверил:
ст. преподаватель Руднев П.Е.
2016
Содержание
Введение
Техническое задание
Блок схема программы
Пример работы
Заключение
Список используемой литературы
Приложение
Введение
Курсовая работа посвящена разработке компьютерной анимации, средствами программы Code::Blocks - свободная кроссплатформенная среда разработки программного обеспечения, поддерживающая языки программирования C, C++, D, Fortran.
Техническое задание
Средствами программы Code::Blocks разработать компьютерную программу, реализующую компьютерную анимацию вращения квадрата
Компьютерная анимация - последовательный показ (слайд-шоу) заранее подготовленных графических файлов, а также компьютерная имитация движения с помощью изменения (и перерисовки) формы объектов или показа последовательных изображений с фазами движения.
Блок-схема программы
Пример работы программы
При запуске программы, как показано на рисунке 1, появляются два окна, в одном из них будет происходить анимация, а в другом показаны инструкции для управления параметрами анимации.
Рисунок 1
Клавиши <Z> и <X> предназначены для изменения длин сторон квадрата. Как показано на рисунке 2, при зажатии клавиши <X> стороны квадрата увеличились до максимальной длины.
Рисунок 2
Клавиши <UP> и <DOWN> предназначены соответственно для увеличения и уменьшения скорости анимации, а клавиши <LEFT> и <RIGHT> предназначены для изменения направления вращения квадрата. На рисунке 3 показано как изменились значения скорости и направление вращения после нажатий клавиши <UP> и клавиши <LEFT>.
Рисунок 3
Клавиши <E> и <ПРОБЕЛ> предназначены для запуска анимации и ее остановки соответственно. На рисунке 4 показано измененное положение квадрата после запуска анимации по нажатию клавиши <E>.
Рисунок 4
Заключение
анимация компьютерный программа квадрат
Итогом курсовой работы стала компьютерная программа «Анимация вращения квадрата», разработанная средствами программы Code::Blocks.
Список используемой литературы
1. Ю.Э. Корчагин / Учебное пособие / ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ С И С++: ЛАБОРАТОРНЫЙ ПРАКТИКУМ.
2. Герберт Шилдт. С++: руководство для начинающих, 2-е издание. Издательский дом “Вильямс”, 2005. 672 с.
Приложение
#include <iostream> // библиотека ввода вывода
#include <graphics.h> // библиотека графики
#include <cmath> // библиотека математических функций
#include <cstdlib> /* библиотека для работы с системой, в данном случае для работы функции Sleep */
#include <locale> /* библиотека локалей для использования русского языка в консоли */
#include <conio.h> // для распознавания нажатий
#include <stdio.h> // для форматирования чисел в символы
using namespace std; // объявление пространства имен std
void label(double st,int U,bool Vr) /* объявление функции отображающей длину стороны, скорость и направление движения */
{
char S[10]; // символьный массив на 10 символов
outtextxy(510,10,"сторона:"); // печатание текста в заданных координатах
outtextxy(495,50,"вращение:");
sprintf(S, "%.1f",st); /* форматирование числа длины стороны в символьную строку */
outtextxy(570,10,S);// st
outtextxy(505,30,"скорость:");
outtextxy(570,30," %");
sprintf(S, "%d ",U); // скорость
outtextxy(570,30,S); // U
if(!Vr){
outtextxy(570,50,"->");} // направление
if(Vr){outtextxy(570,50,"<-");} // Vr
}
int main() // основная функция main()
{
setlocale(LC_CTYPE,"rus"); /* установка русской локали (русский язык в консоли) */
double x1,x2,y1,y2,x3,y3,x4,y4; /* инициализация переменных для хранения координат четырех точек */
int gd, gm; // инициализация графического режима
detectgraph(&gd,&gm);
initgraph(&gd,&gm,"");
setbkcolor(WHITE); // установка цвета фона белым
cleardevice(); // очистка экрана
setcolor(GREEN); /* устанавливаем зеленый цвет для всех отображаемых данных в графическом режиме */
setlinestyle(0,0,3); // задаем стиль кисти
int X0=getmaxx()/2; // инициализация переменной - центральной точки Х
int Y0=getmaxy()/2; // то же самое, что и выше только для Y
double ed = 30; // инициализация переменной равной единичному отрезку
double R,st = 5; // радиус вращения точек и стороны квадрата
double Pi = 2*asin(1); // переменная для числа Пи
double delta = 0.05; // шаг, на который будет изменяться угол альфа
R = sqrt(2*st*st)/2; /* начальные нахождения радиуса по стороне (теорема Пифагора) */
double alpha = 0; // угол альфа
bool Vr = false; // переменная, отвечающая за направление вращения
int U = 50; // скорость
x1 = R*cos(alpha+Pi*0.25);y1 = R*sin(alpha+Pi*0.25); /* начальные задания переменных координат */
x2 = R*cos(alpha+Pi*0.75);y2 = R*sin(alpha+Pi*0.75);
x3 = R*cos(alpha+Pi*1.25);y3 = R*sin(alpha+Pi*1.25);
x4 = R*cos(alpha+Pi*1.75);y4 = R*sin(alpha+Pi*1.75);
line(X0+ed*x1,Y0+ed*y1,X0+ed*x2,Y0+ed*y2); /* и начальные построения квадрата */
line(X0+ed*x2,Y0+ed*y2,X0+ed*x3,Y0+ed*y3);
line(X0+ed*x3,Y0+ed*y3,X0+ed*x4,Y0+ed*y4);
line(X0+ed*x4,Y0+ed*y4,X0+ed*x1,Y0+ed*y1);
label(st,U,Vr); /* лейбл со значениями длин сторон, скорости и направления вращения */
wat: // метка начала
system("cls"); // очистка консоли
//
cout << " *************************** \n";
cout << " * * \n";
cout << " * Анимация квадрата * \n";
cout << " * * \n";
cout << " *************************** \n"; /* для красоты отображения в консоли */
//
cout << "\nНажмите <E> чтобы запустить анимацию,"
<<"\n клавиши <Z> и <X> чтобы менять длины сторон квадрата,"
<<"\n стрелками вверх и вниз задавайте скорость,"
<<"\n стрелками <влево> и <вправо> задавайте направление вращения"
<<"\n <ESC> чтобы выйти из программы."; /* инструкции, выводимые в консоли */
for(;;) // бесконечный цикл, в котором считываются нажатия клавиш
{
if (GetAsyncKeyState(0x45)) {_getch();break;} /* при нажатии клавиши <E> запускает анимацию */
if (GetAsyncKeyState(0x1B)) {closegraph();return 0;} /* если нажата клавиша <ESC> выходит из программы */
if (GetAsyncKeyState(90)) {if(st>1.1)st-=0.1; /* при нажатии клавиши <Z> уменьшает сторону квадрата */
R = sqrt(2*st*st)/2;
cleardevice(); // очистка графического окна
x1 = R*cos(alpha+Pi*0.25);y1 = R*sin(alpha+Pi*0.25); /* перезадание переменных отвечающих за координаты */
x2 = R*cos(alpha+Pi*0.75);y2 = R*sin(alpha+Pi*0.75);
x3 = R*cos(alpha+Pi*1.25);y3 = R*sin(alpha+Pi*1.25);
x4 = R*cos(alpha+Pi*1.75);y4 = R*sin(alpha+Pi*1.75);
line(X0+ed*x1,Y0+ed*y1,X0+ed*x2,Y0+ed*y2);
line(X0+ed*x2,Y0+ed*y2,X0+ed*x3,Y0+ed*y3);
line(X0+ed*x3,Y0+ed*y3,X0+ed*x4,Y0+ed*y4);
line(X0+ed*x4,Y0+ed*y4,X0+ed*x1,Y0+ed*y1);
label(st,U,Vr); /* и соответственно построение самого квадрата в реальном времени */
} // клавиша <Z>
if (GetAsyncKeyState(0x58)) {if(st<9.9)st+=0.1; /* при нажатии клавиши <X> увеличивает сторону квадрата */
R = sqrt(2*st*st)/2;
cleardevice();
x1 = R*cos(alpha+Pi*0.25);y1 = R*sin(alpha+Pi*0.25);
x2 = R*cos(alpha+Pi*0.75);y2 = R*sin(alpha+Pi*0.75);
x3 = R*cos(alpha+Pi*1.25);y3 = R*sin(alpha+Pi*1.25);
x4 = R*cos(alpha+Pi*1.75);y4 = R*sin(alpha+Pi*1.75);
line(X0+ed*x1,Y0+ed*y1,X0+ed*x2,Y0+ed*y2);
line(X0+ed*x2,Y0+ed*y2,X0+ed*x3,Y0+ed*y3);
line(X0+ed*x3,Y0+ed*y3,X0+ed*x4,Y0+ed*y4);
line(X0+ed*x4,Y0+ed*y4,X0+ed*x1,Y0+ed*y1);
label(st,U,Vr);
} // клавиша <X>
if (GetAsyncKeyState(0x25)) {Vr = true;label(st,U,Vr);} /* <- при нажатии клавиши <LEFT> меняет переменную, отвечающую за направление (для вращения в левую сторону) */
if (GetAsyncKeyState(0x27)) {Vr = false;label(st,U,Vr);} /* -> при нажатии <RIGHT> меняет направление на правую сторону */
if (GetAsyncKeyState(0x26)) {if(U<100)U++; /* увеличивает скорость при нажатии на <UP> */
label(st,U,Vr);} // клавиша <UP>
if (GetAsyncKeyState(40)) {if(U>1)U--; /* и соответственно уменьшает скорость при нажатии на <DOWN> */
label(st,U,Vr);} // клавиша <DOWN>
Sleep(50); // задержка в 50 миллисекунд чтобы значения изменялись плавнее
}
system("cls");
//
cout << " *************************** \n";
cout << " * * \n";
cout << " * Анимация квадрата * \n";
cout << " * * \n";
cout << " *************************** \n";
// для красоты
//
cout << "Нажмите <ПРОБЕЛ> чтобы остановить анимацию,"
<<"\nклавишами <вверх> и <вниз> меняйте скорость,"
<<"\nа также клавишами <влево> и <вправо> задавайте направление вращения."; // инструкции выводимые в консоль во время анимации
cout << "\n\nДля более точной настройки длины сторон и скорости нажмите <ПРОБЕЛ> для паузы и измените необходимые параметры.";
for(;;) /* бесконечный цикл в котором изменения значений происходит по нажатиям клавиш во время анимации */
{
cleardevice(); /* очищение графического окна для последующего построения в нем графиков */
x1 = R*cos(alpha+Pi*0.25);y1 = R*sin(alpha+Pi*0.25);
x2 = R*cos(alpha+Pi*0.75);y2 = R*sin(alpha+Pi*0.75);
x3 = R*cos(alpha+Pi*1.25);y3 = R*sin(alpha+Pi*1.25);
x4 = R*cos(alpha+Pi*1.75);y4 = R*sin(alpha+Pi*1.75);
//
line(X0+ed*x1,Y0+ed*y1,X0+ed*x2,Y0+ed*y2);
line(X0+ed*x2,Y0+ed*y2,X0+ed*x3,Y0+ed*y3);
line(X0+ed*x3,Y0+ed*y3,X0+ed*x4,Y0+ed*y4);
line(X0+ed*x4,Y0+ed*y4,X0+ed*x1,Y0+ed*y1);
label(st,U,Vr);
if(!Vr){alpha+=delta;} // проверка на сторону вращения
if(Vr){alpha-=delta;}
if (GetAsyncKeyState(0x1B)) {closegraph();return 0;} /* <ESC> - выход из программы */
if (GetAsyncKeyState(0x25)) {Vr = true;} /* <LEFT> - изменения стороны вращения против часовой стрелки */
if (GetAsyncKeyState(0x27)) {Vr = false;} /* <RIGHT> - изменение стороны вращения по часовой стрелке */
if (GetAsyncKeyState(0x26)) {if(U<100)U++;} // <UP> - увеличение скорости
if (GetAsyncKeyState(40)) {if(U>1)U--;} // <DOWN> - уменьшения скорости
if (GetAsyncKeyState(90)) {if(st>1.1)st-=0.1;} /* <Z> - уменьшения длин сторон квадрата */
if (GetAsyncKeyState(0x58)) {if(st<9.9)st+=0.1;} /* <X> - увеличение длин сторон квадрата */
if (GetAsyncKeyState(0x20)) { _getch(); break;} // <ПРОБЕЛ> - пауза
R = sqrt(2*st*st)/2;
Sleep(500/U); /* задержка между построениями квадрата,зависящая от скорости */
}
goto wat; // возвращение на метку начала
}
Размещено на Allbest.ru
...Подобные документы
Описание авторской идеи анимации, использования базовых команд и конструкций. Процесса проектирования программы. Описание алгоритма разработанной программы. Последовательность создания анимации. Листинг программы и скриншот рисунка по программе.
курсовая работа [911,5 K], добавлен 20.05.2013Компьютерная графика - область информатики, занимающаяся проблемами получения различных изображений. Виды компьютерной графики: растровая, векторная, фрактальная. Программы для создания компьютерной анимации, область применения, форматы хранения.
реферат [29,1 K], добавлен 16.03.2010Программы для создания 3D моделей, их возможности: blender, 3DsMax. Скелетная анимация или Риггинг. Ragdoll, motioncapture, нейронные сети. Сущность термина "тряпичная кукла". Основное преимущество ragdoll-анимации перед традиционной. Анимация, фреймы.
реферат [8,5 M], добавлен 21.02.2022Особенность разработки алгоритмов для базы данных "Поэты". Анализ реализации анимации с помощью многофункциональной кроссплатформенной библиотеки SFML. Характеристика схемы алгоритма работы меню. Осуществление запуска программы через VisualStudio.
курсовая работа [4,4 M], добавлен 10.05.2019Методы создания двумерных и трехмерных изображений. Классификация средств компьютерной графики и анимации. Системы для работы с видео и компоновки. Обзор программных продуктов для создания презентаций, двумерной и трехмерной анимации, 3D-моделирования.
реферат [30,5 K], добавлен 25.03.2015Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Освоение языка программирования Delphi. Построение блок-схемы запуска главного таймера и основная логика программы. Использованные свойства и события Form, MediaPlayer, Timer, MainMenu. Запуск, пауза и остановка анимациии. Создание листинга программы.
курсовая работа [771,9 K], добавлен 22.06.2014Понятие, принципы и инструментальное обеспечение создания компьютерной анимации как искусства создания движущихся изображений с использованием компьютера. Поисковые системы Internet, их функции и назначение, оценка возможностей, условия использования.
контрольная работа [141,4 K], добавлен 06.03.2014Назначение компьютерной графики. Особенности трехмерной анимации. Технология создания реалистичных трехмерных изображений. Компьютерная графика для рисования на SGI: StudioPaint 3D. Пакет PowerAnimator как одна из программ трехмерной анимации на SGI.
реферат [25,7 K], добавлен 31.03.2014Характеристика вероятностного алгоритма и особенности его использования. Принцип работы и назначение генератора случайных чисел, сущность псевдослучайных чисел. Рассмотрение и реализация метода середины квадрата, разработка алгоритма и его кодирование.
курсовая работа [50,3 K], добавлен 18.09.2009История развития компьютерной графики. Возникновение компьютерной (машинной) графики: научной, деловой, конструкторской, иллюстративной, художественной и рекламной. Компьютерная анимация. Графика для Интернета. Векторная графика и художественные эффекты.
курсовая работа [692,0 K], добавлен 12.11.2014Сущность медиаобразования: базовые проблемы, развитие, цель обучения. Анализ образного мышления, компьютерной графики и анимации, процесс создания мультимедийной образовательной технологии. Разработка мини ролика с помощью технологии 2D для школьников.
дипломная работа [3,7 M], добавлен 27.03.2012Разработка программы, выводящей на экран механизм с возможностью изменения масштаба, скорости вращения звена, сохранения и считывания входных данных из файла в среде разработки MS Visual C#. Блок-схема ее работы. Принцип работы движущихся элементов.
курсовая работа [860,6 K], добавлен 27.06.2013Основные понятия и задачи, решаемые компьютерной графикой. Характеристика и разновидности компьютерной графики. Цветовые модели RGB, CMYK, HSB. Графические форматы растровых и векторных изображений. Особенности шелкографии, трёхмерная графика и анимация.
курсовая работа [350,7 K], добавлен 20.02.2012Сущность и назначение программы 3D Studio Max версии 9.0, ее возможности в создании отдельных изображений и анимации. Объекты Мах 9.0, их разновидности и характеристика, порядок обработки. Методика отображения трехмерного пространства через окна проекций.
курсовая работа [2,4 M], добавлен 04.05.2009Устройства для создания примитивной анимации. История развития анимирования 70-х годов. Трехмерная система анимации фигур. Создание искусственного человека, неотличимого от настоящего. Достижения освещения и текстурирования. Деформация 2D и 3D объектов.
презентация [1,4 M], добавлен 06.02.2013Реализация базовых геометрических преобразований: вращения, переноса, отражения и масштабирования. Рекомендации по работе с программой. Ввод в соответствующие поля приложений значений данных по каждой из осей координат для выполнения операции с фигурой.
контрольная работа [642,0 K], добавлен 21.01.2015Понятие о кинематике. Относительность, траектория и виды движений. Движение тела, брошенного под углом к горизонту. Разработка компьютерной программы для моделирования. Описание интерфейса программы и программного кода. Инструкция пользования интерфейсом.
курсовая работа [1,6 M], добавлен 25.11.2013Исследоввание деятельности магазина "Комплектация компьютерной техники". Анализ данных, обоснование проекта программы продажи/покупки товаров. Правила выбора языка программирования. Описание интерфейса программы. Составление руководства пользователя.
курсовая работа [512,4 K], добавлен 11.12.2014Изучение дисперсных систем и создание программы, реализующей метод Монте-Карло и моделирующей распределение частиц в определенной области. Исследование методов линейных итераций и вязкой суспензии. Характеристики распределения порошков по размерам.
контрольная работа [1,4 M], добавлен 05.12.2014