Конспект 4-3 (Конспект лекций)

2017-06-07СтудИзба

Описание файла

Файл "Конспект 4-3" внутри архива находится в папке "Конспект лекций". Документ из архива "Конспект лекций", который расположен в категории "". Всё это находится в предмете "инженерная графика" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "компьютерная рафика" в общих файлах.

Онлайн просмотр документа "Конспект 4-3"

Текст из документа "Конспект 4-3"

Т
огда точки плоскости X = 0 разбиваются на три класса:

  • точки Z > 0, которые имеют 2 прообраза на поверхности,

  • точки на оси Oy, которые имеют 1 прообраз на поверхности,

  • точки, у которых нет прообразов на поверхности.

Такая особенность проецирования (или вид поверхности) называется складкой.

3. Поверхность, заданная уравнением

Z = X3 + XY или X3 + XY- Z = 0 (см. рис. 45)



Нормальный вектор

N = ( 3 X2 + Y, X, -1 )

скалярное произведение

( N, L ) = 3X2 + Y.

Исходя из уравнения

3 X2 + Y = 0

находим на поверхности кривую, вдоль которой вектора N и L ортогональны. Это полукубическая парабола

27 Z2 = - 4Y3,

которая на плоскости X = 0 делит точки на три класса:

  • точки, имеющие 1 прообраз на поверхности,

  • точки на параболе, которые имеют 2 прообраза на поверхности,

  • точки внутри острия, имеющие 3 прообраза на поверхности.

Эта особенность проецирования называется сборкой.

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

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

Алгоритмы компьютерной графики

РАСТРОВЫЕ АЛГОРИТМЫ

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

Рассмотрим графическую библиотеку компилятора Borland C++, которая содержит все необходимые файлы для работы с графикой.

Для инициализации библиотеки служит функция

v
oid far initgraph(int_far*driver, int_far*mode, char_far*path)

где *driver – задает тип адаптера,

*mode – определяет режим, например,



*path – имя каталога, где находится драйвер адаптера (файл типа BGI – Borland Graphics Interface).

Функция graphresult возвращает код завершения предыдущей графической операции

int far graphresult (void)

Любая графическая библиотека (в том числе и рассматриваемая) содержит модули для реализации основных графических объектов:

  • линейные изображения (отрезки прямых, дуги окружностей, дуги эллипсов),

  • сплошные объекты, т.е. растровые образы двумерных областей (круг, прямоугольник, эллипс),

  • шрифты,

  • изображения, т.е. прямоугольные матрицы пикселей, независимо от содержания.

Эти объекты называются также графическими примитивами.

Библиотека Borland C++ содержится в файле graphics.h. Примеры функций графики из этой библиотеки приведены в табл.6.

Общий вид вызова функции:

{имя} ( {параметры} )

Таблица 6

Вызов

Выполняемая функция

Примечания

Для рисования линейных изображений

clearviewport(void)

очистка экрана

putpixel(x,y)

ставит точку заданного цвета

x,y – координаты точки,

Col – номер цвета

getpixel(x,y)

возвращает цвет точки

setcolor(Col)

устанавливает цвет пера

line(x1,y1,x2,y2)

линия

x1,y1 – координаты начала, x2,y2 – координаты конца

circle(x,y,r)

окружность

x,y – координаты центра,

r – радиус

arc(x,y,N,K,r)

дуга окружности

N,K –начало и конец дуги в градусах против часовой стрелки

ellipse(x,y,N,K,rx,ry)

дуга эллипса

rx, ry –радиусы по Ox и Oy

Для двумерных областей (закраска)

setfillstyle(Pat,Col)

задание кисти

 используются совместно

setfillpattern(Pat,Col)

пользователь-ский шаблон кисти

bar(x1,y1,x2,y2)

закраска прямоугольни-ка

x1,y1 – коорд. верхнего лево-го угла, x2,y2 – коорд. право-го нижнего угла

Работа со шрифтами

settextstyle(Font,Dir,Size)

выбор шрифта

outtextxy(x,y,Text)

вывод текста

x,y – коорд. верхнего левого угла первого символа

Рассмотрим функцию выбора шрифта

void far settextstyle (int Font, int Direction, int Size);

где Font – задает идентификатор одного из шрифтов и соответствует обращению к набору символов (матриц 8х8 пикселей), изображающих

каждый символ; может принимать значения



Direction – определяет ориертацию текста (горизонтальная или вертикальная):



Size – указывает, во сколько раз нужно увеличить шрифт перед выводом на экран. Например, для шрифта DEFAULT_FONT возможны значения:

1 - матрица 8х8 пикселей,

2 - матрица 16х16 пикселей,

. . .

10 – матрица 80х80 пикселей.

Приведем типовую форму файла с использованием графики и вывода текста на экран.

# include

# include

# include

# include

int main (void)

{

int driver = DETECT, gmode, errorcode;

int x,y;

initgraph(&gdriver,&gmode);

errorcode = graphresult();

if (errorcode != OK)

{

printf(“Graph. error:%s\n”,grapherrormsg(errorcode));

printf(“Press any key to halt:”);

getch();

exit(1);

}

printf(“Graph.error:%S\n”,grapherrormsg(errorcode));

x=getmaxx()/2;

y=getmaxy()/2;

settextstyle(GOTHIC_FONT, GORIZ_DIR,8);

outtextxy(x,y, ”Press any key to close a gr.sys:”);

getch();

closegraph();

printf(“We are now back in text mode.\n”);

printf(“Press any key to halt:”);

getch();

return0;

}

АЛГОРИТМЫ ВЫЧЕРЧИВАНИЯ ЛИНИЙ

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

Важным понятием растровой графики является связность, т.е. возможность соединения двух пикселей растровой линией (последовательным набором пикселей). Линия состоит из соседних одинаково закрашенных пикселей.

И
спользуется два понятия связности для точек a1(x1,y1) и a2(x2,y2) (см. рис.46).

Понятие 4-хсвязности более строгое, чем 8-связность (т.е. является частным случаем).

В качестве линии на растровой сетке выступает набор пикселей p1,p2,…,pn , где два пикселя pi, pi+1 являются соседними; линия может быть определена в смысле 4-хсвязной или 8-связной.

Одним из подходов к вычерчиванию линии является использование соотношения между смещением по координатам х и у.

Для простоты считаем, что

0  y2-y1  x2-x1

о
трезок описывается уравнением

или y = k x + b.

П
усть требуется провести линию от a1(0,0) и a2(10,5). Тогда смещения

y = 5 и y = 10, а соотношение

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

Этот метод используется довольно редко.

Наиболее популярный метод изображения линий основан на алгоритме Брезенхейма (Bresenhame), предложенный в 1965 г. для растрового построения отрезка.

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

В принципе, алгоритм применим для любой формы линии. Его суть – итерационный процесс поиска соседних точек, начиная с точки a1(x1,y1).

Алгоритм Брезенхейма:

а) в каждой итерации цикла вычерчивания линии вычисляются 2 погрешности по осям x и y, которые увеличиваются с изменением координат x и y соответственно;

б) если значение погрешности достигает определенной величины, оно вновь устанавливается в 0, а соответствующая координата увеличивается на 1;

в) этот процесс продолжается, пока вся линия не будет построена полностью и мы не попадем в точку конца.

П ри построении отрезка прямой всегда выбирается ближайший по вертикали пиксель (см. рис.47).

П ри этом из двух точек А и В A

выбирается та, которая ближе к a{

исходной прямой, т.е. точка А, т.к. }b

a < b . B

Для этого вводится число, равное

d = (x2-x1)(b-a) Рис. 47.

Если d>0, то значение y от предыдущей точки увеличивается на 1, а d – на 2(y -x), в противном случае значение y не изменяется, а d = 2 y.

Тогда простейший алгоритм для того же примера

0  y2-y1  x2-x1

имеет вид:

void line ( int x1, int y1, int x2, int y2, int Color )

{

int dx = x2-x1;

int dy = y2-y1;

int d = (dy<<1)- dx;

int d1 = dy<<1;

int d2 = (dy-dx)<<1;

putpixel(x1,y1,Color);

for (int x = x1+1; y = y1; x<=x2; x++)

{

if (d>0) { d+ = d2; y+ = 1;

}

else d+ = d1;

putpixel(x,y,Color);

}

}

Для дуг окружностей и эллипсов приращения и погрешности вычисляются по более сложным выражениям.

ВЫЧЕРЧИВАНИЕ ОТРЕЗКОВ

Необходимость отсечь видимое изображение по границам некоторой области встречается довольно часто.

Алгоритм Сазерленда-Кохена

Пусть область отсечения ограничена прямоугольником (см. рис. 48а). Четыре линии, образующие прямоугольник, делят плоскость на 9 областей, которые могут быть закодированы тетрадой Code (см. рис. 48б).



Каждый бит тетрады имеет смысл:

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее