|
||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[27] {--------------------------------------------------------Фрагмент N 5 программы "цветные волны точек" ( рисование движущегося массива пикселов с отражением от границы экрана ). for k:= 1 to N do begin X[k] Y[k] P[k] VX[k]:=-2+random(5); end; Repeat for k:= 1 to N do begin if (X[k]+VX[k]<0) or if (Y[k]+VY[k]<0) or = random(Gx); = random(40); = random(7)+9; VY[k]:=-6+P[k] { координаты пиксела } { цвет пиксела } { приращение координат } (X[k]+VX[k]>Gx) (Y[k]+VY[k]>Gy) { анализ границ экрана } then VX[k]:= -VX[k] then VY[k]:= -VY[k] PutPixel(X[k], Y[k], 0); X[k]:=X[k]+VX[k]; Y[k]:=Y[k]+VY[k]; PutPixel(X[k], Y[k], P[k]) Until KeyPressed; {----------------------------------------- { стирание пиксела } { новые координаты пиксела } { рисование пиксела } В верхней части экрана генерируются N точек цвета P[k]. Приращение координат точек задается в виде массивов VX, VY , т. е. скорость движения каждой точки постоянная, а направление изменяется при достижении границы экрана. Вертикальная скорость задается одинаковой для точек одного цвета, что создает иллюзию волнового (фронтального) движения. По горизонтали скорость выбирается случайным образом. Алгоритм создания перемещения: точка гасится пикселом с цветом фона и высвечивается вновь после ее смещения. Практическое задание N 1. 50 Модифицировать программу "цветные волны точек": 1.Создать два перекрещивающихся набора волн: по горизонтали и по вертикали. 2.Изменить условие отражения точек от границ экрана: при достижении горизонтального края должны "прилипать" с изданием звука точки одного цвета, затем другого и т. д. до остановки всех точек. 3.Сгенерировать волны, движущиеся из левой верхней четверти экрана по диагонали. Изменять цвет точек при каждом их отражении от границ экрана. 4.Сгенерировать две волны, движущиеся из правого и левого верхних углов экрана по диагонали. Уменьшать скорость точек при каждом их отражении от границ экрана. {-----------------------------------------------------------------Фрагмент N 6 программы "молекулы газа в поле тяготения" ( рисование массива пикселов, хаотично перемещающихся в заданном направлении). for k:= 1 to N do begin X[k] Y[k] P[k] = random(Gx); = random(Gy); = random(7)+9 for k:= 1 to N do begin PutPixel(X[k], Y[k], 0); dx:= -25 + random(51);dy:= -25 + random(71); if (X[k]+dx > 0) and (X[k]+dx < Gx) then X[k]:= X[k] + dx; if (Y[k]+dy > 0) and (Y[k]+dy < Gy) then Y[k]:= Y[k] + dy; PutPixel(X[k], Y[k], P[k]) Until KeyPressed; {----------------------------------------------------------------- } В программе определены массивы координат точек X[1. . N], Y[1. . N] и цвета P[1. . N]. Точки гасятся, случайным образом смещаются их координаты на dx, dy, а затем точки вновь высвечиваются прежним цветом - создается иллюзия движения. Причем dx генерируется в диапазоне -25. . . 25, а dy - в диапазоне -25. . . 45, поэтому точки стремятся к нижней границе экрана, имитируя поведение молекул газа в толстом слое атмосферы. Введено ограничение на перемещение - если при очередном назначении dx или dy точка выйдет за границу экрана, то изменения соответствующей координаты не произойдет. Практическое задание N 1. 51 Модифицировать программу " молекулы газа в поле тяготения": 1.Изменить направление поля тяготения (в правый нижний угол). 2.Точки ярких цветов направьте к правой границе экрана, точки темных цветов - к левой границе. 3.Для одной из точек (например, с номером 100) отслеживать ее движение в виде ломаной линии. 4.Смещать сто раз через один цикл (Repeat. . . Until) нижнюю границу на один пиксел вверх, затем вниз и т. д. , моделируя изменение "объема сосуда с молекулами". Добавить оператор, контролирующий и изменяющий координаты точек, выходящих за границу. {-------------------------------------------------------------Фрагмент N 7 программы "пчелиный рой" ( рисование массива пикселов, хаотично перемещающихся около движущейся точки). for k:=1 to N do begin X[k] Y[k] P[k] if i < Gx then i:= i for k:= 1 to N do begin dx:= -25 + random(51); dy:= -25 + random(51); = random(Gx) = random(Gy) = random(16) { смещение "центра" роя } PutPixel(X[k], Y[k], 0); if (X[k]+dx > 0) and (X[k]+dx < Gx) { контроль выхода пикселов } then begin{ за границу экрана } if (X[k]+dx < Gx-i) then dx:= dx+5 { контроль выхода "центра" } else dx:= dx-5; X[k]:= X[k]+dx { за границу экрана } end; if (Y[k]+dy > 0) and then begin if (Y[k]+dy<Gy div 2) else dy:= dy-5; end; PutPixel(X[k], Y[k], Until KeyPressed; (Y[k]+dy < Gy) { контроль выхода пикселов } { за границу экрана } then dy:= dy+5 { контроль выхода " центра" } Y[k]:= Y[k]+dy{ за границу экрана } Эта программа - усложненный вариант фрагмента N6. Случайные смещения координат точек dx, dy сначала задаются равномерно из диапазона 25. . . 25. Затем анализируется местоположение каждой точки относительно полюса с координатами Gx-i, Gy div 2. Смещения координат корректируются так, чтобы точки "тяготели" к "центру". "Центр" перемещается из- за изменения параметра "i", чем моделируется перемещение роя. Практическое задание N 1. 52 Модифицировать программу "пчелиный рой": 1.Замедлить перемещение роя и запрограммировать изменение направления перемещения при достижении края экрана. 2.Ускорить перемещение роя и запрограммировать движение по вертикали с изменением направления перемещения при достижении края экрана. 3.Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется вслед за первым. 4.Создать два роя разного цвета, один из которых случайным образом перемещающиеся по экрану, а другой движется в противоположную сторону. 5.Смоделировать движение кометы. {----------------------------------------------------------------Фрагмент N 8 программы "мячик в коробке" ( рисование движущейся окружности с анализом границ области по цвету пиксела . x1:=100; x2:=400; y1:=120; y2:=380; {Координаты углов наружной коробки} dx:= -5; dy:= 3;{ начальный шаг движения мяча } r:= 4;{ Радиус мяча } SetColor(11); Rectangle(x1, y1, x2, y2);{ Наружная коробка } Rectangle(x1+30, y1+70, x1+120, y1+90); { Внутренние коробки } Rectangle(x1+200, y1+90, x1+230, y1+200); xc:= x1+90; yc:= y1+110; Circle(xc, yc, r);{ Мячик } ax:= abs(dx); ay:= abs(dy); { число пикселов по ходу движения } Repeat i2:= 0; i1:= 0;{ признаки удара о стенку равны нулю } zx:= dx div abs(dx); zy:= dy div abs(dy); { направление движения } for i:= 1 to ax do if GetPixel(xc+(r+i)*zx, yc) > 0 then { удар о вертикальную стенку } begin dx:= -dx; i1:= 1; break end; |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||