
- •I. Оргвопросы
- •II. Проблемы системы образования россии
- •III. Проблемы мировой компьютерной индустрии
- •IV. Правила работы с литературой
- •V. Имитационное моделирование
- •Рисование эллипсов
- •Установка видеорежима
- •Выбор окна видеопамяти
- •Установка логической длины строки развертки
- •Организация видеопамяти
- •Пограммирование таблицы цветов в 256-цветном режиме
- •Классификация моделей
- •Достоинства и недостатки имитационного моделирования
Библиотека 5баллов.ru
Соглашение об использовании Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных заведениях. Во всех остальных случаях полное или частичное воспроизведение, размножение или распространение материалов данного файла допускается только с письменного разрешения администрации проекта www.5ballov.ru. РосБизнесКонсалтинг |
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N1 (ВВОДНАЯ)
I. Оргвопросы
1. Списки групп
2. Расписание занятий
II. Проблемы системы образования россии
Денег на систему образования у государства нет и не будет:
- проблемы обеспечения учебного процесса литературой, техникой и т.д. в конечном итоге будут так или иначе переложены на плечи студентов - они вынуждены будут сами себе покупать книги и даже компьютеры;
- возможна реформа системы образования с непредсказуемыми последствиями;
- возможна (замаскированная) ликвидация бесплатного образования вообще.
III. Проблемы мировой компьютерной индустрии
Западная экономика построена по принципу совместного функционирования двух систем: планирующей (для крупных фирм) и рыночной (для мелких фирм и частных лиц). Планирующая система является доминирующей - она диктует цены рыночной системе.
В планирующей системе не действуют законы рынка:
- она может произвольным образом устанавливать цены на товары и услуги;
- может навязывать потребителю любой товар ("промывая мозги" при помощи рекламы);
- кризисы перепроизводства почти не затрагивают планирующующую систему - все издержки она может переложить на рыночную систему, которая, в конечном итоге, всегда платит за ошибки планирующей системы.
Фирмы Intel, IBM и Microsoft явно принадлежат к планирующей системе и пользуются всеми ее преимуществами. Однако их деятельность явно вызывает кризис в мировой компьютерной индустрии.
Архитектура компьютеров IBM AT и микропроцессоров Intel принципиально устарела. Система Windows стала сверхуниверсальной, что приводит к чрезвычайному замедлению работы компьютеров.
За кризис в конечном итоге расплатится рыночная система, т.е. потребители.
IV. Правила работы с литературой
Книги стоят дорого! Как найти хорошую книгу среди тысяч посредственных?
1. Хорошая книга обычно написана от первого лица, посредственная - от третьего.
2. Признак явной халтуры - отсутствие картинок (т.е. образных моделей).
3. Следует избегать книг с названием "учебник" и книг "для чайников". Обычно учебники пишут теоретики - люди, полностью отрезанные от реальности и практических навыков по рассматриваемому в книге предмету. Книги "для чайников" пишут люди, только начинающие изучать описываемые ими вопросы.
Проблемы: хорошие книги обычно издаются малыми тиражами и дорого стоят.
V. Имитационное моделирование
1. Что такое модель?
Модель - это нечто, чем можно заменить физический объект в процессе эксперимента.
2. Зачем нужна модель?
Экспериментировать с физическим объектом может быть дорого, неудобно или опасно.
3. Зачем нужно имитационное моделирование?
Когда задача имеет слишком большую размерность или не поддается решению в явном виде по каким-то другим причинам, используют иммитационное моделирование.
4. Профессиональные тренажеры и компьютерные игры.
VI. МАШИННАЯ ГРАФИКА
1. Компьютерная графика позволяет наглядно отображать результаты моделирования.
2. Технический прогресс позволил упростить работу с памятью компьютеров. На аппаратном уровне оперативная, графическая и дисковая память теперь фактически имеют линейную организацию.
3. Организация видеопамяти. Рисование точки. Рисование статической картинки. Рисование буквы. Рисование плоских движущихся изображение.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N2
I. ОРГАНИЗАЦИЯ ВИДЕОПАМЯТИ
1. Восьмибитовый режим (256 цветов).
1.1. Режим с разрешением 320х200 точек.
Линейное адресное пространство 64 кб (адреса A0000h-AFFFFh). Используется таблица цветов - можно выбрать 256 из 218 возможных оттенков.
1.2. Режимы с более высоким разрешением и стандарт VESA.
Возможна либо страничная адресация через сегменты по 64 кб (по адресу A0000h-AFFFFh), либо линейная адресация пространства объемом до 64 Мб (по адресу E0000000h-E3FFFFFFh).
2. 24- и 32-битовый режимы (True color).
Возможна либо страничная адресация через сегменты по 64 кб (по адресу A0000h-AFFFFh), либо линейная адресация пространства объемом до 64 Мб (по адресу E0000000h-E3FFFFFFh).
II. АНИМАЦИЯ В ДВУМЕРНОМ
ПРОСТРАНСТВЕ И ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.
Экономия процессорного времени (обмен "память-быстродействие"): при реализации двумерной графики обычно не нужно перерассчитывать изображение для каждого объекта в каждом новом кадре. Изображения всех объектов могут быть рассчитаны заранее (с помощью профессиональных анимационных программ), записаны в файлах на диске и, по мере необходимости, перенесены в оперативную память компьютера. Движущиеся объекты отличаются от неподвижных тем, что требуют по несколько картинок для описания отдельных фаз
каждого возможного движения (3-16 фаз на один тип движения).
Аппроксимация. Влияние разрешения на качество картинки. Лестничный эффект.
Скорость обмена данными с кеш-памятью, оперативной памятью и видеопамятью.
Необходимо вначале накопить данные в оперативной памяти, и уже затем выводить в видеопамять изображение нового кадра.
Расход памяти. Использование симметрии при отображении поступательных и вращательных движений для экономии оперативной памяти. Разделение сложных объектов на несколько независимо отображаемых элементов.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N3
АНИМАЦИЯ В ДВУМЕРНОМ
ПРОСТРАНСТВЕ И ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.
Расход памяти. Использование симметрии при отображении поступательных и вращательных движений для экономии оперативной памяти. Разделение сложных объектов на несколько независимо отображаемых элементов.
Объекты с несколькими осями симметрии. Круг - объект с бесконечным числом осей симметрии. Иллюзия вращения круга.
Сколько разных подвижных и неподвижных объектов заданного размера (при заданном числе фаз движения) можно сохранить в оперативной памяти компьютера (заданного объема)?
Фон. Лабиринты и псевдокарты. Прокрутка изображения.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N4
АНИМАЦИЯ В ДВУМЕРНОМ
ПРОСТРАНСТВЕ И ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.
Необходимо задать жесткие ограничения:
- на размерность отображаемого пространства (на число координатных осей);
- на размер отображаемого пространства (площадь и глубину);
- на сложность фона;
- на число и сложность формы неподвижных объектов;
- на число и сложность формы подвижных объектов, число типов движений и число фаз движений;
- на масштабируемость объектов (на сколько допустимо увеличение и уменьшение объекта);
- на направление взгляда и угол обзора.
Направление взгляда: сверху, сбоку, сверху-сбоку.
Координатные оси. Двумерное, псевдотрехмерное и трехмерное пространство.
Ориентация осей в двумерном пространстве (относительно экрана монитора).
-------- x
|
|
|
y
Ориентация осей в трехмерном пространстве (оси x и y - как в двумерном, ось z направлена от оператора вглубь экрана).
Соотношение между сферическими и прямоугольными координатами:
x = r sin f cos Q
y = r sin f sin Q
z = r cos f
Алгоритм художника. Примитивный вариант z-буферизации в псевдотрехмерной графике.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N5
ЗАДАНИЕ НА ЗАЧЕТ
Задание: написать программу, выполняющую моделирование функционирования какой-либо системы и отображающую результаты моделирования на экране монитора в графическом виде.
Каждый студент может выбрать себе задание (тип моделируемой системы) самостоятельно. Программа может иметь форму игры, но обязательно должна моделировать какую-то реальную систему или процесс.
ОГРАНИЧЕНИЯ:
1. Программа должна работать под операционной системой DOS. Нельзя использовать возможности Windows.
2. Языки программирования: С, Паскаль или Ассемблер. Объектно-ориентированные возможности языков использовать нельзя.
3. Ограничение на графические режимы: можно использовать только режим 256 цветов (1 байт видеопамяти на каждую точку) с разрешением 320х200 точек или (в случае крайней необходимости) 640х400 точек.
4. Нельзя использовать никакие графические библиотеки - вывод информации должен производиться напрямую в видеопамять.
5. Ограничение по быстродействию: программа должна сохранять работоспособность на медленных 486-х компьютерах.
6. Ограничение по оперативной памяти - нельзя использовать более 500 кб основной памяти и более 1 Мб расширенной.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N7
РИСОВАНИЕ ЛИНИЙ, ОКРУЖНОСТЕЙ И ЭЛЛИПСОВ.
ЗАЧЕМ ЭТО НУЖНО ЗНАТЬ?
Основной недостаток всех универсальных графических библиотек
- медленная работа (универсальная система всегда значительно уступает по производительности специализированной).
Использование чужой библиотеки всегда сопровождается серьезным риском:
- программы библиотеки могут содержать ошибки, которые вы не можете исправить (исходные коды программ обычно не поставляются);
- возможны ошибки в документации на библиотеку (либо просто неточное описание ее функционирования);
- в продажу, как правило, поступают уже сильно устаревшие библиотеки - фирмы-разработчики не нуждаются в конкуренции с вашей стороны. Покупка чужой технологии всегда приводит к технологическому отставанию - вы сами себя изгоняете с рынка за свои же собственные деньги;
- разработчик библиотеки в любой момент может перестать ее развивать;
- в компьютерной промышленности периодически происходят кризисы, уничтожающие целые классы ("ряды") морально устаревших вычислительных машин. Заменяющие их принципиально новые системы в течение нескольких лет могут не иметь необходимого программного обеспечения.
Проектировщики систем управления постоянно имеют дело с новейшей аппаратурой, и часто вынуждены сами создавать для нее программное обеспечение.
РИСОВАНИЕ ЛИНИИ
(алгоритм Брезенхема)
"Несмотря на всю сложность программирования графики, в основе любой графической функции лежит несколько на удивление простых функций, называемых графическими примитивами. Такими примитивами являются прорисовка точек, линий, окружностей, а также заполнение областей и перемещение битовых образов. Многие годы в графическое оборудование встраивался тот или иной набор графических примитивов. Такой примитив, как рисование линии, особенно широко используется конструкторскими программами, а также программами автоматизированной разработки.
У каждой функции рисования линии есть две важнейшие характеристики. Во-первых, функция должна хорошо приближать то, что она рисует, к реальной линии. Разрешение компьютера ограничено, поэтому программа может приближать реальную линию только сериями точек, устанавливаемых в заданном направлении. Эта последовательность точек должна создавать хороший зрительный эффект - то, что нарисовано, должно быть похоже на линию. Во-вторых, чтобы быть полезной, функция рисования линии должна работать быстро. Мини-компьютеры и большие машины имеют аппаратно встроенные функции рисования линии. У персональных же компьютеров аппаратной поддержки рисования линии нет."
Майкл Абраш
Появление аппаратной поддержки графики в ПЭВМ (графические ускорители, команды MMX).
Приближение реальной линии набором пикселей. Лестничный эффект.
Алгоритм Брезенхема:
Алгоритм идет по оси, проекция линии на которую больше (основной оси), и проверяет соседние точки по другой оси, выбирая ту, что ближе к реальной линии. Текущая ошибка отклонения используется как критерий того, что пора менять неосновную координату, чтобы лучше приблизить реальную линию.
Для того, чтобы можно было работать только с целыми числами, избегая вычислений с плавающей запятой, достаточно промасштабировать картинку.
Благодаря использованию только целочисленной арифметики алгоритм Брезенхема является одним из самых простых и быстрых алгоритмов.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N8
РИСОВАНИЕ ОКРУЖНОСТЕЙ
(алгоритм Харденбурга)
Уравнение окружности:
R2 = X2 + Y2
С точки зрения программирования достаточно рассчитать 1/8 часть окружности - остальные точки могут быть получены за счет симметрии.
Обычно начинают рисовать из точки, где координата по основной оси (по которой приращение больше) равна 0, а по неосновной - радиусу. Каждая следующая точка получается из формулы:
|\\\\\\\\\\\\\\\\
MinorAxis = ? R2 - MajorAxis2
где R - радиус,
MinorAxis - координата по неосновной оси,
MajorAxis - координата по основной оси.
Недостаток - нужно вычислять квадратный корень и использовать арифметику с плавающей запятой. Желательно, однако, работать только с целочисленной арифметикой.
Вместо вычисления такого выражения для каждой точки достаточно отслеживать текущие значения MinorAxis2 и R2 - MajorAxis2 и декрементируйте один пиксель по неосновной оси, как только MinorAxis2 становится меньше R2 - MajorAxis2.
Ошибка накопления - не целое число. Однако никаких проблем это не создает. Координату по неосновной оси нужно изменять, когда
(Y - 0.5)2 > R2 - X2
Однако:
(Y - 0.5)2 = Y2 - Y + 0.25
Разность Y2 - Y вычисляется в целых числах, а 0.25 можно просто игнорировать, потому что разность R2 - X2, которую мы будем сравнивать с ошибкой накопления по Y, всегда целое число. Если R2 - X2 равен Y2 - Y, то на самом деле R2 - X2 меньше ошибки. Следовательно, неосновную координату нужно менять, когда
Y2 - Y >= R2 - X2.
Кроме того, при необходимости можно ускорить вычисления, заменив операцию взведения в квадрат (умножения) на сдвиг, сложение и инкремент (для 486-х и более мощных процессоров такая замена не имеет смысла):
(a + 1)2 = a2 + 2a + 1.
ПРИКЛАДНОЕ ПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ
ЛЕКЦИЯ N9