void desenhaCobra () { glColor3f(0.1, 0, 0.3); desenhaQuadrilatero(0.08, 0, 0.1, 0, 0.1, 0.2, 0.08, 0.2); desenhaTriangulo(0.08, 0.2, 0.1, 0.2, 0.09, 0.25); for (float i = 0.02; i < 0.12; i += 0.02) { glColor3f(5*i, 0, 0.3); desenhaCirculo(0, 0, 0.12-i); glColor3f(0, 0, 0); desenhaCircunferencia(0, 0, 0.12-i); } glColor3f(1, 0, 0); desenhaLinha(0, -0.1, 0, -0.2, 2); desenhaLinha(0, -0.2, -0.01, -0.21, 2); desenhaLinha(0, -0.2, 0.01, -0.21, 2); glColor3f(0.5, 0, 0.3); desenhaElipse(0, -0.05, 0.07, 0.05); desenhaElipse(0, -0.1, 0.03, 0.06); glColor3f(0.2, 0, 0.3); desenhaElipse(-0.015, -0.115, 0.01, 0.005); desenhaElipse(0.015, -0.115, 0.01, 0.005); }
void desenhaMinhoca (int ciclo) { desenhaTerra(); if (ciclo > 45) { desenhaCirculo(0, 0, 0.06); glColor3f(1, 0.8, 0.8); desenhaCirculo(0, 0, 0.04); if (ciclo < 50) for (float i = -0.15; i <= 0.15; i += 0.3) for (float j = -0.15; j <= 0.15; j += 0.3) { glColor3f(0.5, 0.2, 0.1); desenhaCirculo(j, i, 0.01); glColor3f(0, 0, 0); desenhaCircunferencia(j, i, 0.01); } else { glPushMatrix(); int numero0a3 = (ciclo/10)%4; glRotatef(numero0a3 * 90, 0, 0, 1); glColor3f(1, 0.8, 0.8); desenhaQuadrilatero(-0.04, 0, 0.04, 0, 0.04, -0.11, -0.04, -0.11); desenhaCirculo(0, -0.11, 0.04); glColor3f(1, 0, 0); desenhaLinha(-0.04, 0.00, 0.04, 0.00, 2); desenhaLinha(-0.04, -0.05, 0.04, -0.05, 2); desenhaLinha(-0.04, -0.10, 0.04, -0.10, 2); glPopMatrix(); } } }
void desenhaGeloTrincado () { glColor3f(0, 0, 1); desenhaLinha(0.00, 0.00, 0.05, -0.05, 1); desenhaLinha(0.05, -0.05, 0.05, -0.10, 1); desenhaLinha(0.00, 0.00, -0.03, -0.05, 1); desenhaLinha(-0.03, -0.05, -0.07, -0.06, 1); desenhaLinha(0.00, 0.00, -0.05, 0.00, 1); desenhaLinha(-0.05, 0.00, -0.10, 0.05, 1); desenhaLinha(0.00, 0.00, 0.00, 0.05, 1); desenhaLinha(0.00, 0.05, -0.03, 0.10, 1); desenhaLinha(0.00, 0.00, 0.05, 0.03, 1); desenhaLinha(0.05, 0.03, 0.09, 0.03, 1); }
void desenhaRetangulo (Retangulo r, Cor cor, Imagem* img) { // Esquerda. if (r.e >= 0 && r.e < img->largura) desenhaLinha (criaCoordenada (r.e, r.c), criaCoordenada (r.e, r.b), cor, img); // Direita. if (r.d >= 0 && r.d < img->largura) desenhaLinha (criaCoordenada (r.d, r.c), criaCoordenada (r.d, r.b), cor, img); // Cima. if (r.c >= 0 && r.c < img->altura) desenhaLinha (criaCoordenada (r.e, r.c), criaCoordenada (r.d, r.c), cor, img); // Baixo. if (r.b >= 0 && r.b < img->altura) desenhaLinha (criaCoordenada (r.e, r.b), criaCoordenada (r.d, r.b), cor, img); }
void desenhaLagarto (float x, int ciclo) { if (x == PISTA1) glRotatef(180, 0, 0, 1); glColor3f(0.5, 0.8, 0.3); desenhaElipse(0, 0, 0.07, 0.05); desenhaElipse(-0.06, 0, 0.05, 0.05); desenhaTriangulo(0, 0.04, 0, -0.04, 0.16, 0); desenhaLinha(-0.04, -0.1, -0.04, 0.1, 5); desenhaLinha(0.04, -0.1, 0.04, 0.1, 5); desenhaLinha(-0.04, 0.08, -0.05, 0.09, 5); desenhaLinha(-0.04, 0.08, -0.03, 0.09, 5); desenhaLinha(0.04, 0.08, 0.03, 0.09, 5); desenhaLinha(0.04, 0.08, 0.05, 0.09, 5); desenhaLinha(-0.04, -0.08, -0.05, -0.09, 5); desenhaLinha(-0.04, -0.08, -0.03, -0.09, 5); desenhaLinha(0.04, -0.08, 0.03, -0.09, 5); desenhaLinha(0.04, -0.08, 0.05, -0.09, 5); }
void desenhaUrso () { glColor3f(0.9, 0.9, 0.9); desenhaQuadrilatero(-0.1, -0.125, 0.1, -0.125, 0.1, 0.125, -0.1, 0.125); desenhaCirculo(0, 0.125, 0.1); desenhaCirculo(0, 0.275, 0.02); desenhaElipse(-1/15.0, -0.125, 1/30.0, 0.125); desenhaElipse( 1/15.0, -0.125, 1/30.0, 0.125); glColor3f(1, 1, 1); desenhaCirculo(0, -0.1, 0.06); desenhaCirculo( 0.05, -0.05, 0.02); desenhaCirculo(-0.05, -0.05, 0.02); desenhaElipse(0, -0.17, 0.03, 0.0675); glColor3f(0, 0, 0); desenhaTriangulo(-0.015, -0.21, 0.015, -0.21, 0, -0.23); desenhaLinha(-0.03, -0.15, -0.01, -0.15, 1); desenhaLinha(0.03, -0.15, 0.01, -0.15, 1); }
void desenhaLekinho (/*int anguloMovimento*/) { glPushMatrix(); //glRotatef(anguloMovimento, 1, 0, 0); glColor3f(1, 0.8, 0.6); desenhaQuadrilatero(0.05, 0, 0.07, 0, 0.07, 0.08, 0.05, 0.08); //braço direito desenhaCirculo(0.06, 0.08, 0.015); glColor3f(0, 0, 0.7); desenhaQuadrilatero(-0.01, 0, -0.04, 0, -0.04, 0.1, -0.01, 0.1); //perna esquerda glColor3f(0.55, 0.27, 0.07); desenhaElipse(-0.025, 0.1, 0.02, 0.02); glPopMatrix(); glPushMatrix(); //glRotatef(-anguloMovimento, 1, 0, 0); glColor3f(1, 0.8, 0.6); desenhaQuadrilatero(-0.05, 0, -0.07, 0, -0.07, -0.08, -0.05, -0.08); //braço esquerdo desenhaCirculo(-0.06, -0.08, 0.015); glColor3f(0, 0, 0.7); desenhaQuadrilatero(0.01, 0, 0.04, 0, 0.04, -0.1, 0.01, -0.1); //perna direita glColor3f(0.55, 0.27, 0.07); desenhaElipse(0.025, -0.1, 0.02, 0.02); glPopMatrix(); glColor3f(1, 0, 0); desenhaElipse(0, 0, 0.07, 0.03); glColor3f(0, 0, 0); desenhaCirculo(0, 0, 0.03); desenhaTriangulo(-0.015, 0.04, -0.01, 0.07, -0.005, 0.04); desenhaTriangulo(-0.005, 0.04, +0.00, 0.07, +0.005, 0.04); desenhaTriangulo(+0.005, 0.04, +0.01, 0.07, +0.015, 0.04); glColor3f(1, 1, 1); desenhaLinha(-0.01, -0.02, -0.01, 0.02, 1); desenhaLinha(0, -0.02, 0, 0.02, 1); desenhaLinha(0.01, -0.02, 0.01, 0.02, 1); }
void desenhaLeaoMarinho () { desenhaAgua(); glColor3f(0.55, 0.27, 0.07); desenhaElipse(0, 0, 0.15, 0.075); desenhaCirculo(0, 0, 0.08); glColor3f(1, 1, 1); desenhaLinha(-0.05, -0.07, 0.05, -0.07, 1); desenhaLinha(-0.05, -0.08, 0.05, -0.08, 1); desenhaLinha(-0.05, -0.09, 0.05, -0.09, 1); glColor3f(0.65, 0.37, 0.17); desenhaCirculo(-0.01, -0.06, 0.03); desenhaCirculo( 0.01, -0.06, 0.03); desenhaCirculo( 0.00, 0.00, 0.05); glColor3f(0, 0, 0); desenhaElipse( 0.00, -0.105, 0.005, 0.0045); desenhaElipse( 0.04, -0.050, 0.003, 0.0075); desenhaElipse(-0.04, -0.050, 0.003, 0.0075); }
int main(int argc, char** argv) { /** ALOCAÇÃO DE VARIÁVEIS ****************************************/ Imagem *img; /* Estrutura que guarda imagem genérica */ int altura; /* Dimensao da estrutura imagem */ int largura; /* Dimensão da estrutura imagem */ Linha cab; /* Lista com comando para criar linhas */ Linha *atual; /* Ponteiro auxiliar para fazer linhas */ Imagem *R, *G, *B; /* Canais de cores para imagem */ int totalElementos; /* Auxiliar para nº de regiões achadas */ int i; /* Contador */ CelRegiao cabecas[MAX_REGIOES]; /* Vetor para cabeças das regiões de pixel da imagem */ float cores[12][3]= /* Matriz para cores a serem colocadas nos canais */ { {1.0, 0.0, 0.0}, /* 0 vermelho */ {0.0, 1.0, 0.0}, /* 1 verde */ {0.0, 0.0, 1.0}, /* 2 azul */ {1.0, 1.0, 0.0}, /* 3 amarelo */ {1.0, 0.0, 1.0}, /* 4 magenta */ {0.0, 0.0, 0.0}, /* 5 preto */ {0.2, 0.7, 0.4}, /* 6 verde 2 */ {0.7, 0.4, 0.2}, /* 7 marrom */ {0.0, 1.0, 1.0}, /* 8 ciano */ {0.5, 0.5, 0.5}, /* 9 cinza */ {1.0, 1.0, 1.0}, /* 10 branco */ {0.0, 0.0, 0.0} /* 11 preto */ }; /** LEITURA DE ARQUIVO DE ENTRADA ********************************/ cab.prox = NULL; leMondrian(argv[1], &altura, &largura, &cab); printf("\n(LEITURA)\t\taltura = %d largura = %d\n", altura, largura); /** FUNDO E BORDAS ***********************************************/ img = criaImagem(altura, largura); pintaImagem(img, COR_FUNDO); printf("(FUNDO) \t\tTudo OK\n"); desenhaBorda(img, COR_BORDA); printf("(BORDAS) \t\tTudo OK\n"); /** DESENHO DE LINHAS ********************************************/ for(atual = cab.prox; atual != NULL; atual = atual->prox) { printf("%c\n", atual->tipo); desenhaLinha(img, atual, COR_BORDA); } printf("(LINHAS) \t\tTudo OK\n"); /** SEGMENTAÇÃO DE REGIÕES ***************************************/ totalElementos = segmentaRegioes(img, cabecas); printf("total de elementos = %d\n", totalElementos); printf("(REGIOES) \t\tTudo OK\n"); printf("cabela: cabeca[0].tamanho = %d", cabecas[0].tamanho); /** CRIAÇÃO DOS CANAIS DE CORES **********************************/ R = criaImagem(altura, largura); copiaImagem(R, img); /* Vermelho */ G = criaImagem(altura, largura); copiaImagem(G, img); /* Verde */ B = criaImagem(altura, largura); copiaImagem(B, img); /* Azul */ printf("(MALLOC FILTROS) \tTudo OK\n"); printf("(copia) \t\tTudo OK\n"); /** PINTURA ******************************************************/ for(i = 0; i < totalElementos; i++) { printf("%d", i); pintaRegiao(&cabecas[i].cabpix, R, G, B, cores[i%12]); printf("verm = %f, verde = %f, azul = %f\n", cores[i][0], cores[i][1], cores[i][2]); }; /** SALVAR IMAGENS ***********************************************/ salvaImagem("img", img); salvaImagem("R", R); salvaImagem("G", G); salvaImagem("B", B); salvaImagemRGB(argv[2], R, G, B); printf("(SALVAR) \t\tTudo OK\n"); /** LIBERAÇÃO DE MEMÓRIA *****************************************/ free(img); free(R); free(G); free(B); printf("(FREE) \t\t\tTudo OK\n"); return 0; }
void desenhaLingua (float x) { if (x == PISTA1) glRotatef(180, 0, 0, 1); glColor3f(1, 0, 0); desenhaLinha(0.3, 0, -0.1, 0, 7); }