русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Создание иллюзии движения


Дата добавления: 2015-06-12; просмотров: 660; Нарушение авторских прав


Создать видимость движения изображения на экране можно несколькими способами. Рассмотрим два из них.

I способ. Имитация движения объекта на экране за счет многократного выполнения программой набора действий: нарисовать – пауза – стереть (нарисовать в том же месте цветом фона) – изменить координаты положения рисунка.

Перед началом составления программы надо продумать описание «двигающегося» объекта, характер изменения координат, определяющих текущее положение объекта, диапазон изменения и шаг.

Упражнение 1. Изучить текст программы, которая рисует модель атома. Проверить ее действие.

program Model_At;

uses Ctr, Graph;

const Ra=100; {радиус атома}

Rc=10; {радиус ядра}

Re=4; {радиус электрона}

k=0.5; {коэффициент сжатия орбит электронов}

Dr=30; {параметр изменения координат электрона}

Step1=0.2; {шаг изменения положения электрона}

Step=100; {время задержки – скорость движения электронов}

var cx, cy, y, y1, y2, x, x1, x2, x3,y3:integer;

I, I1, I2, I3: real; d, m: integer;

Begin

clrscr;

d:=detect;

initgraph(d, m, ‘путь к драйверу’);

SetTextStyle(0, 0, 2);

OutTextXY(200, 30, ‘Модель атома’);

cx:=GetMaxX div 2; {определить центр экрана- положение ядра}

cy:=GetMaxY div 2;

PieSlice(cx, cy, 0, 360, Rc);{нарисовать ядро атома}

SetColor(Red);

SetLineStyle(0, 0, 3);

Line(cx-7, cy, cx+7, cy);

Line(cx, cy-5, cx, cy+5);

SetLineStyle(0,0,1);

SetFillStyle(1,1)

I:=Pi/4; {задать начальное положение 4 электронов}

I1:= - Pi/4;

I2:= - Pi/2;

I3:= Pi/2;

SetTextStyle(0, 0, 1);

SetColor(jellow);

OutTextXY (180, 420,’Для отмены нажмите любую клавишу’);

While not KeyPressed do {повторять, пока не нажата любая клавиша }

begin {определить координаты электронов}

x:=Round (Ra*cos(I)) +cx; Y:= Round(k+Ra*sin(I)) +cy;

x1:= Round((Ra+Dr)*cos(I1)) +cx; y1:= Round (k*(Ra+Dr)*sin(I1)) +cy;



x2:= Round((Ra-Dr)*cos(I2)) +cx; y2:= Round (k*(Ra-Dr)*sin(I2)) +cy;

x3:= Round((Ra-Dr)*cos(I3)*2.3) +cx; y3:= Round (k*(Ra-Dr)*sin(I3)*2.3)+cy;

{установить синий цвет и нарисовать электроны}

SetColor(1);

Circle(x, y, Re);

PutPixel(x, y, 2);

Circle(x1, y1, Re);

PutPixel(x1, y1, 2);

Circle(x2, y2, Re);

PutPixel(x2, y2, 2);

Circle(x3, y3, Re);

PutPixel(x3, y3, 2);

Delay(Step); {нарисовать электроны цветом фона}

SetColor(0);

Circle(x, y, Re);

PutPixel(x, y, 2);

Circle(x1, y1, Re);

PutPixel(x1, y1, 2);

Circle(x2, y2, Re);

PutPixel(x2, y2, 2);

Circle(x3, y3, Re);

PutPixel(x3, y3, 2); {задать изменение положения электронов}

I:=I + Step1;

I1:=I1 – Step1;

I2:=I2 + Step1;

I3:=I3 + Step1;

end; {конец цикла}

CloseGraph;

end.

II способ. Иллюзия движения создается при помощи специальных процедур и функций.
Функция ImageSize(x1,y1,x2,y2:integer):word;

возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения, где x1,y1 – координаты левого верхнего и x2,y2 – правого нижнего углов фрагмента изображения.

Процедура GetImage(x1,y1,x2,y2:integer,var Buf);

помещает в память копию прямоугольного фрагмента изображения, где x1,..,y2 – координаты углов фрагмента изображения, Buf - специальная переменная, куда будет помещена копия видеопамяти с фрагментом изображения. Buf должна быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами.

Процедура PutImage(x,y:integer,var Buf, Mode:word);

выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage. x,y – координаты левого верхнего угла того места на экране, куда будет скопирован фрагмент изображения; Buf - специальная переменная, откуда берется изображение, Mode – способ копирования. Координаты правого нижнего угла не указываются, так как они полностью определяются размерами выводимой на экран копии изображения. Координаты левого верхнего угла могут быть любыми, лишь бы только копия уместилась в пределах экрана (если копия не размещается на экране, то она не выводится, и экран остается без изменений). Параметр Mode определяет способ взаимодействия размещаемой с уже имеющимся на экране изображением:



<== предыдущая лекция | следующая лекция ==>
Виды циклов | Табдица 7


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.124 сек.