//Desenha a mesa void drawTable() { //Desenha a tᢵa da mesa glPushMatrix(); rotaciona(); glColor3f(0.5f, 0.35f, 0.05f); glTranslatef(75.0f, -16.0f, 75.0f); glScalef(100.0f,2.0f,100.0f); glutSolidCube(1); glPopMatrix(); //Desenha as pernas da mesa glPushMatrix(); rotaciona(); glColor3f(0.5f, 0.35f, 0.05f); glTranslatef(30.0f,-87.0f,30.0f); glScalef(1.0f,1.0f,1.0f); glRotatef(-90.0f,1.0f,0.0f,0.0f); glutSolidCylinder(5.0f,70.0f,20.0f,10.0f); glPopMatrix(); glPushMatrix(); rotaciona(); glColor3f(0.5f, 0.35f, 0.05f); glTranslatef(120.0f,-87.0f,30.0f); glScalef(1.0f,1.0f,1.0f); glRotatef(-90.0f,1.0f,0.0f,0.0f); glutSolidCylinder(5.0f,70.0f,20.0f,10.0f); glPopMatrix(); glPushMatrix(); rotaciona(); glColor3f(0.5f, 0.35f, 0.05f); glTranslatef(120.0f,-87.0f,120.0f); glScalef(1.0f,1.0f,1.0f); glRotatef(-90,1.0,0,0); glutSolidCylinder(5.0f,70.0f,20.0f,10.0f); glPopMatrix(); glPushMatrix(); rotaciona(); glColor3f(0.5f, 0.35f, 0.05f); glTranslatef(30.0f,-87.0f,120.0f); glScalef(1.0f,1.0f,1.0f); glRotatef(-90.0f,1.0f,0.0f,0.0f); glutSolidCylinder(5.0f,70.0f,20.0f,10.0f); glPopMatrix(); }
//Desenha uma esfera void drawSphere() { glPushMatrix(); rotaciona(); glTranslatef(esferaX,-11.0,esferaZ); glColor3f(0.5, 0.1, 0.1); glScalef(0.5,0.5,0.5); glutSolidSphere(7,12,12); glPopMatrix(); }
//Desenha um teapot void drawTeapot() { glPushMatrix(); rotaciona(); glTranslatef(teapotX,-11.0,teapotZ); glColor3f(1, 1, 0); glScalef(0.5,0.5,0.5); glutSolidTeapot(5); glPopMatrix(); }
main(){ int n,cont=0,i=1; printf("\t VERIFICA QUANTOS NÚMEROS SãO PRIMOS CIRCULARES ENTRE 1000 E 20000\n\n"); for(n=1000; n <= 20000;n++){ if(primos_circ(n) == 1){ // avalia se o número é primo cont = qtdDigitos(n); if(rotaciona(n,cont) == 1 )//avalia se é primo circular printf("\nO %d° número primo circular é %d",i++,n); } } }
//Desenha o gato void drawCat() { //Push glPushMatrix(); //Gato rotaciona(); glColor3f(0.5,0.5,0.4); //Cor do gato glTranslatef(catX,-11.0,catZ); //Posicao inicial do gato glScalef(0.5,0.5,0.5); //Escala (Cabe硠do gato) glutSolidSphere(8,16,16); //Esfera (Cabe硠do gato) glRotatef(catRotation, 0.0, 1.0, 0.0); //Rotacao do gato //Fucinho glColor3f(0.5,0.5,0.4); //Cor do fucinho glTranslatef(0,0.0,4.0); //Transla磯 do fucinho glScalef(0.9,0.8,0.8); //Escala (Fucinho do gato) glutSolidCone(8,9,16,16); //Cone (Fucinho do gato) //Olhos glColor3f(1,1,1); //Cor dos olhos do gato glTranslatef(-4.2,5.0,2.0); //Transla磯 do olho direito glScalef(0.3,0.3,0.3); //Escala dos olhos do gato glutSolidSphere(8,16,16); //Esfera (Olho direito do gato) glTranslatef(26.0,0.0,0.0); //Transla磯 do olho esquerdo glutSolidSphere(8,16,16); //Esfera (Olho esquerdo do gato) //Orelhas glColor3f(0.5,0.5,0.4); //Cor das orelhas glScalef(1.5,1.5,1.5); //Escala (Orelhas do gato) glRotatef(-80.0,1.0,0.0,0.0); //Rotacao da orelha esquerda do gato glRotatef(30,0.0,1.0,0.0); //Rotacao da orelha esquerda do gato glTranslatef(0.0,15.0,4.0); //Transla磯 da orelha esquerda do gato glutSolidCone(8,15,16,16); //Cone (Orelha esquerda do gato) glRotatef(-57.0,0.0,1.0,0.0); //Rotacao da orelha direita do gato glTranslatef(-18.0,0.0,9.0); //Transla磯 da orelha direita do gato glutSolidCone(8,15,16,16); //Cone (Orelha direita do gato) //Esfera nos Olhos glColor3f(0,0,0); //Cor dos olhos do gato glTranslatef(15.5,-18.0,-9.5); //Transla磯 do olho direito glScalef(0.3,0.3,0.3); //Escala dos olhos do gato glutSolidSphere(8,16,16); //Esfera (Olho direito do gato) glRotatef(80.0,1.0,0.0,0.0); //Rotacao da orelha direita do gato glRotatef(5.0,0.0,1.0,0.0); //Rotacao da orelha direita do gato glTranslatef(-52.0,26.0,0.5); //Transla磯 do olho esquerdo glutSolidSphere(8,16,16); //Esfera (Olho esquerdo do gato) //Pop glPopMatrix(); }
int main(){ //Pontos iniciais Ponto P1, P2, P3, P4, P5, P6, P7, P8; float se, co, tz, cpz; //Pontos rotacionados Ponto *rP1, *rP2, *rP3, *rP4, *rP5, *rP6, *rP7, *rP8; //Pontos Projetados perspectivamente Ponto *iP1, *iP2, *iP3, *iP4, *iP5, *iP6, *iP7, *iP8; //Declaração da matriz de rotação struct matriz4x4 mRotaciona; int RXmin,RXmax,RYmin,RYmax,a,b; Window win; Display *display; int width = 256, height = 256, x = 0, y = 0, i, tx, ty,ref,rot; GC gc; unsigned long valuemask = 0; XGCValues values; XColor cor; P1.x = 30; P1.y = -10; P1.z = 10; P1.W = 1; P2.x = 30; P2.y = -10; P2.z = -10; P2.W = 1; P3.x = 30; P3.y = 10; P3.z = 10; P3.W = 1; P4.x = 30; P4.y = 10; P4.z = -10; P4.W = 1; P5.x = -30; P5.y = -10; P5.z = 10; P5.W = 1; P6.x = -30; P6.y = -10; P6.z = -10; P6.W = 1; P7.x = -30; P7.y = 10; P7.z = 10; P7.W = 1; P8.x = -30; P8.y = 10; P8.z = -10; P8.W = 1; //Variaveis para calculo do seno e cosseno do angulo de rotacao se = sin(90*PI/180); co = cos(90*PI/180); //Inicializacao da matriz de Rotacao em relacao ao eixo z mRotaciona.a11 = co; mRotaciona.a12 = -se; mRotaciona.a13 = 0; mRotaciona.a14 = 0; mRotaciona.a21 = se; mRotaciona.a22 = co; mRotaciona.a23 = 0; mRotaciona.a24 = 0; mRotaciona.a31 = 0; mRotaciona.a32 = 0; mRotaciona.a33 = 1; mRotaciona.a34 = 0; mRotaciona.a41 = 0; mRotaciona.a42 = 0; mRotaciona.a43 = 0; mRotaciona.a44 = 1; //************************************** (a) ********************************************** //Estou utilizando a regra da mão direita //Chamada da funcao que rotaciona o ponto rP1 = rotaciona(&mRotaciona, &P1); rP2 = rotaciona(&mRotaciona, &P2); rP3 = rotaciona(&mRotaciona, &P3); rP4 = rotaciona(&mRotaciona, &P4); rP5 = rotaciona(&mRotaciona, &P5); rP6 = rotaciona(&mRotaciona, &P6); rP7 = rotaciona(&mRotaciona, &P7); rP8 = rotaciona(&mRotaciona, &P8); //************************************** (b) ********************************************** //Projeção Perspectiva printf("\n\nDigite o valor Tz: \n"); scanf("%f",&tz); printf("\nDigite o valor Cpz: \n"); scanf("%f",&cpz); iP1 = Projeta(tz, cpz, rP1); iP2 = Projeta(tz, cpz, rP2); iP3 = Projeta(tz, cpz, rP3); iP4 = Projeta(tz, cpz, rP4); iP5 = Projeta(tz, cpz, rP5); iP6 = Projeta(tz, cpz, rP6); iP7 = Projeta(tz, cpz, rP7); iP8 = Projeta(tz, cpz, rP8); //************************************** (c) ********************************************** //Entrada dos valores do retangulo de visualizacao printf("\n\nDigite o valor do RXmin: \n"); scanf("%f",&RXmin); printf("\nDigite o valor RXmax: \n"); scanf("%f",&RXmax); printf("\n\nDigite o valor do RYmin: \n"); scanf("%f",&RYmin); printf("\nDigite o valor RYmax: \n"); scanf("%f",&RYmax); //width = modulo(RXmin) + modulo(RXmax); //height = modulo(RYmin) + modulo(RYmax); win = XCreateSimpleWindow(display, RootWindow(display, DefaultScreen(display)), x, y, width, height, 4, BlackPixel(display, DefaultScreen(display)), WhitePixel(display, DefaultScreen(display))); XMapWindow(display, win); gc = XCreateGC(display, win, valuemask, &values); XSync(display, False); XSetForeground(display, gc, WhitePixel(display, DefaultScreen(display))); XSetBackground(display, gc, BlackPixel(display, DefaultScreen(display))); XAllocNamedColor(display, XDefaultColormap(display, DefaultScreen(display)),"black", &cor, &cor); XSetForeground(display, gc, cor.pixel); //Desenhando os pontos a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP2->x; b = iP2->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); a = iP1->x; b = iP1->y; XDrawPoint(display, win, gc, a, b); //Desenhando as 12 retas reta(&win, &gc, display,iP1->x,iP2->x,iP1->y,iP2->y); reta(&win, &gc, display,iP2->x,iP4->x,iP2->y,iP4->y); reta(&win, &gc, display,iP4->x,iP3->x,iP4->y,iP3->y); reta(&win, &gc, display,iP3->x,iP1->x,iP3->y,iP1->y); reta(&win, &gc, display,iP1->x,iP5->x,iP1->y,iP5->y); reta(&win, &gc, display,iP2->x,iP6->x,iP2->y,iP6->y); reta(&win, &gc, display,iP3->x,iP7->x,iP3->y,iP7->y); reta(&win, &gc, display,iP4->x,iP8->x,iP4->y,iP8->y); reta(&win, &gc, display,iP5->x,iP6->x,iP5->y,iP6->y); reta(&win, &gc, display,iP6->x,iP8->x,iP6->y,iP8->y); reta(&win, &gc, display,iP8->x,iP7->x,iP8->y,iP7->y); reta(&win, &gc, display,iP7->x,iP5->x,iP7->y,iP5->y); XFlush(display); sleep(30); XFreeGC(display, gc); XCloseDisplay(display); return 0; }