Конспект 4-3 (774782)

Файл №774782 Конспект 4-3 (Конспект лекций)Конспект 4-3 (774782)2017-06-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Т
огда точки плоскости 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б).



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

Характеристики

Тип файла
Документ
Размер
194 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

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

Список файлов лекций

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