Методическое пособие Базовые алгоритмы графики Куров А.В.. 3. базовые алгоритмы растровой графики понятие базовых алгоритмов. Требования, предъявляемые к алгоритмам в настоящее время в составе языков высокого уровня имеются библиотеки, позволяющие работать в графическом режиме
Скачать 26 Kb.
|
3. БАЗОВЫЕ АЛГОРИТМЫ РАСТРОВОЙ ГРАФИКИ ПОНЯТИЕ БАЗОВЫХ АЛГОРИТМОВ. ТРЕБОВАНИЯ, ПРЕДЪЯВЛЯЕМЫЕ К АЛГОРИТМАМ В настоящее время в составе языков высокого уровня имеются библиотеки, позволяющие работать в графическом режиме. В составе таких библиотек, как правило, имеются подпрограммы, позволяющие выводить на экране точки, отрезки, многоугольники, окружности, эллипсы, осуществлять закраску сплошных областей. Используя эти подпрограммы, можно построить различные двумерные, а также более сложные трехмерные изображения. Построение таких изображений требует, в свою очередь, разработки соответствующих алгоритмов. Широко используемые при построении двумерных и трехмерных изображений подпрограммы вывода элементарных геометрических объектов основываются также на специальных алгоритмах. Таким образом, можно построить иерархию алгоритмов, используемых в машинной графике. Алгоритмы построения отрезков, плоских кривых, закраски сплошных областей, которые реализуются часто в графических библиотеках языков высокого уровня, будем называть алгоритмами низкого уровня или базовыми алгоритмами машинной графики. Алгоритмы, позволяющие выводить плоские изображения (статические, динамические), назовем алгоритмами среднего уровня. Наконец, алгоритмы построения трехмерных изображений (в первую очередь алгоритмы удаления невидимых линий и поверхностей) назовем алгоритмами верхнего уровня. Базовые алгоритмы машинной графики представляют интерес для специалистов в области программного обеспечения, в частности для лиц, занимающихся машинной графикой. Поэтому их изучение включено в программу соответствующей дисциплины. Для большинства же пользователей, в том числе и студентов, обучающихся по специальностям, не связанным с программированием напрямую, интерес будут представлять алгоритмы среднего и высокого уровня. Приступая к рассмотрению базовых алгоритмов, целесообразно сформулировать самые общие требования, предъявляемые к ним. Прежде всего, генерируемые изображения должны выглядеть как исходные геометрические объекты, т.е. отрезки прямых должны выглядеть прямыми, окружности, эллипсы соответственно как окружности и эллипсы и т.д. Яркость отдельных пикселов, образующих то или иное изображение, должна оставаться постоянной. Рисование должно осуществляться быстро. Однако даже эти наиболее общие требования не всегда могут быть выполнены. Сама природа растрового дисплея не позволяет удовлетворить первому требованию. Так нельзя высветить абсолютно прямые отрезки (за исключением ряда частных случаев), окружность, эллипс, полностью совпадающие с идеальными окружностью, эллипсом. Это связано с тем, что, по сути, аналоговую величину мы заменяем дискретной величиной. Увеличивая разрешающую способность дисплея, можно получить хорошую аппроксимацию, но принципиально получить отрезки, окружности и другие фигуры, полностью совпадающие с их прототипами, принципиально невозможно. Достижение одинаковой яркости вдоль всего отрезка или кривой связано с учетом расстояния между соседними пикселами, аппроксимирующими отрезок или кривую, и высвечиванием соседних пикселов с разной яркостью, зависящей от расстояния между этими пикселами. Поскольку это требует выполнения дополнительных операций (причем таких достаточно длинных как извлечение квадратного корня), то приходится идти на отказ от удовлетворения этому требованию для обеспечения достаточно высокой скорости вывода изображения. Требование обеспечения высокой скорости вывода объясняется большим количеством элементарных геометрических объектов, образующих плоские и тем более трехмерные изображения, стремлением получать динамические изображения в реальном масштабе времени, сложностью и, следовательно, большим количеством операций при реализации алгоритмов трехмерной графики и построения реалистических изображений. Все это приводит к тому, что базовые алгоритмы должны обладать высоким быстродействием. Это требование удовлетворяется путем уменьшения количества вычислений, использованием целочисленной арифметики, реализацией алгоритмов на аппаратном или микропрограммном уровне. |