Пример #1
0
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);
}
Пример #2
0
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();
		}
	}
}
Пример #3
0
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);
}
Пример #4
0
 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);
 }
Пример #5
0
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);
}
Пример #6
0
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);
}
Пример #7
0
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);
}
Пример #8
0
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);
}
Пример #9
0
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;
}
Пример #10
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);
}