Главная > Принципы программирования в машинной графике
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

4.4. ПРОГРАММА ДЛЯ ВЫЧЕРЧИВАНИЯ КУБА

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

ограниченного количества входных данных, иногда называемых параметрами.

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

1) три сферические координаты (см. рис. 4.3):

расстояние до точки наблюдения ,

— угол в горизонтальном направлении от оси х,

— угол, измеренный по вертикали от оси

2) расстояние между экраном и точкой наблюдения.

Точка О начала системы мировых координат выбирается в центре куба, как показано на рис. 4.15. Длина каждого ребра

Рис. 4.15. Куб и система мировых координат

обозначается через следовательно, Тогда восемь вершин куба будут иметь следующие координаты:

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

(см. скан)

(см. скан)

(см. скан)

Программа в результате своей работы выдала изображения кубов, показанные на рис. 4.16. Заметим, что на второй картинке взгляд направлен снизу куба, а на третьей картинке оказалось, что стороны и диагонали лежат на одной прямой. Было бы гораздо интереснее, если бы можно было вычертить изображение сплошного тела, а не его проволочную модель. Это задача главы 5, в которой описывается алгоритм, позволяющий определить видимость отрезков прямых линий из заданной точки наблюдения. Однако если применить некоторые меры предосторожности при задании точки наблюдения, то можно вычертить изображения не очень сложных объектов с последующим ручным удалением невидимых линий. Для изображения на рис. 4.15 выбрана такая точка наблюдения, что видны только грани должны быть удалены. Это сделано путем удаления из программы CUBE трех программных строк, предшествующих обращению к функции Таким же образом модифицированная версия программы CUBE была фактически использована для получения рис. где были заданы значенияр и рис. при значенияхр

Рис. 4.16. Кубы, видимые из различных точек

1
Оглавление
email@scask.ru