Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
4.5. ВЫЧЕРЧИВАНИЕ ПРОВОЛОЧНЫХ МОДЕЛЕЙРассмотрим программу, которая может вычертить перспективное изображение любой проволочной модели, образованной из конечного числа отрезков прямых линий. Опуская определенные отрезки прямых линий, можно выполнить картинки для простых сплошных тел, что уже было показано для куба в параграфе 4.4. Как и ранее, будем использовать точку наблюдения Е и “объектную точку” О, которые определяют направление наблюдения. Конечно, для пользователя не всегда удобно, чтобы точка О совпадала с началом системы мировых координат. Поэтому будем требовать только, чтобы пользовательская ось z располагалась вертикально. Пользователь должен задать координаты
Затем пользователь должен определить сферические координаты
которые также уже применялись ранее в файле
Правая часть каждой строки является комментарием, ее наличие во входном файле не влияет на работу программы. Перед представлением программы рассмотрим пример полного набора входных данных. Обратимся к рис. 4.10, который совсем не тривиален. Если вычерчивать этот рисунок вручную, то возникает проблема определения положения точки М на прямой линии
Рис. 4.17. Вид с положительной полуоси х
Для параметра Программа будет считывать данные из файла, имя которого задается в качестве аргумента программы. При имени программы GPERS и имени файла
вместо ввода только имени GPERS в качестве команды для начала выполнения программы. Программа с аргументами содержит строку
в начале главной функции
Рис. 4.18. Пример работы программы GPERS
Видовые и перспективные преобразования выполняются так же, как в программе CUBE в параграфе 4.4: (см. скан) (см. скан) Функция fscanf принимает неположительное значение, когда попытка чтения данных терпит неудачу, то есть когда достигается конец файла. Поэтому цикл чтения продолжается до тех пор, пока функция fscanf возвращает положительное значение. Пользователь программы GPERS должен задать расстояние до экрана. По нескольким причинам такое решение неудовлетворительно: 1. Пользователю важен размер картинки, а не расстояние до экрана. 2. Параметр “размер_объекта” в формуле (4.14) имеет очень неопределенный смысл, поэтому трудно вычислить точное значение для параметра 3. Иногда желательно определить прямоугольную область вывода, занимающую лишь часть экрана, в которую картинка должна быть вписана целиком. В этом случае было бы очень неудобно преобразовывать размеры области вывода в расстояние до экрана. Есть несколько способов улучшения программ в этих направлениях, а именно: 1. Отсечение трехмерного объекта по пирамиде, вершина которой совпадает с точкой наблюдения Е, а основанием является определенное окно, заданное в мировых координатах. Описание такого способа, который здесь применяться не будет, можно найти в книге Ньюмена и Спрула (1979). 2. Отсечение картинки в двухмерном пространстве по заданной области вывода. Этот способ также не будем применять. 3. Автоматический подбор размера и позиции таким образом, чтобы картинка целиком входила в заданную область вывода. Этот способ мы уже применяли для двухмерных объектов в параграфе 2.6, где программа GENPLOT действовала в качестве постпроцессора. Эту же программу можно использовать и в данном случае. Более того, мы сможем воспользоваться последними тринадцатью строками программы Будем применять третий способ, используя два файла и две программы, как показано на рис. 4.19. В программе GPERSF значение Следующая программа GPERSF воспринимает тот же самый входной файл, как и программа
Рис. 4.19. Блок-сжема программ (см. скан) (см. скан) Функция perspect в этой программе была получена на основе функции perspective из предыдущих программ CUBE и GPERS путем подстановки
|
1 |
Оглавление
|