Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 5.4. Рисование точки в позиции (х,у).

Листинг 4.1. Программа, рисующая точки (POINTY.C). | Листинг 4.2. Программа, рисующая линии (LINER.С). | Листинг 4.4. Структуры данных для задания вершин объектов. | Листинг 4.5. Описание астероида. | Листинг 4.6. Масштабирование астероида. | Листинг 4.7. Вращение объекта. | Листинг 4.8. Программа, которая рисует поле астероидов (FIELD.С). | Листинг 4.9. Определение и умножение двух матриц. | Листинг 4.11. Супер Астероиды (FIELD.C). | СЕКРЕТЫ VGA-КАРТ |


Читайте также:
  1. Puc. 2. Позиции ног и рук
  2. TOUR С IV ПОЗИЦИИ
  3. TOUR С V ПОЗИЦИИ
  4. Аксиома позиции 1 Наша позиция определяет наш подход к жизни
  5. Аксиома позиции 2 Наша позиция определяет нашу связь с людьми
  6. Аксиома позиции 3 Часто позиция является единственной гранью между успехом и неудачей
  7. Аксиома позиции 5 Наша позиция может превратить проблемы в благословения

void Plot_Pixel(int x, int у, unsigned char color)

{

// эта функция отображает точку выбранного цвета. Каждая строка

// занимает 320 байт, поэтому для вычисления адреса надо умножить Y

// на 320 и прибавить значение Х

video_buffer[y*320+x]=color;

} // конец функции

Итак, рисование точки довольно просто. Я думал, все окажется сложнее, и поэтому так много написал об этом, но то, что мы использовали режим 13h, значительно упростило дело. Функция Plot_Pixel получилась простой, это всего одна строка кода. Тем не менее, давайте попробуем ее оптимизировать.

В книге есть целая глава, посвященная оптимизации, но эта единственная строка, содержащая операцию умножения, меня сводит с ума. Давайте избавимся от умножения. Кстати, возьмем за правило избегать операций умножения и вообще, откажемся от действий с плавающей запятой. Итак, посмотрим, что мы можем сделать с вычислением у х 320?

Вспомним, что мы используем двоичную арифметику и все числа в ПК также представлены в двоичном виде. Если вы берете двоичное число и сдвигаете его влево или вправо, это аналогично его умножению или делению на два.

Рисунок 5.3 поясняет это.

Поскольку операция сдвига выполняется примерно в 2-10 раз быстрее, чем умножение, то мы получим быстрые функции для рисования. Единственная сложность состоит в том, что число 320 — это не степень двух, но чтобы выйти из положения, мы применим маленькую хитрость. Представим выражение 320 х у, как 256 х, у + 64 х у. Листинг 5.5 показывает код для быстрого рисования точки.


Дата добавления: 2015-07-12; просмотров: 100 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 5.3. Создание новой цветовой палитры.| Листинг 5.5. Программа быстрого рисования точки.

mybiblioteka.su - 2015-2024 год. (0.007 сек.)