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

Рисование эллипсов

Современные микропроцессоры, используемые в персональных ЭВМ, включают в себя быстродействующие блоки для вычислений с плавающей запятой. Это позволяет рассчитывать любые эллипсы.

Однако ненаклонные эллипсы можно достаточно быстро прорисо­вывать, используя только целочисленную арифметику. Ненаклонный эллипс описывается уравнением:

x2 y2

--- + --- = 1.

A2 B2

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

|\\\\\\\\

/ B2x2

y = / B2 - ---- ,

? A2

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

Так как эллипс имеет две оси симметрии, то вычисления доста­точно выполнить для оного из четырех квадрантов. Сначала рисуется дуга, где основной осью является X, затем - дуга, где основной осью является Y. Затем полученные точки отображаются на три ос­тальных октанта.

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

B2x2 = A2y2 .

ПРЯМАЯ РАБОТА С ПАМЯТЬЮ В СОВРЕМЕННЫХ ВИДЕОКОНТРОЛЛЕРАХ

Вообще говоря, изобилие видеорежимов является результатом несогласованной и непродуманной технической и маркетинговой поли­тики фирм-изготовителей аппаратуры. Фирмы просто не смогли вовре­мя выработать общий стандарт, что и породило хаос.

Само по себе использование данных ПЗУ видеокарты для прог­раммирования режимов работы той же карты является грубым техни­ческим просчетом - гораздо рациональнее было бы возложить проце­дуру переключения режимов не на основной процессор, а на собс­твенный процессор видеокарты.

Кроме того, со времени разработки первых видеокарт для IBM PC в конструкции видеокарт сохранилось множество нелепых анахро­низмов, что делает невозможным прямое управление работой видео­карты на аппаратном уровне.

Для обеспечения нормальной работы видеокарты в режимах SVGA встроенная в карту микросхема видео-BIOS должна соответствовать стандарту VESA v2.0 или более позднему. Ранние версии стандарта VESA не поддерживали режимы True Color и прямую адресацию видео­памяти.

Установка видеорежима

Видеорежим устанавливается вызовом прерывания 10h с номером функции 4F02h. В регистр BX нужно код видеорежима:

100h - 640x400 256 цв.,

101h - 640x480 256 цв.,

103h - 800x600 256 цв.,

105h - 1024x768 256 цв.,

107h - 1280x1024 256 цв.,

112h - 640x480 TrueColor,

115h - 800x600 TrueColor,

118h - 1024x768 TrueColor,

11Bh - 1280x1024 TrueColor.

Например, нужно установить режим 640x480 TrueColor:

mov AX,4F02h

mov BX,112h

int 10h

Выбор окна видеопамяти

Вследствие ошибки, допущенной еще при разработке процессора Intel 8086, вся размещенная на видеокарте память оказалась разде­ленной на кусочки размером по 64 кб - так называемые "окна" или "страницы". Процессору в каждый момент времени доступно только одно такое окно, и для доступа к другому требуется вызвать прог­рамму видео-BIOS, переключающую окна (на аппаратном уровне такое переключение выполнить сложно - видеокарты разных фирм используют для этого регистры с разными номерами).

Например, в режиме TrueColor 640x480 при четырехбайтовой ко­дировке цвета точки одному кадру соответствует 1228800 байт памя­ти, или 18,75 страниц по 64 кб.

Переключение номера активного (доступного процессору) окна выполняется вызовом прерывания 10h с номером функции 4F05h. В ре­гистр BH нужно записать 0, в регистр DX - номер окна. Само окно будет размещено по адресу A0000h.

Например, нужно обратиться к данным в девятом окне:

mov AX,A000h

mov ES,AX

mov AX,4F05h

mov BH,0

mov DX,9

int 10h

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]