Помощь в написании студенческих работ
Антистрессовый сервис

Пояснительная записка

Курсовая Купить готовую Узнать стоимостьмоей работы

Заключение. Введение. Список использованных источников. РЕАЛИЗАЦИЯ ТРЕХМЕРНОЙ ГРАФИКИ В БИБЛИОТЕКЕ OPENGL2. 1. Общее описание библиотеки OpenGL. Приложение 2. Разработка программы с использованием библиотеки OpenGL. ОБЩИЕ ПОНЯТИЯ ГЕОМЕТРИЧЕСКОГО МОДЕЛИРОВАНИЯ1. 1. Общие принципы геометрического моделирования. Читать ещё >

Пояснительная записка (реферат, курсовая, диплом, контрольная)

Содержание

  • ВВЕДЕНИЕ
  • 1. ОБЩИЕ ПОНЯТИЯ ГЕОМЕТРИЧЕСКОГО МОДЕЛИРОВАНИЯ
    • 1. 1. Общие принципы геометрического моделирования
  • 2. РЕАЛИЗАЦИЯ ТРЕХМЕРНОЙ ГРАФИКИ В БИБЛИОТЕКЕ OPENGL
    • 2. 1. Общее описание библиотеки OpenGL
    • 2. 2. Разработка программы с использованием библиотеки OpenGL
  • ЗАКЛЮЧЕНИЕ
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЕ 2

По мере роста высоты его ширина будет уменьшатьсяglTexCoord2f (0.0, 1.0); glVertex3f (-0.6 + i, 0.05, 0.9);glTexCoord2f (0.0, 0.0); glVertex3f (-0.6 + i, 0.1, 0.9);glTexCoord2f (1.0, 0.0); glVertex3f (0.6 — i, 0.1, 0.9);glTexCoord2f (1.0, 1.0); glVertex3f (0.6 — i, 0.05, 0.9);//Конец рисованияglEnd ();glPopMatrix (); }//Рисование наличника крыши с противоположной стороныfor (i = 0; i <= 0.6; i += 0.05) {glPushMatrix ();glTranslatef (0.0, 0.1 + i, -0.8);glBegin (GL_QUADS);glColor3f (0.7, 0.7, 0.7);//Рисование прямоугольника как части наличника. По мере роста высоты его ширина будет уменьшаться glTexCoord2f (0.0, 1.0); glVertex3f (-0.6 + i, 0.05, 0.9);glTexCoord2f (0.0, 0.0); glVertex3f (-0.6 + i, 0.1, 0.9);glTexCoord2f (1.0, 0.0); glVertex3f (0.6 — i, 0.1, 0.9);glTexCoord2f (1.0, 1.0); glVertex3f (0.6 — i, 0.05, 0.9);glEnd ();glPopMatrix (); }//ОтключениетекстурыglDisable (GL_TEXTURE_2D);//Наклонная плоскость, соединяющая наличник с основанием крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);//Задание вершин glVertex3f (-0.6, 0.05, 1.1); glVertex3f (0.6, 0.05, 1.1);//Задание цвета glColor3f (0.5, 0.5, 0.6);//Задание вершин glVertex3f (0.6, 0.15, 0.9); glVertex3f (-0.6, 0.15, 0.9);glEnd ();//Наклонная плоскость, соединяющая противоположный наличник с основанием крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);//Задание вершин glVertex3f (-0.6, 0.05, -0.1); glVertex3f (0.6, 0.05, -0.1);//Задание цвета glColor3f (0.5, 0.5, 0.6);//Задание вершин glVertex3f (0.6, 0.15, 0.1); glVertex3f (-0.6, 0.15, 0.1);glEnd ();//Рисование самой крыши//Рисование внутренней стороны левой части крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.5, 0.5, 0.6);glTexCoord2f (0.0, 0.0); glVertex3f (-0.6, 0.05, -0.1);glTexCoord2f (1.0, 0.0); glVertex3f (-0.6, 0.05, 1.1);glTexCoord2f (1.0, 1.0); glVertex3f (0.0, 0.7, 1.1);glTexCoord2f (0.0, 1.0); glVertex3f (0.0, 0.7, -0.1);glEnd ();//Рисование внутренней стороны правой части крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.5, 0.5, 0.6);glTexCoord2f (0.0, 0.0); glVertex3f (0.6, 0.05, -0.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.6, 0.05, 1.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.0, 0.7, 1.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.0, 0.7, -0.1);glEnd ();//Рисование внешней стороны левой части крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);//Задание вершин и текстурированиеglTexCoord2f (0.0, 0.0); glVertex3f (-0.8, 0.05, -0.1);glTexCoord2f (1.0, 0.0); glVertex3f (-0.8, 0.05, 1.1);glTexCoord2f (1.0, 1.0); glVertex3f (0.0, 0.9, 1.1);glTexCoord2f (0.0, 1.0); glVertex3f (0.0, 0.9, -0.1);glEnd ();//Рисование внешней стороны правой части крышиglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);glTexCoord2f (0.0, 0.0); glVertex3f (0.8, 0.05, -0.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.8, 0.05, 1.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.0, 0.9, 1.1);glTexCoord2f (0.0, 0.0); glVertex3f (0.0, 0.9, -0.1);glEnd ();//Рисование торца левой части крыши с противоположной стороныglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);//Задание вершин glVertex3f (-0.8, 0.05, -0.1); glColor3f (0.5, 0.5, 0.6);//Задание вершин glVertex3f (-0.6, 0.05, -0.1); glVertex3f (0.0, 0.7, -0.1); glColor3f (0.8, 0.8, 1.0);//Задание вершин glVertex3f (0.0, 0.9, -0.1);glEnd ();//Рисование торца левой части крыши над окномglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);glVertex3f (-0.8, 0.05, 1.1);glColor3f (0.5, 0.5, 0.6);glVertex3f (-0.6, 0.05, 1.1);glVertex3f (0.0, 0.7, 1.1);glColor3f (0.8, 0.8, 1.0);glVertex3f (0.0, 0.9, 1.1);glEnd ();//Рисование торца правой части крыши с противоположной стороныglBegin (GL_QUADS);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);glVertex3f (0.8, 0.05, -0.1);//ЗаданиецветаglColor3f (0.5, 0.5, 0.6);glVertex3f (0.6, 0.05, -0.1);glVertex3f (0.0, 0.7, -0.1);//ЗаданиецветаglColor3f (0.8, 0.8, 1.0);glVertex3f (0.0, 0.9, -0.1);glEnd ();//Рисование торца правой части крыши над окномglBegin (GL_QUADS);glColor3f (0.8, 0.8, 1.0);glVertex3f (0.8, 0.05, 1.1);glColor3f (0.5, 0.5, 0.6);glVertex3f (0.6, 0.05, 1.1);glVertex3f (0.0, 0.7, 1.1);glColor3f (0.8, 0.8, 1.0);glVertex3f (0.0, 0.9, 1.1);glEnd (); }//—-=====Т Е К С Т У Р Ы=====—-//—загрузка текстуры из файла формата BMP—-BOOLReadTextureBMP (char *filename, BYTE *lp, DWORDhor, DWORDvert) {BITMAPFILEHEADERbfhdr;BITMAPINFOHEADERbmihdr;FILE *fin;DWORDi, j, pos, byteshor;BYTEbt;fin = fopen (filename, «rb»);if (fin == NULL) returnFALSE;//Считываниезаголока bmp-файлаfread (&bfhdr, sizeof (BITMAPFILEHEADER), 1, fin);fread (&bmihdr, sizeof (BITMAPINFOHEADER), 1, fin);if ((bmihdr.biBitCount ≠ 24) — //только 24-битныерастры,(bmihdr.biWidth ≠ hor) — //соответствующие по размерам (bmihdr.biHeight ≠ vert)) //массиву текстуры {fclose (fin);//этот файл не подходитreturnFALSE; }byteshor = 3 * bmihdr. biWidth;//число байтов в строке растраfseek (fin, bfhdr. bfOffBits, SEEK_SET); //Смещение в начало файлаpos = 0;//Цикл по высоте картинкиfor (i = 0; i<bmihdr.biHeight; i++){fread (lp + pos, byteshor, 1, fin);//читаем строку растраpos += byteshor; //Сдвиг по позиции }fclose (fin);for (j = 0; j < vertTexture; j++)//меняем местами байты R и B{pos = 3 * horTexture*j;for (i = 0; i < horTexture; i++) {bt = lp[pos]; lp[pos] = lp[pos + 2]; lp[pos + 2] = bt;pos += 3; } }returnTRUE; }// —-=====Инициализациятекстур=====—-voidInitMyTexture (void){//Чтение файла bm-формата как текстуры//ТекстурадереваReadTextureBMP («File1.bmp», pixels, horTexture, vertTexture);//ВыравниваниевмассиведанныхglPixelStorei (GL_UNPACK_ALIGNMENT, 1);//Хранение идентификатора текстуры glGenTextures (1, &texName[0]);//Привязка текстуры к идентификаторуglBindTexture (GL_TEXTURE_2D, texName[0]);//Задание параметров текстуры при различных вариантах ее наложенияglTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);//ГенерацияуровнейдетализациитекстурыglTexImage2D (GL_TEXTURE_2D, 0, 3, horTexture, vertTexture, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels);//ТекстураснегаReadTextureBMP («File51.bmp», pixels, horTexture, vertTexture);//ВыравниваниевмассиведанныхglPixelStorei (GL_UNPACK_ALIGNMENT, 1);//Хранение идентификатора текстуры glGenTextures (1, &texName[1]);//Привязка текстуры к идентификаторуglBindTexture (GL_TEXTURE_2D, texName[1]);//Задание параметров текстуры при различных вариантах ее наложенияglTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);glTexImage2D (GL_TEXTURE_2D, 0, 3, horTexture, vertTexture, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels);ReadTextureBMP («File3.bmp», pixels, horTexture, vertTexture);//ВыравниваниевмассиведанныхglPixelStorei (GL_UNPACK_ALIGNMENT, 1);//Хранение идентификатора текстуры glGenTextures (1, &texName[2]);//Привязка текстуры к идентификаторуglBindTexture (GL_TEXTURE_2D, texName[2]);//Задание параметров текстуры при различных вариантах ее наложенияglTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);glTexImage2D (GL_TEXTURE_2D, 0, 3, horTexture, vertTexture, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels);}// Задание источников светаvoidDemoLight (void) {//Включение первого источника светаglEnable (GL_LIGHTING);glEnable (GL_LIGHT0);glEnable (GL_NORMALIZE);// Параметры источников света// —————————————————————-//Свойства освещенияGLfloatlmKa[] = {0.0, 0.0, 0.0, 0.0 };//настройка модели освещенияglLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmKa);//При расчете бликов учитывается реальное направление на место расположения наблюдателя. glLightModelf (GL_LIGHT_MODEL_LOCAL_VIEWER, 1.0);//ОдностороннийрендерингglLightModelf (GL_LIGHT_MODEL_TWO_SIDE, 0.0);GLfloatspot_direction[] = {1.0, -1.0, -1.0 };GLintspot_exponent = 30;GLintspot_cutoff = 180;//Определение направления светаglLightfv (GL_LIGHT0, GL_SPOT_DIRECTION, spot_direction);//уровеньсфокусированностиисточникасветаglLighti (GL_LIGHT0, GL_SPOT_EXPONENT, spot_exponent);//максимальныйуголразбросасветаglLighti (GL_LIGHT0, GL_SPOT_CUTOFF, spot_cutoff);GLfloat Kc = 0.4;GLfloat Kl = 0.0;GLfloatKq = 0.0;glLightf (GL_LIGHT0, GL_CONSTANT_ATTENUATION, Kc);glLightf (GL_LIGHT0, GL_LINEAR_ATTENUATION, Kl);glLightf (GL_LIGHT0, GL_QUADRATIC_ATTENUATION, Kq);// —————————————————————- // Параметры источников света положение в пространствеGLfloatlight_pos[] = {0.0f, 1.0f, 1.0f, 1.0f}; GLfloatlight_Kd[] = {1.0f, 1.1f, 1.0f, 1.0f};GLfloatlight_Ks[] = {1.0f, 1.0f, 1.0f, 1.0f};GLfloatlight_Ka[] = { 1.0f, 1.0f, 1.0f, 1.0f };// ТочечныйисточниксветаglLightfv (GL_LIGHT0, GL_POSITION, light_pos);// Окружающийсвет// glLightfv (GL_LIGHT0, GL_AMBIENT, light_Ka);// —————————————————————-// Параметры материалов//Параметры-массивы светооптических свойств материалаGLfloatmaterial_Ka[] = {0.7f, 0.7f, 7.0f, 1.0f};GLfloatmaterial_Kd[] = {0.5f, 0.4f, 0.5f, 1.0f};GLfloatmaterial_Ks[] = {0.3f, 0.8f, 0.0f, 1.0f};GLfloatmaterial_Ke[] = {0.1f, 0.0f, 0.0f, 0.0f};GLfloatmaterial_Se = 20.0f;//рассеянный цвет материалаglMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT, material_Ka);//цветдиффузногоотраженияматериалаglMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, material_Kd);//цветзеркальногоотраженияматериалаglMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, material_Ks);//интенсивностьизлучаемогосветаматериалаglMaterialfv (GL_FRONT_AND_BACK, GL_EMISSION, material_Ke);//степеньзеркальногоотраженияматериалаglMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, material_Se);}//Отрисовка сцены приложения и объектовvoidDrawScene () {RECTrc;GLUquadricObj *quadricObj;quadricObj = gluNewQuadric ();GLfloatlightpos[4] = { 3, 3, 4, 1 };//**********РИСОВАНИЕ*********glColor3f (0, 1, 0);glRotatef (-45 + kx, 0, 1, 0);//ОтрисовкафонаglBegin (GL_QUADS);glColor3f (0.2, 0.8, 0.9);glVertex3f (-9, -0.25, -9);glVertex3f (9, -0.25, -9);glVertex3f (9, -0.25, 9);glVertex3f (-9, -0.25, 9);glEnd ();glEnable (GL_TEXTURE_2D);glPushMatrix ();glBindTexture (GL_TEXTURE_2D, texName[1]);glColor3f (1.0, 1.0, 1.0);glRotatef (-90, 1, 0, 0);glTranslatef (0.0, 0.0, -0.25);gluQuadricTexture (quadricObj, GL_TRUE);gluCylinder (quadricObj, 5, 5, 25.0, 14, 2);gluQuadricTexture (quadricObj, GL_FALSE);glPopMatrix ();glDisable (GL_TEXTURE_2D);//Рисование снеговикаglPushMatrix ();//Подготовка координат рисованияglTranslatef (1.3, -0.13, -0.6);//Рисование снеговикаDrawAlkaida (quadricObj);glPopMatrix ();//Рисование деревьевglPushMatrix ();//Подготовка координат рисованияglTranslatef (-1.5, 0.0, 1.0);//Рисование дереваDrawTree (quadricObj);//glDisable (GL_LIGHTING);glPopMatrix ();glPushMatrix ();glTranslatef (-1.4, 0.0, 1.4);//РисованиедереваDrawTree (quadricObj);//glDisable (GL_LIGHTING);glPopMatrix ();glPushMatrix ();glTranslatef (-1.0, 0.0, 1.0);//РисованиедереваDrawTree (quadricObj);//lDisable (GL_LIGHTING);glPopMatrix ();//РисованиедомаglPushMatrix ();glTranslatef (0.0, 0.04, 0.0);//РисованиедверейDrawDoor (quadricObj);glPopMatrix ();glPushMatrix ();glTranslatef (0.0, 0.1, 0.45);//РисованиеокнаDrawWindow ();glPopMatrix ();//Рисование стенglPushMatrix ();//Подготовка координат рисованияglTranslatef (0.0, 0.0, -0.6);//glEnable (GL_LIGHTING);DrawWall (quadricObj);//glDisable (GL_LIGHTING);glPushMatrix ();//ПодготовкакоординатрисованияglTranslatef (0.0, 0.4, 0.0);//РисованиекрышиDrawRoof (quadricObj);glPopMatrix ();glPopMatrix ();gluDeleteQuadric (quadricObj);//glDisable (GL_LIGHTING);glFinish (); }};//——————————————————————————————————————-classmyApplication: publiccwc: glApplication{public:virtualvoidOnInit () {std:cout<<" Hello World! n"; }};//——————————————————————————————————————-intmain (void){// Создаем новое приложение myApplication* pApp = newmyApplication;// Запускаемсозданое OpenGL окноmyWindow* myWin = newmyWindow ();// Вызываем созданое окно на экранpApp->run ();deletepApp;return 0;}//——————————————————————————————————————;

Показать весь текст

Список литературы

  1. Е. А. и Пунина Т. Г. Компьютерная графика [Книга]. — Тамбов: ГОУ ВПО «Тамбовский государственный технический университет» Педагогический интернет-клуб, 2006. — 116 с.
  2. А. А. Геометрическое моделирование в аддитивном производстве. Учебное пособие — СПб: Университет ИТМО, 2015. — 49 с.
  3. В. Е., Морозов А. В. Компьютерная графика: Учеб. пособие. СПб.: СЗТУ, 2005. — 101 с.
  4. Н. Н. Геометрическое моделирование : учебник для учреждений высш. проф. образования / Н. Н. Голованов. — М.: Издательский центр «Академия», 2011. — 272 с.
  5. В.М. Компьютерная геометрия и графика : учебник для студ. учреждений высш. проф. образования / В. М. Дегтярев. — 2-е изд., стер. — М.: Издательский центр «Академия», 2011. — 192 с
  6. А. А. Смирнов Трехмерное геометрическое моделирование. Учебное пособие по курсу «Основы автоматизации проектирования». Москва Издательство МГТУ им. Н. Э. Баумана 2008 — 40 с.
  7. , Н. В. Компьютерная графика. Математические основы. Версия 1.0 [Электронный ресурс]: электрон. учеб. пособие / Н. В. Соснин. — Электрон. дан. (4 Мб). — Красноярск: ИПК СФУ, 2008.
  8. Ю.М., Игнатенко А. В., Фролов А. И. Графическая библиотека OpenGL. Учебно-методическое пособие. Издательский отдел факультета Вычислительной Математики и Кибернетики МГУ им. Ломоносова (лицензия НД № 5 899 от 24.09.2001), 2003 г. — 132 с.
  9. Д.Ю. Иcпользование библиотеки OpenGL. Моделирование трёхмерной сцены: учебное пособие по дисциплине «Компьютерная графика». — М.: МГИУ, 2012. — 62c.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ