Главная > Разное > Принципы программирования в машинной графике
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

Глава 6. ПРАКТИЧЕСКИЕ ПРИМЕРЫ

6.1. ВВЕДЕНИЕ

Программа HIDL1NPX - это программа общего назначения для вычерчивания объектов в перспективе. Однако, несмотря на те хорошие возможности, которые она обеспечивает по сравнению со своей предшественницей еще требуется провести довольно большую работу по подготовке входного файла. Эта задача может быть упрощена двумя путями. Во-первых, существуют различные устройства для графического ввода (см. книгу Ньюмена и Спрула, 1979). Эту сторону здесь обсуждать не будем, а ограничимся рассмотрением приборно-независимого программного обеспечения. Во-вторых, можно обнаружить, что многие объекты обладают некоторой степенью регулярности, что позволяет автоматически подготавливать требуемый файл. Программы для этой цели должны выполняться перед запуском на выполнение основной программы, поэтому иногда они называются препроцессорами. В этой главе обсудим несколько примеров таких программ. Все они генерируют файл, который должен читаться программой HIDLINРХ. Как и в параграфе 5.4, этот файл имеет следующую структуру:

Замечания

1. В любом месте файла можно вставлять комментарии между круглыми скобками

2. После ключевого слова Faces номера вершин каждого полигона задаются в порядке обхода против часовой стрелки. Непосредственно за последним номером вершины каждого полигона следует символ

3. Если после слова Faces последовательность содержит только два номера вершин, то это означает необходимость вычерчивания отдельного отрезка прямой линии (если только он виден), что дает возможность вычерчивать отрезки прямых линий, не входящие в состав ребер объекта.

4. Если грань содержит отверстие, то она трансформируется в полигон введением искусственного фиктивного ребра. Это ребро не вычерчивается, если номер его второго конца задан отрицательным. Например, на Рис. 6.1 внутренний прямоугольник обозначает отверстие, тогда мы можем ввести фиктивное ребро 2 -6 и описать полигон как

Заметим, что если обходить эти ребра именно в этом порядке и смотреть на следующую вершину, то описываемая область всегда находится слева по ходу. Это означает, что вершины отверстия должны обходиться по часовой стрелке, а не против.

Начертим картинку, которая является логическим продолжением примера параграфа 5.5. Вместо одной объемной буквы А

Рис. 6.1. Отверстие в прямоугольнике

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

(см. скан)

(см. скан)

Для понимания этой программы можно также обратиться к параграфу 5.4, где описан входной файл для вычерчивания одиночной буквы А. Теперь вместо него задаются строки вида

в возрастающем порядке номеров вершин, хотя порядок их перечисления никак не влияет на вычисления. Чтобы избежать многократных обращений к функции введены функции Они, в свою очередь, обращаются к функции которая обеспечивает приращение исходных номеров вершин на при определении буквы. Очевидно, что сложение заменяется вычитанием, если номер вершины задан отрицательным.

Если пустим эту программу на выполнение и зададим число 20 для определения количества букв, а также 700,80,80 для сферических координат точки наблюдения Е, то получим довольно объемистый файл Выполнение программы HIDLINPX с этим файлом дает результат, показанный на рис. 6.2. Время вычислений на компьютере типа составило около 17 с.

Рис. 62. Результат совместной работы программ

<< Предыдущий параграф Следующий параграф >>
Оглавление