1.4 Методы
текстурирования
Анизотропная фильтрация (англ. Anisotropic Filtering, AF) - в трёхмерной графике метод улучшения качества изображения текстур на поверхностях, сильно наклонённых относительно камеры. Как билинейная и трилинейная фильтрация, анизотропная фильтрация позволяет устранять эффект ступенчатости на различных поверхностях, но при этом вносит меньше размытия и поэтому позволяет сохранить большую детальность изображения. Анизотропная фильтрация требует относительно сложного вычисления, и поэтому только около 2004 года она стала «бесплатной» (не снижающей общей кадровой частоты, либо снижающей её незначительно) в графических платах потребительского уровня.
Выбирается MIP-текстура, соответствующая разрешению поперёк направления обзора. Берут несколько текселей вдоль направления обзора (в фильтрации 2x - до двух, в 4x - до четырёх, и т. д.) и усредняют их цвета. Так как пикселей на экране может быть 1 миллион и даже больше, а каждый тексел - это не менее 32 бит, анизотропная фильтрация требует огромной пропускной способности видеопамяти (десятки гигабайт в секунду). Столь большие требования к памяти уменьшают за счёт сжатия текстур и кэширования.
Билинейная фильтрация - процесс извлечения нескольких пикселей исходной текстуры с последующим усреднением их значений для получения окончательного значения пикселя. Понятие «билинейная фильтрация», точно так же, как и сходное понятие «трилинейная фильтрация», применимо только к двумерным текстурам. Для трехмерных, например, данное понятие неприменимо, а понятие трилинейной фильтрации имеет совершенно другое значение.
Рельефное текстурирование - метод в компьютерной
графике для придания более реалистичного и насыщенного вида поверхности
объектов.
Рисунок 1.5 - Сфера без и с применением
рельефного текстурирования
Техника заключается в том, что отклонение каждого пикселя от нормали к поверхности просчитываемого объекта смотрится в карте высот (поле высот) и применяется перед обсчётом освещения (затенение по Фонгу).
Кроме описанной выше техники, называемой Bump
mapping, существует ряд альтернатив, также позволяющих придавать рельефность
поверхностям. Bump mapping более корректно переводится как «эффект бугристой
поверхности», в то время как техника с названием Relief mapping, используемым в
англоязычной литературе, отличается от вышеизложенной.mapping - Технология
аналогична Bump mapping, но для хранения информации о рельефе используются
текстуры, в которых кодируются данные не о высоте точек поверхности, а об
отклонении нормалей поверхности. Для создания таких текстур обычно используются
высокополигональная модель, на основе которых и генерируется текстура нормалей,
и низкополигональная, на которую она накладывается.mapping - Данная технология
также использует карты нормалей, но, в отличие от normal mapping, она реализует
не только освещение с учётом рельефа, но и сдвигает координаты диффузной
текстуры. Этим достигается наиболее полный эффект рельефа, особенно при взгляде
на поверхность под углом.
2. Порядок
выполнения работы
.1 Описание
физической модели
При проектировании информационной системы описываются автоматизируемые процессы. Исходя из описания процессов, строится логическая модель проектируемой системы. На основании логической модели строится физическая модель, воплощаемая в метаданных разрабатываемой конфигурации.
При необходимости внесения изменений в проект
используется механизм технических проектов. Изменения основываются на принятых
требованиях и документируются c
привязкой к изменяемым процессам, а также объектам логической и физической
модели.
2.2 Описание
математической модели
Математическая модель - приближенное описание объекта моделирования, выраженное с помощью математической символики.
Математические модели появились вместе с
математикой много веков назад. Огромный толчок развитию математического
моделирования придало появление ЭВМ. Применение вычислительных машин позволило
проанализировать и применить на практике многие математические модели, которые
раньше не поддавались аналитическому исследованию. Реализованная на компьютере
математическая модель называется компьютерной математической моделью, а
проведение целенаправленных расчетов с помощью компьютерной модели называется
вычислительным экспериментом.
2.3 Программирование модели
В качестве среды программирования была выбрана IDE Borland Delphi 7.0. Анализ требований показывает, что разрабатываемое приложение должно вести активное взаимодействие с пользователем и, следовательно, должно обладать мощным графическим интерфейсом. Для существенного облегчения создания такого графического приложения необходимо использовать визуальную среду программирования.
Кроме того, так как от приложения требуется быстродействие, используемый язык программирования должен предоставлять пользователю как можно больше возможностей по оптимизации программы как на уровне алгоритма, так и на уровне исходного кода. В таких условиях наилучшим вариантом будет выбор универсального языка программирования.
Для описания функционирования разрабатываемой
системы используется диаграмма состояний. Она демонстрирует функционирование
системы при получении управляющих воздействий. Под управляющими воздействиями в
данном случае понимаются действия пользователя. Получив такое управляющее
воздействие, разрабатываемая система должна выполнить определенные действия и
перейти в другое состояние или остаться в том же.
2.4 Ключевые
фрагменты программы с комментариями
program a;
uses
Windows,,,,,,in 'NeHeGL.pas';glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;glDeleteTextures(n: GLsizei; textures: PGLuint); stdcall; external 'opengl32';glCopyTexImage2D(target: GLenum; level: GLint; internalFormat: GLenum; x, y: GLint; width, height: GLsizei; border: GLint); stdcall; external 'opengl32';glTexSubImage2D(target: GLenum; level, xoffset, yoffset: GLint; width, height: GLsizei; format, atype: GLenum; const pixels: Pointer); stdcall; external 'opengl32';_window: PGL_Window; _keys: PKeys; : GLfloat; : integer; : integer = 0; : integer; : boolean = true; : boolean = true; : boolean; : boolean; : boolean; : TAVIStreamInfo; : IAVIStream; : IGetFrame; : BITMAPINFOHEADER;
lastframe: integer; : integer; : integer; : PGLubyte;: integer;: GLUquadricObj; : HDRAWDIB; _bitmap: HBITMAP; _dc: HDC;
data: Pointer = nil; i:= 0 to 256 * 256 - 1 do %%Prochбzн data obrбzku:= Pointer(Integer(buffer) + i * 3); %%Ukazatel na B:= Pointer(Integer(buffer) + i * 3+2); %%Ukazatel na R:= B^; %%B uloћнme do pomocnй promмnnй
B^:= R^; %%R je na sprбvnйm mнstм^:= temp; %%B je na sprбvnйm mнstм
end;;OpenAVI(szFile: LPCSTR);: PAnsiChar;: BITMAPINFO;;AVIStreamOpenFromFile(pavi,szFile,streamtypeVIDEO,0,OF_READ,nil) <> 0 then(HWND_DESKTOP,'Failed To Open The AVI Stream','Error',MB_OK or MB_ICONEXCLAMATION);(pavi,psi,sizeof(psi));:= psi.rcFrame.Right - psi.rcFrame.Left;:= psi.rcFrame.Bottom - psi.rcFrame.Top;:= AVIStreamLength(pavi);:= AVIStreamSampleToTime(pavi,lastframe) div lastframe;bmih do:= sizeof(BITMAPINFOHEADER);:= 1;:= 24;:= 256;:= 256;:= BI_RGB;;.bmiHeader:= bmih;_bitmap:= CreateDIBSection(h_dc,bmi,DIB_RGB_COLORS,data,0,0);(h_dc,h_bitmap);:= AVIStreamGetFrameOpen(pavi,nil);pgf = nil then(HWND_DESKTOP,'Failed To Open The AVI Frame','Error',MB_OK or MB_ICONEXCLAMATION);:= PAnsiChar(Format('NeHe''s AVI Player: Width: %d, Height: %d, Frames: %d',[width,height,lastframe]));(g_window.hWnd,title);;GrabAVIFrame(frame: integer);: PBitmapInfoHeader;:= AVIStreamGetFrame(pgf,frame);:= Pointer(Integer(lpbi) + lpbi.biSize + lpbi.biClrUsed * sizeof(RGBQUAD));(hdd,h_dc,0,0,256,256,lpbi,pdata,0,0,width,height,0);(data);D(GL_TEXTURE_2D, 0, 0, 0, 256, 256, GL_RGB, GL_UNSIGNED_BYTE, data);;Initialize(window: PGL_Window; key: PKeys): boolean;_window:= window;_keys:= key;_dc:= CreateCompatibleDC(0);:= 0.0;:= DrawDibOpen;(0.0, 0.0, 0.0, 0.5);(1.0);(GL_LEQUAL);(GL_DEPTH_TEST);(GL_SMOOTH);(GL_QUADS);f(1.0,1.0); glVertex3f( 11.0, 8.3,-20.0);f(0.0,1.0); glVertex3f(-11.0, 8.3,-20.0);f(0.0,0.0); glVertex3f(-11.0,-8.3,-20.0);f(1.0,0.0); glVertex3f( 11.0,-8.3,-20.0);;;;(0.0,0.0,-10.0);env then(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
end;(angle*2.3,1.0,0.0,0.0);(angle*1.8,0.0,1.0,0.0);(0.0,0.0,2.0);effect of
: begin(angle*1.3,1.0,0.0,0.0);(angle*1.1,0.0,1.0,0.0);(angle*1.2,0.0,0.0,1.0);(GL_QUADS);f(0.0,0.0,0.5);f(0.0,0.0); glVertex3f(-1.0,-1.0,1.0);f(1.0,0.0); glVertex3f( 1.0,-1.0,1.0);f(1.0,1.0); glVertex3f( 1.0, 1.0,1.0);f(0.0,1.0); glVertex3f(-1.0, 1.0,1.0);f(0.0,0.0,-0.5);f(1.0,0.0); glVertex3f(-1.0,-1.0,-1.0);f(1.0,1.0); glVertex3f(-1.0, 1.0,-1.0);f(0.0,1.0); glVertex3f( 1.0, 1.0,-1.0);f(0.0,0.0); glVertex3f( 1.0,-1.0,-1.0);f(0.0,0.5,0.0);f(0.0,1.0); glVertex3f(-1.0,1.0,-1.0);f(0.0,0.0); glVertex3f(-1.0,1.0, 1.0);f(1.0,0.0); glVertex3f( 1.0,1.0, 1.0);f(1.0,1.0); glVertex3f( 1.0,1.0,-1.0);f(0.0,-0.5,0.0);f(1.0,1.0); glVertex3f(-1.0,-1.0,-1.0);f(0.0,1.0); glVertex3f( 1.0,-1.0,-1.0);f(0.0,0.0); glVertex3f( 1.0,-1.0, 1.0);f(1.0,0.0); glVertex3f(-1.0,-1.0, 1.0);f(0.5,0.0,0.0);f(1.0,0.0); glVertex3f(1.0,-1.0,-1.0);f(1.0,1.0); glVertex3f(1.0, 1.0,-1.0);f(0.0,1.0); glVertex3f(1.0, 1.0, 1.0);f(0.0,0.0); glVertex3f(1.0,-1.0, 1.0);f(-0.5,0.0,0.0);f(0.0,0.0); glVertex3f(-1.0,-1.0,-1.0);f(1.0,0.0); glVertex3f(-1.0,-1.0, 1.0);f(1.0,1.0); glVertex3f(-1.0, 1.0, 1.0);f(0.0,1.0); glVertex3f(-1.0, 1.0,-1.0);();;
: begin(angle*1.3,1.0,0.0,0.0);(angle*1.1,0.0,1.0,0.0);(angle*1.2,0.0,0.0,1.0);(quadratic,1.3,20,20);;
: begin(angle*1.3,1.0,0.0,0.0);(angle*1.1,0.0,1.0,0.0);(angle*1.2,0.0,0.0,1.0);(0.0,0.0,-1.5);(quadratic,1.0,1.0,3.0,32,32);;;env then(GL_TEXTURE_GEN_S);(GL_TEXTURE_GEN_T);;
glFlush;
end;
3. Результат выполнения приложения
Ниже представлены результаты выполнения
программы:
Рисунок 3. 1 - Результат выполнения программы
Ниже представлена последовательность итераций,
которая привела к данному результату:
Рисунок 3.2 - Последовательность итераций
Таким образом, по результатам работу программы при заданной точности 0,1 мы нашли точку (4;9), в которой функция имеет наименьшее значение в области допустимых решений, заданной вершинами многоугольника A(0,1), B(4,9), C(5,7), D(10,0).
Заключение
В ходе выполнения данного курсовой работы были изучены такие задачи линейного и нелинейного программирования, как метод Франка-Вульфа и решение матричных игр. Для решения задач нелинейного программирования методом Франка-Вульфа была реализована программа. Задача линейного программирования решалась 3 способами, а именно, графически, аналитически и при помощи встроенного средства Microsoft Excel «Поиск решения».
В играх, где нет седловой точки, решение следует искать в смешанных стратегиях. Для определения оптимальных смешанных стратегий в играх m x n следует использовать симплекс-метод, предварительно переформулировав игровую задачу в задачу линейного программирования.
Таким образом, в данной работе также был изучен симплекс метод, который использовался при нахождении минимума и максимума линейной функции. Симплекс-метод является основным в линейном программировании. Решение задачи начинается с рассмотрений одной из вершин многогранника условий. Если исследуемая вершина не соответствует максимуму (минимуму), то переходят к соседней, увеличивая значение функции цели при решении задачи на максимум и уменьшая при решении задачи на минимум. Таким образом, переход от одной вершины к другой улучшает значение функции цели. Так как число вершин многогранника ограничено, то за конечное число шагов гарантируется нахождение оптимального значения или установление того факта, что задача неразрешима.
Матричные игры вида 2 x n и m x 2 можно решать графически. У таких игр всегда имеется решение, содержащее не более двух активных стратегий для каждого из игроков.
Cписок
использованных источников
1. Агафонова Н.Н. Гражданское право [Текст]: учеб. пособие для вузов / Н.Н. Агафонова, Т.В. Богачева, Л.И. Глушкова; под. общ. ред. А.Г. Калпина; авт. вступ. ст. Н.Н. Поливаев; М-во общ. и проф. образования РФ, Моск. гос. юрид. акад. - Изд. 2-е, перераб. и доп. - М.: Юристъ, 2002. - 542 с.; 22 см. - (Institutiones; т. 221). - Библиогр.: с. 530-540. - 50000 экз. - ISBN 5-7975-0223-2 (в пер.).
2. Бахвалов Н.С. Численные методы [Текст]: учеб. пособие для физ.-мат. специальностей вузов / Н.С. Бахвалов, Н.П. Жидков, Г.М. Кобельков; под общ. ред. Н.И. Тихонова. - 2-е изд. - М.: Физматлит: Лаб. базовых знаний; СПб.: Нев. диалект, 2002. - 630 с.: ил.; 25 см. - (Технический университет. Математика). - Библиогр.: с. 622-626. - Предм. указ.: с. 627-630. - 30000 экз. - ISBN 5-93208-043-4 (в пер.).
. Государственный Эрмитаж (Санкт-Петербург). Отчетная археологическая сессия (2002). Отчетная археологическая сессия за 2002 год [Текст]: тез. докл. / Гос. Эрмитаж. - СПб.: Изд-во Гос. Эрмитажа, 2001. - 62 с.: ил.; 22 см. - 300 экз. - ISBN 5-93572-047-7.