Главная » Статьи для тега "процедуры"

Анимация на плоскости Free Pascal

Добавлено Дата: 4 August, 2014 категория: Free Pascal

Вращающийся квадрат — один из самых простых примеров анимации. При описании пакета OpenGL к подобной иллюстрации прибегают столь же часто, как и к программе "Общего привета" ("Hello, world!"). Больше других нам понравилась реализация вращения квадрата,  написанная  на  языке  C  и  приведенная  в  книге Э. Эйнджела "Интерактивная компьютерная графика" [36]. В этом примере, с од- ной стороны, демонстрируется управление вращением с помощью кнопок мыши (левая кнопка запускает вращение, правая — останавливает). С другой стороны, здесь появилась возможность разумного использования времени ожидания сооб- щения, адресованного какому-нибудь из обработчиков событий. Вместо пустого повторения главного цикла приложение может получить управление и использо- вать время "простоя" для выполнения каких-то вычислений или подготовки ин- формации для отображения следующей сцены. Адрес такой процедуры, преду- смотренной в приложении, регистрируется в GLUT с помощью подпрограммы glutIdleFunc. Объем нашей модификации примерно на 10% меньше по сравнению с программой Эйнджела.

Читать »

Окно вывода Free Pascal

Добавлено Дата: 4 August, 2014 категория: Free Pascal

По умолчанию программа может использовать для вывода результатов всю ра- бочую площадь окна консольного приложения — 25 строк по 80 символов в стро- ке. Чтобы убедиться в этом, можно воспользоваться программой из листинга 12.1.

   Листинг 12.1. Программа  MaxWindow                                           

Читать »

Управление точками и фрагментами графического экрана Free Pascal

Добавлено Дата: 23 July, 2014 категория: Free Pascal

Каждая точка на графическом экране (пиксел) характеризуется координатами (x, y) и кодом цветности. Программа имеет возможность узнать или изменить код цветности любого пиксела:

var

col: Word;

x, y: SmallInt;

Читать »

Закраска и заполнение замкнутых областей Free Pascal

Добавлено Дата: 20 July, 2014 категория: Free Pascal

В этом разделе речь пойдет о закрашивании замкнутых областей любым цветом или их заполнение фиксированным цветным узором — шаблоном заливки. Шаблон заливки задается массивом 8 8 бит, где каждый единичный разряд окрашивается указанным цветом, а каждый нулевой разряд — цветом фона. Представьте себе, что весь графический экран покрыт такими узорными квадратиками, примыкающими друг к другу по горизонтали и вертикали. Наложим на этот узор контур замкнутой области, и та часть узора, которая ограничена контуром, используется для окраски внутренней или внешней части нашей фигуры. Если шаблон заполнен только еди- ничными разрядами, то закраска ведется сплошным цветом. Наличие единичных разрядов только в отдельных строках шаблона (например, хотя бы в одной) приво- дит к горизонтальной штриховке области. Варьирование комбинаций нулей и еди- ниц в шаблоне позволяет создавать довольно много различных узоров — до 32  63.

Читать »

Формирование надписей в области рисования Free Pascal

Добавлено Дата: 18 July, 2014 категория: Free Pascal

В пакете GLUT предусмотрены довольно скромные возможности для нанесе- ния подписей в области рисования. Во-первых, мы можем установить цвет симво- лов и начальную позицию подписи (координаты левого нижнего угла первого сим- вола):

glColor3f(vr, vg, vb); glRasterPos2f(x, y);

Читать »

Выполнение программы Free Pascal

Добавлено Дата: 17 July, 2014 категория: Free Pascal
 

Откомпилированная программа может быть запущена из IDE. Это можно сде- лать одним из следующих способов:

± выполнить команду меню Run ® Run;

± нажать комбинацию клавиш <Ctrl>+<F9>.

Если программе должны быть переданы параметры командной строки, то для этого надо выполнить команду меню Run ® Parameters. Диалоговое окно по за- данию параметров командной строки представлено на рис. 3.9.

Читать »

Построение простейшего трехмерного изображения Free Pascal

Добавлено Дата: 3 July, 2014 категория: Free Pascal

Приведенная в листинге 16.5 программа Cube_1.pas воспроизводит на экране изображение разноцветного куба средствами библиотеки OpenGL. Массив Points задает координаты вершин куба. Каждой вершине присвоен индивидуальный цвет (массив Colors). Вдоль каждого ребра по умолчанию производится линейная ин- терполяция цветовых характеристик смежных вершин, и полученные цвета таким же образом распространяются на внутренние точки граней.

Читать »

Тексты на графическом экране Free Pascal

Добавлено Дата: 18 June, 2014 категория: Free Pascal

Сопровождение изображения пояснительными подписями на графическом экране расширяет возможности программы по представлению результатов работы. В BGI-графике для этой цели используются две процедуры:

OutText(msg); OutTextXY(x, y, msg);

В первом случае положение строкового сообщения msg зависит от позиции те- кущей точки (графического курсора). Во втором случае точка привязки текста за- висит от координат указанной точки (x, y). Любой шрифт, который можно исполь- зовать при формировании подписей, обладает такими характеристиками как высота и ширина заглавных символов. Если они одинаковы для любых символов алфавита, то шрифт принято называть моноширинным. Например, тексты программ в поле редактора FP набираются моноширинным шрифтом. Если ширины разных букв отличаются друг от друга, то такой шрифт называют пропорциональным. Приме- ром такого шрифта является Times New Roman, которым набрана эта книга. Высота строчных букв составляет примерно 2/3 от высоты прописных букв.

Читать »

Анимация в пространстве Free Pascal

Добавлено Дата: 14 June, 2014 категория: Free Pascal

Следующий пример по логике анимации ничем не отличается от вращающего- ся квадрата. Однако в нем использованы более сложные объекты — сплошной куб, каркас куба (проволочная модель), сплошная сфера, расположенная внутри куба и слегка выпирающая за его границы, и проволочный каркас сферы (листинг 16.8).

Читать »

Системы координат OpenGL Free Pascal

Добавлено Дата: 10 June, 2014 категория: Free Pascal

Процедуры OpenGL используют, как правило, пространственную систему ко- ординат, представленную на рис. 16.1. Ось z в ней направлена в сторону наблюда- теля. Вспомните об идее Z-буфера, когда точка, имеющая большую координату Z, заслоняет точку с меньшей координатой Z. Именно так решается проблема удале- ния невидимых участков при отображении пространственной сцены на плоскость экрана. Диапазон изменения любой пространственной координаты — от –1 до +1. Если реальные размеры конструируемых фигур не попадают в указанный интервал, можно воспользоваться различными способами проецирования объекта, его пере- мещением в пространстве или масштабированием.

Читать »

Параметры подпрограмм — двумерные массивы Free Pascal

Добавлено Дата: 24 May, 2014 категория: Free Pascal

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

Процедура mat_add1 выполняет сложение двух квадратных матриц в традици- онном стиле ранних версий Паскаля (листинг 9.5).

   Листинг 9 .5 .  Процедура  mat_add1                                             

Читать »

Начальные установки системы GLUT OpenGL Free Pascal

Добавлено Дата: 18 May, 2014 категория: Free Pascal

Большинство руководств, методических пособий и опубликованных книг, так или иначе связанных с OpenGL, рекомендуют начинать пролог с обращения к про- цедуре glutInit, передавая ей адреса двух аргументов — счетчика параметров ко-

мандной строки (@argc) и указателя на строку, содержащую все параметры, вклю- чая и имя запускаемого приложения (@argv). В одном из таких руководств, разме- щенных на сайте Wikipedia, даже приводится пример процедуры на Паскале, из- влекающей нужные данные из командной строки и передающей их процедуре инициализации системы GLUT (листинг 16.1).

Читать »

Подпрограммы — процедуры и функции Free Pascal

Добавлено Дата: 13 May, 2014 категория: Free Pascal

Подпрограммы — один из наиболее ранних приемов автоматизации про- граммирования. Если алгоритм решения задачи содержит фрагменты, которые могут быть использованы не один раз в нескольких местах программы, то такие фрагменты можно выделить в программные единицы (процедуры или функции). Обращение к однажды написанному фрагменту программы с заданием новых входных данных (параметров программной единицы) позволяет существенно с о- кратить общий объем программы. Хорошо отработанный фрагмент типового ал- горитма может оказаться полезным и при решении других задач. Его можно ав- тономно протранслировать и включить в состав библиотеки подпрограмм, которые по мере надобности могут вызываться вашей программой и использо- ваться наравне с системными функциями и процедурами. По идеологии Паскаля библиотеки подпрограмм оформляются в виде модулей — файлов с расширением tpu (от Turbo Pascal Unit).

Читать »

Быстрая сортировка Free Pascal

Добавлено Дата: 3 May, 2014 категория: Free Pascal

В 1962 г. известный математик Хоар (C. A. R. Hoare) опубликовал алгоритм сортировки, за которым закрепилось название quicksort. Идея этого алгоритма удивительно проста. Сначала выбирается "средний" элемент в сортируемом масси- ве. Все, что больше этого элемента, переносится в правую часть массива, а все, что меньше, — в левую. После первого шага "средний" элемент оказывается на своем месте. Затем аналогичная процедура повторяется для каждой половины массива. На каждом последующем шаге размер обрабатываемого фрагмента массива уменьшается вдвое. Количество операций, которое требуется, в среднем, для реа-

Читать »

Переопределение функций Free Pascal

Добавлено Дата: 27 April, 2014 категория: Free Pascal

Одной из принципиально новых особенностей, характерных для объектно- ориентированного подхода, является возможность объявления в программе не- скольких функций или процедур с одинаковыми именами. К ним предъявляется единственное требование — списки их формальных параметров должны отличать- ся друг от друга. Это отличие может касаться как количества параметров, так и их типов. По этим критериям компилятор сможет, проанализировав каждое обраще- ние, выбрать требуемую подпрограмму.

Читать »