Реферат: Прикладное программирование, 1 семестр

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                      ЛЕКЦИЯ 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. Организациявидеопамяти.  Рисование точки. Рисованиеста-

тической картинки. Рисование буквы. Рисование плоских движущихся

изображение.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N2

                   I. ОРГАНИЗАЦИЯ ВИДЕОПАМЯТИ

              1.Восьмибитовый режим (256 цветов).

             1.1.Режим с разрешением 320х200 точек.

     Линейноеадресное пространство 64 кб (адреса A0000h-AFFFFh).

Используется таблица цветов — можно выбрать 256 из 2 518 0 возможных

оттенков.

    1.2. Режимы сболее высоким разрешением и стандарт VESA.

     Возможналибо  страничная  адресация через сегменты по 64 кб

(по адресу A0000h-AFFFFh),  либо линейная адресация  пространства

объемом до 64 Мб (по адресу E0000000h-E3FFFFFFh).

            2. 24-и 32-битовый режимы (True color).

     Возможналибо  страничная  адресация через сегменты по 64 кб

(по адресу A0000h-AFFFFh),  либо линейная адресация  пространства

объемом до 64 Мб (по адресу E0000000h-E3FFFFFFh).

                   II. АНИМАЦИЯ В ДВУМЕРНОМ

           ПРОСТРАНСТВЕ И ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.

     Экономияпроцессорного  времени  (обмен «память-быстродейс-

твие»): при  реализации  двумерной графики обычно не нужно пере-

рассчитывать изображение для каждого объекта в каждомновом  кад-

ре. Изображения  всех  объектов могут быть рассчитаны заранее (с

помощью профессиональных анимационных программ),  записаны в фай-

лах на диске и,  помере необходимости,  перенесены воперативную

память компьютера. Движущиеся объекты отличаются от неподвижных

тем, что требуют по несколько картинок для описанияотдельных фаз

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

                               — 2 -

каждого возможного движения (3-16 фаз на один типдвижения).

     Аппроксимация.Влияние  разрешения  на качество   картинки.

Лестничный эффект.

     Скоростьобмена данными с кеш-памятью, оперативной памятью и

видеопамятью.

     Необходимовначале  накопить данные в оперативнойпамяти,  и

уже затем выводить в видеопамять изображение новогокадра.

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

тупательных и вращательных движений для экономии оперативной па-

мяти. Разделение сложных объектов на несколько независимоотобра-

жаемых элементов.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N3

                     АНИМАЦИЯ В ДВУМЕРНОМ

           ПРОСТРАНСТВЕ И ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.

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

тупательных и вращательных движений для экономии оперативной па-

мяти. Разделение сложных объектов на несколько независимоотобра-

жаемых элементов.

     Объекты снесколькими осями симметрии.  Круг — объект с бес-

конечным числом осей симметрии. Иллюзия вращения круга.

     Сколькоразных  подвижных  и неподвижных объектов заданного

размера (при заданном числе фаз движения) можно сохранитьв  опе-

ративной памяти компьютера (заданного объема)?

     Фон. Лабиринтыи псевдокарты. Прокрутка изображения.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N4

                     АНИМАЦИЯ В ДВУМЕРНОМ

            ПРОСТРАНСТВЕИ ПСЕВДОТРЕХМЕРНАЯ АНИМАЦИЯ.

     Необходимозадать жесткие ограничения:

     — наразмерность отображаемого пространства (на число  коор-

динатных осей);

     — на размеротображаемого пространства (площадь и глубину);

     — на сложностьфона;

     — на число и сложность формы неподвижныхобъектов;

     — на число исложность формы подвижных объектов, число типов

движений и число фаз движений;

     — на  масштабируемость объектов (на сколькодопустимо увели-

чение и уменьшение объекта);

     — нанаправление взгляда и угол обзора.

     Направлениевзгляда: сверху, сбоку, сверху-сбоку.

     Координатныеоси.  Двумерное,  псевдотрехмерное и трехмерное

пространство.

     Ориентацияосей в двумерном пространстве (относительно экра-

на монитора).

    ┌─────── x

     │

     │

     │

     y

     Ориентацияосей в трехмерном пространстве (оси x и y — как в

двумерном, ось z направлена от оператора вглубь экрана).

.

                              — 2 -

     Соотношениемежду  сферическими и прямоугольнымикоордината-

ми:

     x =  7r 0 sin  7f 0cos  7Q

     y =  7r 0 sin  7f 0sin  7Q

     z =  7r 0 cos  7f

     Алгоритмхудожника.  Примитивный  вариант z-буферизации   в

псевдотрехмерной графике.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N5

                       ЗАДАНИЕ НА ЗАЧЕТ

     Задание:написать программу, выполняющую моделирование функ-

ционирования какой-либо системы и отображающую результатымодели-

рования на экране монитора в графическом виде.

     Каждыйстудент  может выбрать себе задание (типмоделируемой

системы) самостоятельно. Программа может иметь  форму  игры, но

обязательно должна моделировать  какую-то  реальную систему или

процесс.

                         ОГРАНИЧЕНИЯ:

     1. Программадолжна работать под операционной системой DOS.

Нельзя использовать возможности Windows.

     2. Языкипрограммирования: С, Паскаль или Ассемблер. Объект-

но-ориентированные возможности языков использоватьнельзя.

     3. Ограничениена  графические  режимы: можно  использовать

только режим 256  цветов  (1 байт видеопамяти на каждую точку) с

разрешением 320х200 точек или (в  случае крайней  необходимости)

640х400 точек.

     4. Нельзя  использовать никакие графические библиотеки — вы-

вод информации должен производиться напрямую ввидеопамять.

     5. Ограничениепо быстродействию: программа должна сохранять

работоспособность на медленных 486-х компьютерах.

     6. Ограничениепо оперативной памяти -  нельзя  использовать

более 500 кб основной памяти и более 1 Мб расширенной.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N6

                 ПЕРЕНОС И ПОВОРОТ ИЗОБРАЖЕНИЯ

           2Перенос и поворот в двумерном пространстве

     Перенос точкиP(x,y) в точку P(x',y'):

     x' = x +  7D 0x

     y' = y +  7D 0y

     Поворот вокруг  центра координат  (точка P(x,y) переходитв

точкуP(x',y')):

     x' = x cos  7f 0 — y sin 7f

     y' = x sin  7f 0 + y cos 7f

                  Вычисления в матричной форме

     Перенос:

                                    ┌      ┐

                                     │1  0 │

                  [x' y'] = [x y 1] │ 0  1│

                                    │ 7D 0x  7D 0y │

                                     └      ┘

     Удобнееработать с квадратной матрицей переноса (которая мо-

жет быть получена введением фиктивной переменной):

                                    ┌         ┐

                                     │1  0 0 │

                 [x' y' 1] = [x y 1] │ 0  1  0│

                                    │ 7D 0x  7D 0y 1 │

                                    └         ┘

     Такуюзапись  принято называть записью всистеме «однородных

координат».

     Поворот вокругцентра координат на угол  7f 0:

                                ┌               ┐

                                │  cos  7f 0  sin  7f 0 │

                [x'y'] = [x y] │               │

                                │ -sin 7f 0  cos  7f 0│

                               └               ┘

.

                              — 2 -

                               ┌                     ┐

                               │  cos  7f 0  sin  7f 0   0  │

           [x' y' 1] = [x y 1] │ -sin 7f 0  cos  7f 0   0  │

                               │   0     0      1   │

                               └                     ┘

     Поворотвокруг  произвольной точки с координатами(x 40 0,y 40 0) на

угол  7f 0 может быть представлен формулой:

                     [x' y' 1] = [x y 1] R

     где через Rобозначена матрица поворота размером 3x3.

     Такой поворотсостоит из трех операций:

     1.Преобразование для переноса точки (x 40 0,y 40 0) вначало  коор-

динат О:

                            ┌            ┐

                            │  1  0   0 │

                      T' = │  0   1   0│

                            │-x 40 0 -y 40 0  1│

                            └            ┘

     2. Поворотвокруг начала координат на угол  7f 0:

                      ┌                     ┐

                      │  cos  7f 0  sin  7f 0   0  │

                 R 40 0 = │ -sin  7f 0  cos  7f 0   0  │

                      │   0      0     1   │

                      └                    ┘

     3. Перенос изначала координат в точку (x 40 0,y 40 0):

                            ┌           ┐

                            │ 1   0   0│

                       T = │ 0   1   0 │

                            │x 40 0  y 40 0  1 │

                            └           ┘

     Матрица R =T'R 40 0T:

                      ┌                    ┐

                      │  cos  7f 0  sin  7f 0   0  │

                  R = │ -sin  7f 0 cos  7f 0   0   │

                      │   c 41 0     c 42 0     1  │

                      └                    ┘

     где

    c 41 0 = x 40 0 — x 40 0 cos 7f 0 + y 40 0 sin  7f

     c 42 0 = y 40 0- x 40 0 sin  7f 0 — y 40 0 cos  7f

.

                              — 3 -

           2Перенос и поворот в трехмерном пространстве

     Перенос точкиP(x,y,z) в точку P'(x',y',z'):

     x' = x +  7D 0x

     y' = y +  7D 0y

     z' = z +  7D 0z

     В матричнойформе:

                   [x' y' z' 1] = [x y z 1] T

                           ┌            ┐

                           │ 1  0 0  0 │

                       T = │ 0  1 0  0 │

                           │ 0  0 1  0 │

                          │ 7D 0x  7D 0y  7D 0z  1 │

                           └            ┘

     Поворотвокругосинаугол 7a 0:

                       ┌                     ┐

                       │   1     0      0   │

                  R 4x 0 =│   0     cos  7a 0  sin  7a 0│

                       │   0   -sin  7a 0  cos 7a 0│

                       └                     ┘

                       ┌                     ┐

                       │  cos  7a 0   0   -sin  7a 0│

                  R 4y 0 =│   0      1     0   │

                       │  sin  7a 0   0    cos  7a 0│

                       └                     ┘

                       ┌                     ┐

                       │  cos  7a 0  sin  7a 0   0  │

                  R 4z 0 = │-sin  7a 0  cos 7a 0   0   │

                       │   0     0      1   │

                      └                    ┘

     Поворот наугол  7a 0 вокруг произвольной оси, заданной вектором

v, может быть представлен формулой:

                   [x' y' z' 1] = [x y z 1] R

где через R обозначена матрица обобщенного поворотаразмером 4x4.

.

                              — 4 -

     Такой поворотсостоит из трех операций:

     1.Преобразование  для  переноса начальной  точки   вектора

v(x 40 0,y 40 0,z 40 0) вначало координат О:

                         ┌                ┐

                         │  1   0  0  0  │

                    T' = │  0   1   0  0 │

                         │  0   0  1  0  │

                         │ -x 40 0 -y 40 0 -z 40 0 1  │

                         └                ┘

     2. Поворотвокруг начала координат  выполняется  в полярных

координатах (как комбинация из нескольких поворотов):

                       ┌                    ┐

                       │  cos  7Q 0 -sin 7Q 0   0   │

                R 4z 5-1 0 = │ sin  7Q 0  cos 7Q 0   0   │

                       │   0      0     1   │

                       └                    ┘

                       ┌                    ┐

                       │  cos  7f 0   0    sin  7f 0│

                R 4y 5-1 0 = │  0      1      0  │

                       │ -sin 7f 0   0     cos  7f 0│

                        └                     ┘

                        ┌                     ┐

                        │  cos  7a 0  sin  7a 0   0  │

                 R 4v 0  = │ -sin  7a 0  cos 7a 0   0   │

                        │   0     0      1   │

                        └                     ┘

                        ┌                     ┐

                        │  cos  7f 0   0   -sin  7f 0│

                 R 4y 0  = │   0      1     0   │

                        │  sin  7f 0   0    cos  7f 0│

                        └                     ┘

                        ┌                     ┐

                        │  cos  7Q 0  sin  7Q 0   0  │

                 R 4z 0  = │ -sin  7Q 0  cos 7Q 0   0   │

                        │   0     0      1   │

                        └                     ┘

     В результатеполучим матрицу:

                                   ┌             ┐

                                    │r 411 0 r 412 0 r 413 0 │

             R 5* 0 =R 4z 5-1 0R 4y 5-1 0R 4v 0R 4y 0R 4z 0= │ r 421 0 r 422 0 r 423 0 │

                                    │r 431 0 r 432 0 r 433 0 │

                                   └             ┘

.

                              — 5 -

     Расширим этуматрицу до размера 4х4:

                         ┌                 ┐

                         │ r 411 0 r 412 0 r 413 0  0 │

                    R 40 0 = │ r 421 0 r 422 0r 423 0  0  │

                         │ r 431 0 r 432 0 r 433 0  0 │

                         │  0   0  0   1  │

                          └                 ┘

     3. Перенос изначала координат в точку (x 40 0,y 40 0,z 40 0)):

                        ┌                ┐

                        │  1   0  0  0  │

                    T = │  0   1  0  0  │

                        │  0  0   1  0  │

                        │  x 40 0  y 40 0  z 40 0 1  │

                        └                ┘

            Получаем матрицу обобщенного поворота:

                            R =T'R 40 0T

     Следуетотметить,  что  в компьютерной графике одновременно

используются оба способа описания пространства:  в прямоугольных

координатах рассчитывают перемещения, а в сферических — повороты.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N7

           РИСОВАНИЕ ЛИНИЙ, ОКРУЖНОСТЕЙ И ЭЛЛИПСОВ.

                    ЗАЧЕМ ЭТО НУЖНО ЗНАТЬ?

     Основнойнедостаток всех универсальных графических библиотек

— медленная работа (универсальная система всегдазначительно  ус-

тупает по производительности специализированной).

     Использованиечужой библиотеки всегда сопровождается серьез-

ным риском:

     — программыбиблиотеки могут содержать ошибки, которые вы не

можете исправить (исходные коды программ обычно непоставляются);

     — возможны ошибкив документации на библиотеку (либо просто

неточное описание ее функционирования);

     — впродажу,  как правило,  поступают уже сильно  устаревшие

библиотеки  — фирмы-разработчики не нуждаются в конкуренции с ва-

шей стороны. Покупка чужой технологии всегда приводит к техноло-

гическому отставанию  — вы сами себя изгоняете с рынка за свои же

собственные деньги;

     — разработчик  библиотеки  в любой момент может перестать ее

развивать;

     — вкомпьютерной промышленности периодически происходят кри-

зисы, уничтожающие целые классы («ряды»)морально устаревших  вы-

числительных машин. Заменяющие  их принципиально новыесистемы в

течение нескольких лет могут не иметь  необходимого программного

обеспечения.

     Проектировщикисистем управления постоянно имеют дело с но-

вейшей аппаратурой, и  часто  вынуждены сами  создавать для нее

программное обеспечение.

.

                                — 2 -

                        РИСОВАНИЕ ЛИНИИ

                     (алгоритм Брезенхема)

     «Несмотряна всю сложность программирования графики, в осно-

ве любой графической функции лежит несколько на удивлениепростых

функций, называемых графическими примитивами.  Такими примитивами

являются прорисовка точек, линий, окружностей, а такжезаполнение

областей и перемещение битовых образов. Многие годы вграфическое

оборудование встраивался тот или иной набор графических примити-

вов. Такой примитив, как рисование линии, особенно широкоисполь-

зуется конструкторскими программами,  а также программами автома-

тизированной разработки.

     У каждойфункции рисования линии есть две важнейшие характе-

ристики. Во-первых, функция должна хорошо приближать то, что она

рисует, к реальной линии. Разрешение компьютера ограничено, поэ-

тому программа может приближать реальную линию толькосериями то-

чек, устанавливаемых в заданном направлении.  Этапоследователь-

ность точек должна создавать хороший зрительный эффект — то,  что

нарисовано, должно быть похоже на линию. Во-вторых,  чтобы быть

полезной, функция рисования линии  должна работать  быстро.  Ми-

ни-компьютеры и большие машины имеют аппаратно встроенныефункции

рисования линии.  Уперсональных же компьютеров аппаратной  под-

держки рисования линии нет.»

                                                     Майкл Абраш

     Появлениеаппаратной поддержки графики в  ПЭВМ  (графические

ускорители, команды MMX).

     Приближениереальной линии набором пикселей. Лестничный эф-

фект.

     АлгоритмБрезенхема:

     Алгоритм идетпо оси,  проекция линии на которую больше(ос-

новной оси),  ипроверяет соседние точки по другой оси,  выбирая

ту, что ближе к реальной линии. Текущая ошибка отклоненияисполь-

зуется как критерий того, что пора менять неосновную координату,

чтобы лучше приблизить реальную линию.

     Для того,чтобы можно было работать только с целыми числами,

избегая вычислений с плавающей запятой, достаточнопромасштабиро-

вать картинку.

     Благодаряиспользованию  только целочисленнойарифметики ал-

горитм Брезенхема является одним из самых простых ибыстрых алго-

ритмов.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                            ЛЕКЦИЯ N8

                     РИСОВАНИЕ ОКРУЖНОСТЕЙ

                    (алгоритм Харденбурга)

     Уравнениеокружности:

     R 52 0 = X 52 0 +Y 52

     С точки зренияпрограммирования  достаточно  рассчитать 1/8

часть окружности -  остальные  точки могут быть получены за счет

симметрии.

     Обычноначинают рисовать из точки,  гдекоордината по основ-

ной оси (по которой приращение больше) равна 0, а понеосновной -

радиусу. Каждая следующая точка получается из формулы:

                  7|\\\\\\\\

     MinorAxis =  7? 0R 52 0 — MajorAxis 52

     гдеR — радиус,

     MinorAxis — координата понеосновной оси,

     MajorAxis — координата по основной оси.

     Недостаток — нужно вычислять квадратный корень  и  использо-

вать арифметику с плавающей запятой. Желательно, однако,работать

только с целочисленной арифметикой.

     Вместовычисления такого выражения для каждой точки  доста-

точно отслеживать текущие значенияMinorAxis 52 0  и  R 52 0 — MajorAxis 52

и декрементируйте один  пиксель  по неосновной оси,  как только

MinorAxis 52 0 становится меньшеR 52 0 — MajorAxis 52 0.

     Ошибканакопления  — не целое число.  Однако никаких проблем

это не создает. Координату по неосновной оси нужноизменять, ког-

да

                     (Y — 0.5) 52 0 > R 52 0 — X 52

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

                              — 2 -

     Однако:

                  (Y — 0.5) 52 0 = Y 52 0 — Y + 0.25

     Разность  Y 52 0 — Y  вычисляется в целых числах,  а 0.25 можно

просто игнорировать, потому что разность R 52 0 — X 52 0, которую мы бу-

дем сравнивать с ошибкой накопления по Y, всегда целоечисло. Ес-

ли R 52 0 — X 52 0 равенY 52 0 — Y,  то на самом делеR 52 0 — X 52 0 меньше ошибки.

Следовательно, неосновную координату нужно менять, когда

                      Y 52 0 — Y  >=  R 52 0 — X 52 0.

     Кроме того,при необходимости можно ускорить вычисления, за-

менив операцию взведения в квадрат (умножения) на сдвиг,сложение

и инкремент (для 486-х и более мощных процессоров такаязамена не

имеетсмысла):

                     (a + 1) 52 0 =a 52 0 + 2a + 1.

<span Courier New";mso-fareast-font-family: Batang;mso-ansi-language:RU;mso-fareast-language:KO;mso-bidi-language:AR-SA">

       ПРИКЛАДНОЕПРОГРАММИРОВАНИЕ В ТЕХНИЧЕСКИХ СИСТЕМАХ

                           ЛЕКЦИЯ N9

                       2РИСОВАНИЕ ЭЛЛИПСОВ

     Современныемикропроцессоры,  используемые  в  персональных

ЭВМ, включают в  себя  быстродействующие  блоки для вычислений с

плавающей запятой. Это позволяет рассчитывать любыеэллипсы.

     Однако ненаклонные  эллипсы можно достаточно быстро прорисо-

вывать, используя только целочисленную  арифметику.  Ненаклонный

эллипс описывается уравнением:

                         x 52 0    y 52

                        ─── + ─── = 1.

                          A 52 0    B 52

     следовательно

                               7|\\\\

                             7/ 0    B 52 0x 52

                      y =   7/ 0B 52 0 — ──── ,

                           7? 0        A 52

     где полученноезначение Y необходимо округлить до ближайшего

целого.

     Так как эллипсимеет две оси симметрии, то вычисления доста-

точно выполнить для оного из четырех квадрантов. Сначаларисуется

дуга, где  основнойосью является X,  затем — дуга,  где основной

осью является Y. Затем полученные точки отображаются на три  ос-

тальных октанта.

     Точка, вкоторой ось перестает быть основной, вычисляется по

формуле

                         B 52 0x 52 0 = A 52 0y 52&n

еще рефераты
Еще работы по программированию, базе данных