Народный учебник по OpenGL
de301fb4

Работа в системе LaTeX

Система компьютерной верстки TeX (произносится "тех") была создана выдающимся американским математиком и программистом Дональдом Кнутом в конце 70-х годов XX века; издательские системы на ее базе по сию пору широко используются и сдавать позиции не собираются. Чем объясняется столь редкое в компьютерном мире долголетие?
На первый взгляд, все свидетельствует против TeX'а. В самом деле, в отличие, допустим, от популярного ныне Microsoft Word'а, TeX не является системой типа WYSIWYG (What You See Is What You Get): чтобы посмотреть, как будет выглядеть на печати набираемый текст, надо запустить отдельную программу. И по структуре файлов TeX несовместим с Word'ом (что не удивительно: эта структура мало изменилась с начала 1980-х годов, когда никакого Word'а не было и в помине, а форматы Word-файлов меняются чуть ли не ежегодно). Наконец, чтобы работать в TeX'е, надо потратить определенное время на его изучение: трудно представить себе книгу под названием "TeX for dummies" ("TeX для болванов").

Предисловие
Настоящее пособие посвящено популярной издательской системе, основанной на TeX'е, — системе LaTeX. Оно пригодится как читателю, которому необходимо по роду своей работы готовить тексты с формулами, так и специалисту по компьютерной верстке. Для чтения значительной части книги никаких познаний в программировании или полиграфии не требуется: достаточен минимальный опыт работы на персональном компьютере в качестве пользователя. Более сложные разделы, сосредоточенные по большей части в конце книги, предназначены в первую очередь для полиграфистов.

Что такое TeX и LaTeX
Как уже отмечалось в предисловии, TeX (произносится "тех", пишется также "TeX") - это созданная американским математиком и программистом Дональдом Кнутом (Donald E. Knuth)- система для верстки текстов с формулами. Сам по себе TеX представляет собой специализированный язык программирования (Кнут не только придумал язык, но и написал для него транслятор, причем таким образом, что он работает совершенно одинаково на самых разных компьютерах), на котором пишутся издательские системы, используемые на практике.

Как набирать формулы
Некоторые из приемов, описываемых здесь, становятся доступными только после подключения специальных стилевых пакетов. Напомним, что слова наподобие "чтобы сделать то-то и то-то, надо подключить стилевые пакеты yweird и queer" означают, что в преамбулу документа следует включить строчку вида \usepackage{weird,queer} Особенно полезны возможности, предоставляемые пакетами amssymb и amsmath, рекомендуем подключать их всегда, если в вашем тексте присутствуют сколько-нибудь сложные формулы.

Специальные типографские знаки
Большинство знаков препинания (точка, запятая, двоеточие и т.п.) набираются очевидным образом: точке в исходном тексте, например, соответствует типографская точка на печати. В этом разделе речь пойдет о знаках, требующих специального набора.

Оформление текста в целом
В этой лекции мы рассмотрим такие вопросы, как общий стиль оформления документа, разбиение текста на разделы, титульный лист, оглавление и пр. Система LaTeX освобождает вас от многих забот об оформлении документа, но при этом и навязывает такие черты оформления, которые могут вас по тем или иным причинам не устраивать. От этого "диктата" можно отчасти отойти, если модифицировать стандартные классы, создав свой стилевой пакет (в последней лекции мы расскажем, как это делать). В принципе можно создать и свой собственный класс, весьма далекий от стандартных, но для этого требуются более глубокие познания в TeX'е, чем дает эта книга.

Псевдорисунки
Когда создавался TeX, а начиналось это в 1978 году, компьютерная графика была развита слабо. Поэтому операция по включению в текст рисунков в виде графических файлов в TeX'е не стандартизирована: TeX допускает импорт графического файла в текст с помощью команды \special, в аргументе которой содержится информация об импортируемом файле, но способ задания этой информации зависит от используемых dvi-драйверов, что снижает переносимость TeX'овских файлов.

Печать текста с выравниванием
При работе на пишущей машинке печать таблиц, состоящих из нескольких колонок, не вызывала особых проблем: все литеры имели одинаковую ширину. Однако полиграфические шрифты (в частности, используемые TeX'ом) являются, как правило, "пропорциональными" (каждая буква имеет свою ширину), и в этом случае добиться выравнивания в колонках сложнее.

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

Текст состоит из блоков
Мы уже отмечали, что в процессе набора TeX не принимает во внимание, как буквы будут выглядеть на печати, а лишь учитывает, сколько места надо отвести на каждый символ. Давайте обсудим этот процесс подробнее. С точки зрения TeX'а, каждая буква представляет собой блок (английский термин: box), т.е. прямоугольник с выделенной точкой отсчета; горизонтальная прямая, проходящая через точку отсчета, называется базисной линией (английский термин: baseline). Блок характеризуется тремя размерами: шириной, высотой и глубиной.

Модификация стандартных классов
Прежде чем двигаться дальше — два предупреждения. В этой лекции мы расскажем вам, как можно довольно сильно изменить стандартное LaTeX'овское оформление: вы научитесь менять по своему усмотрению шрифты в заголовках, интервалы, отделяющие заголовки от текста, и много других подобных вещей. Но вот первое предупреждение: если вы не являетесь профессиональным полиграфистом, применяйте эти познания с осторожностью. Не пытайтесь менять сразу много разных элементов оформления или резко изменять какие-то параметры: лучше осторожно менять только то, что вам действительно нужно

Архитектура TeX'а и LaTeX'а
В этом приложении не содержится никаких практических рецептов. Его цель в том, чтобы читатель, прочитавший основную часть книги, получил общее представление о структуре работающего комплекта TeX'а.

Что такое PostScript?
Если вы когда-либо имели дело со стековыми языками программирования (скажем, с языком FORTH), то догадаетесь, что команда dup удваивает вершину стека, а команда exch меняет местами два верхних элемента. Если же нет, тоже ничего страшного — эти знания нам не пригодятся. Важно лишь понимать, что программа на языке PostScript представляет собой файл, который при исполнении порождает (из одной или нескольких страниц). Этот вовсе не обязан состоять из линий.

Гарнитуры
Если при чтении книжек вы больше интересовались содержанием, чем оформлением, то могли и не заметить, что они набираются разными шрифтами. Здесь мы имеем в виду не шрифтовые выделения (скажем, жирный — или, как сказали бы полиграфисты, полужирный шрифт), а различные рисунки шрифтов. Полиграфисты называют их гарнитурами. Заглянув в выходные данные книги (особенно изданной несколько десятилетий назад), можно найти там слова " Гарнитура обыкновенная новая" или "Литературная гарнитура". Эти слова означают разные рисунки букв; каждая из гарнитур может включать в себя шрифты различных начертаний (прямые, курсивные, полужирные) и размеров.

Классы документов АMS
Американское математическое общество (AMS) распространяет три специализированные класса документов, предназначенные для набора математических текстов: amsart , amsproc и amsbook. Оставляя последний в стороне (уж если Американское математическое общество закажет вам монографию, то, наверное, снабдит и подробными инструкциями), остановимся на особенностях оформления документа "в целом", характерных для первых двух классов.

Пакет Xy-pic
Как мы отмечали вранее, возможностей пакета amscd для печати "коммутативных диаграмм" хватает не всегда: бывают нужны стрелки наклонные, изогнутые и т.д. Для печати таких диаграмм можно воспользоваться стилевым пакетом Xy-pic.

Правда жизни
Прежде всего, не все издательства вообще знают про TeX. В этом случае автор должен принести готовый оригинал-макет в каком-нибудь известном издательству формате. Чаще всего используется формат PostScript. Теоретически такой файл достаточно передать побайтно в фотонаборное устройство или PostScript-принтер, и текст будет напечатан в нужном виде. На практике, однако, возможны осложнения. В одном популярном московском издательстве не только не умели работать с TeX-файлами, но и PostScript-файл умудрились напечатать с непреднамеренным изменением масштаба, причем разным для разных страниц!

Откуда взять TeX?
До сих пор мы старательно уходили от разговора о том, как на практике воспользоваться системой LaTeX, — прежде всего потому, что это зависит от того, какая операционная система установлена на вашем компьютере и какая версия TeX'а выбрана. В этом приложении мы попытаемся сказать что-то более конкретное, имея в виду пользователей разных операционных систем.

Что читать дальше
Во-первых, полезно ознакомиться с книгой LaTeX Companion: в ней приведено описание большого числа разнообразных LaTeX'овских стилевых пакетов плюс некоторые рекомендации по модификации оформления в духе нашей главы 9. Для профессиональных полиграфистов сведения, приведенные в книге (и тем более в нашей книге), важны, но недостаточны: время от времени вы будете сталкиваться с загадочными сообщениями об ошибках или необычным поведением различных стилевых пакетов, не зная, как выправить ситуацию или внести в поведение пакета нужные вам модификации.

Народный учебник по OpenGL

Я начинаю это пособие непосредственного с кода, разбитого на секции, каждая из которых будет подробно комментироваться. Первое, что вы должны сделать - это создать проект в Visual C++. Если это для вас затруднительно, то вам стоит для начала изучить C++, а уже затем переходить к OpenGL.
После того как вы создадите новое приложение в Visual C++, Вам надо будет добавить для сборки проекта библиотеки OpenGL. В меню Project/setting, выберите закладку LINK. В строке "Object/Library Modules" добавьте "OpenGL32.lib GLu32.lib GLaux.lib". Затем кликните по OK. Теперь все готово для создания программы с OpenGL.
Первые четыре строки, которые вы введете, сообщают компилятору какие библиотечные файлы использовать.

Инициализация в Windows
Необходимо инициализировать все переменные, которые будут использованы в вашей программе. Эта программа будет создавать пустое OpenGL окно, поэтому мы не будем нуждаться в большом количестве переменных. То немногое, что мы устанавливаем - очень важно, и будет использоваться в каждой программе с OpenGL, которую вы напишите с использованием этого кода.

Маскирование
Растровый формат изображения поддерживается, наверное, на каждом компьютере, и, скорее всего во всех операционных системах. С ним не только легко работать, но и очень просто загружать и использовать как текстуру. До этого урока мы использовали смешивание, чтобы вывести текст на экран и другие изображения без стирания того, что под текстом или изображением. Это эффективно, но результат не всегда удовлетворительный.

Визуализация моделей Milkshape 3D
В качестве источника этого проекта я взял PortaLib3D, библиотеку, которую я написал, чтобы тем, кто ей пользуется, было легко отображать модели, используя очень маленькую часть дополнительного кода. И хотя вы, конечно, можете доверить все библиотеке, вы должны понимать, что она делает, в этом вам и поможет данный урок.

Основы OpenGL
Начнем с самого главного, установим необходимое программное обеспечение. Я предполагаю, что Windows у Вас уже установлен и работает, в противном случае вы купили не ту книгу. Во-первых, установите MSVisualC++6.0 и jdk113 или выше, если вам интересно узнать о написание java-апплетов с использованием OpenGL. Впрочем java понадобится вам только в седьмой главе. Во-вторых, нам понадобится реализация библиотеки OpenGL

Устанавливаем OpenGL
Вы можете взять библиотеки OpenGL от Silicon Graphics. Инструкция по установке там прилагается. Вам придется скопировать opengl.dll и glu.dll в windows\system и положить opengl.lib, glu.lib в подкатолог Lib, где установлено MSVisualC++. В-третьих, вам понадобятся четыре моих программы-шаблона, которые представляют собой начальный скелет, который мы потом будем наполнять функциональностью



Общие положения
Точки, линии, треугольники,четырехугольники, многоугольники - простые объекты, из которых состоят любые сложные фигуры. В предыдущей главе мы рисовали сферу, конус и тор. OpenGL непосредственно не поддерживает функций для создания таких сложных объектов, т.е. таких функций нет в opengl32.dll.

Построение поверхностей
Существует набор функций для посторения сфер, цилиндров и дисков. Эти функции представляют очень мощный контроль за построением трехмерных объектов. Непосредственно рисовать вы будете, используя следующие функции: gluSphere, gluCylinder, gluDisk и gluPartialDisk. В начале книги вы научились строить трехмерные объекты с помощью функций из библиотеки Auxilary Library.

Работа с изображениями
Существует множество графических форматов - bmp, pcx, gif, jpeg и прочие. OpenGL напрямую не поддерживает не один из них. В OpenGL нет функций чтения/записи графических файлов. Но поддерживается работа с массивами пикселей. Вы загружаете графический файл, используя библиотеки других фирм, в память и работаете с ними средствами OpenGL.

Модель освещения
По умолчанию освещение отключено. Включается оно командой glEnable(GL_LIGHTING). В базовом шаблоне освещение я включил, потому что без освещения работать практически невозможно. Сфера всегда будет показываться как круг, а конус - как круг или треугольник. Если монотонное тело у вас равномерно освещено, то вы не можете увидеть его рельеф.

Консольное приложение - Win32 Console Application
Сначала, я расскажу в общих чертах, что нужно для инициализации библиотеки OpenGL. Далее мы рассмотрим несколько частных реализаций в среде Windows, Linux и межплатформенный вариант для Java. Для программирования графики в OpenGL вы должны иметь контекст воспроизведения. Это что-то типа контекста устройства в Windows или же магического адреса 0xA000 для графического или же 0xB800 для текстого режима MSDOS.

Вращение сцены
Когда построена сцена, наложены текстуры, включены источники света, присутствует анимация, кажеться, что больше и желать нечего. Однако, вы наблюдаете сцену, все время из одной точки. Вы не видете ее с обратной стороны. Было бы интересно иметь возможность управлять положением камеры или вращать всю сцену целиком. На производительности это никак не скажется, т.к. каждый кадр рассчитывается заново

Где взять OpenGL и другое ПО
Здесь я перечислю необходимый инструментарий для работы с книгой, и где его можно раздобыть. По минимуму вам нужен сишный компилятор и библиотека OpenGL. Основная масса примеров рассматриваются с привязкой MSVisualC++6.0, однако вы можете использовать любой другой, например фирмы Inprise, в прошлом Borland.

Open GL - статьи
Современный мир уже немыслим без трехмерной графики - в том числе интерактивной. В свое время было предпринято множество попыток создать универсальный язык описания трехмерных сцен. Самой удачной оказалась попытка компании Silicon Graphics - ее язык OpenGL получил всемирное признание

OpenBSD - статьи

Начиная с версии 2.5, появилась возможность использования OpenBSD в качестве Ethernet Bridge. Использование функции Bridge позволяет объединить несколько сегментов Ethernet в один логический сегмент. При этом допустимо использование правил фильтрации pf/ipf, что позволяет превратить OpenBSD в прозрачный IP фильтр.
Чтобы настроить OpenBSD в качестве Ethernet Bridge, нужно выполнить следующие шаги:
1. Сконфигурировать ядро OpenBSD, включив в него псевдо-устройство "bridge". Файл конфигурации ядра должен содержать строку "pseudo-device bridge 1". Вместо числа 1 нужно подставить количество предполагаемых логических сегментов.
2. Создать файл конфигурации /etc/bridgename.bridge0, содержащий команды конфигурации Bridge, например:
add rl0 add fxp0 up
В данном случае мы объявляем интерфейсы fxp0 и rl0 одним логическим Ethernet сегментом. Подробнее о командах конфигурирования Bridge можно прочитать в . При использовании нескольких логических сегментов, следует создать файл конфигурации для каждого псевдоустройства bridge.

Настройка Ethernet Bridge
Сконфигурировать ядро OpenBSD, включив в него псевдо-устройство "bridge". Файл конфигурации ядра должен содержать строку "pseudo-device bridge 1". Вместо числа /b> нужно подставить количество предполагаемых логических сегментов. Создать файл конфигурации /etc/bridgename.bridge0, содержащий команды конфигурации Bridge

Русификация OpenBSD
Русская раскладка была добавлена после выхода 2.9, поэтому для набора текста в 2.9, вам необходим этот скрипт (пример его использования см. ниже). В случае если у вас OpenBSD 3.0 или новее, добавьте в файл /etc/kbdtype раскладку вашей клавиатуры. Если вы указали тип раскладки при установке системы раскладка уже должна стоять правильно.

Примеры использования IPF
Для обозначения пpопуска или блокиpовки пакета используются ключевые слова, соответственно, pass или block. Ключевые слова in и out используются для обозначения напpавления, в котоpом пакет проходит через интеpфейс: # # блокиpовать все пакеты block in all block out all # # пpопускать пакеты от firewall в любом направлении pass in from firewall to any

OpenBSD - заметки конечного пользователя
Актуализированное примечание: цикл этот был написан довольно давно - около 2 лет назад и опубликован на сайте (где, впрочем, из-за хронического редизайна не всегда доступен). Однако с точки зрения конечного пользователя (я не говорю о внутреннем устройстве) OpenBSD за это время не очень изменилась. И потому полагаю, что актуальность данных заметок не вполне утрачена. Тем более, что более полных русскоязычных материалов по теме к настоящему времени так и не появилось. Ныне эти заметки подверглись лишь незначительной редактуре (в основном литературной правке).