Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5ballov-32362.rtf
Скачиваний:
23
Добавлен:
08.06.2015
Размер:
384.66 Кб
Скачать

Библиотека 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