Upload
ilija-arsovski
View
222
Download
1
Embed Size (px)
DESCRIPTION
aaa
Citation preview
Со помош на низата од темиња да се нацрта рамнострана пирамида со основа квадрат со должина на страна од 40цм.Основата на пирамидата треба да лежи во ху-рамнината и да има црвена боја.Пирамидата со врвот е сцртена кон позитивната страна на z-оската.Останатите 4 страни треба да се обојат во црвена и жолта боја наизменично.Основата е изградена од матерјал кој не е провиден додека провидноста на останатите 4 страни е одредена со коефициент 0.8.Оваа пирамида треба да се смести во сцена во која има присуство на светлина затоа страните треба да бидат одредени со нивните нормали?
void drawPiramida(){GLfloat basep[] = { 0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 4.0, 0.0, -4.0, 0.0, 0.0, -4.0 }; GLfloat t1[] = { 0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 2.0, 5.0, -2.0 }; GLfloat t2[] = { 4.0, 0.0, 0.0, 4.0, 0.0, -4.0, 2.0, 5.0, -2.0 }; GLfloat t3[] = { 4.0, 0.0, -4.0, 0.0, 0.0, -4.0, 2.0, 5.0, -2.0 }; GLfloat t4[] = { 0.0, 0.0, -4.0, 0.0, 0.0, 0.0, 2.0, 5.0, -2.0 };
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, basep);glColor4f(1.0, 0.0, 0.0, 0.8);glDrawArrays(GL_QUADS, 0, 4);
glVertexPointer(3, GL_FLOAT, 0, t1);glColor4f(1.0, 1.0, 0.0, 0.8);glDrawArrays(GL_TRIANGLES, 0, 3);
glVertexPointer(3, GL_FLOAT, 0, t2);glColor4f(1.0, 0.0, 0.0, 0.8);glDrawArrays(GL_TRIANGLES, 0, 3);
glVertexPointer(3, GL_FLOAT, 0, t3);glColor4f(1.0, 1.0, 0.0, 0.8);
glDrawArrays(GL_TRIANGLES, 0, 3);
glVertexPointer(3, GL_FLOAT, 0, t4);glColor4f(1.0, 0.0, 0.0, 0.8);glDrawArrays(GL_TRIANGLES, 0, 3);;
glDisableClientState(GL_VERTEX_ARRAY);}
1.Синтакса за командата glClear:A) glCear( GL_DEPTH_BUFFER_BIT); 2. Со која функција се одредува ширината на сноп од светлина..А) glLight (Gl_LIGHT0, GL_SPOT_CUTOFF, 32.0); 3. наредба за цртање на полигон со задна ориентација и да бидат нацртани само со линии. glPolygonMode(GL_BACK, GL_LINE)4. Да се определи нијансата на сиво (земајќи во предвид осетот на човечкото око) која соодветствува на RGB бојата со вредност (10, 100, 200). GS = 0,299·R + 0,587·G + 0,114·B GS= 0.299*10 + 0,587·*100+ 0,114*200GS=2.99+58.7+22.8 = 84.49
Одреди ги вредностите за цијан,магнета и жолта боја преку конвергенција на RGB во CMY модел,доколку црвената боја има вредност 50, зелената120 и сината 255.?RGB—CMYC=1-(R/255) M=1-(G/255) Y=1-(B/255)RGB--YUVY=0.299*R+0.587*G+0.144*BU=R*Y I V=B-YYUV--RGBR=Y+1.14*VG=Y-0.395*U-0.581*VB=Y+2.032*U
Вчитување на слики и нивна обработка – број на зелени пикесели
int main(int argc, char* argv[]) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (320, 240); glutCreateWindow("Using multiple bmp fig"); pixels = ReadBitmap("test.bmp", &info); int BrojNaZeleniPikseli = 0; for(int i=0; i<info->bmiHeader.biHeight*info->bmiHeader.biWidth*3; i+=3) { if(pixels[i]==0 && pixels[i+1]==255 && pixels[i+2]==0){ BrojNaZeleniPikseli++; } } init(); glutDisplayFunc(Display); glutReshapeFunc(reshape); glutMainLoop(); }
Код за читање на податоците од една 24-битна BMP слика if ((fp = fopen(filename, "rb")) == NULL) return (NULL);fread(&header, sizeof(BITMAPFlLEHEADER),1, fp) if (header.bfType != 'MB’) { fclose(fp); return (NULL); } infosize = header.bfOffBits – sizeof(BITMAPFILEHEADER); fread(*info, 1, infosize, fp); imgsize = (*info)->bmiHeader.biSizelmage; if (imgsize == 0) imgsize = ((*info)->bmiHeader.biWidth * (*info)->bmiHeader.biBitCount + 7) / 8 * abs((*info)-> bmiHeader.biHeight); fread(pixels, 1, imgsize, fp);
Напишете OpenGL ф-ја која ке овозможи позиционирање во рамките на апликацискиот прозорец на една ВМР слика со димензи 2х2?void Display(void) { ....... if (pixels) { glRasterPos2f(120, 120); glDrawPixels(info-> bmiHeader.biWidth, info->bmiHeader.biHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, pixels); } glFlush(); glutSwapBuffers(); glutPostRedisplay(); } int main(int argc, char* argv[]) { pixels = ReadBitmap("test.bmp", &info); }
include <windows.h>include <glut.h>voidDisplay(void){glClear(GL_COLOR_BUFFER_BIT);glFlush(); }voidinit(void){glClearColor(1.0,0.0,0.0);glViewport(0,0,320,240);gluOrtho2D(0.0,160.0,0.0,120.0);}voidmain(intargc, char*argv[]){glutInitDisplayMode(GLUT_SINGLE| GLUT_RGB);glutInitWindowSize(320,240);glutCreateWindow(“Prozorecvo OpenGLi GLUT");init();glutDisplayFunc(Display);glutMainLoop();}
5ta zadaca int main (int argc, char* argv[ ]){
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (500, 500);glutCreateWindow("prikazi bmp fajl");pixels = ReadBitmap("test.bmp", &info);glutDisplayFunc(Display);}void Display(void) { if (pixels) { gl_Clear(GL_COLOR_BUFFER_BIT);glRasterPos2f(2.0, 3.0); glDrawPixels(info-> bmiHeader.biWidth, info->bmiHeader.biHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, pixels); } glFlush();}