Анимация вращения квадрата

Разработка компьютерной программы, реализующей компьютерную анимацию вращения квадрата средствами программы 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.