Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com codigo para gerar imagens


fpavelino

Pergunta

Pessoa, preciso implementar um programa de geração de imagens por "script".

Para desenhar um círculo, são necessários o Centro e o Raio do Círculo.

x = cos(t) * raio + centro.x

y = sen(t) * raio + centro.y

Para desenhar uma reta, são necessárias os pontos inicial e final da reta. Utilize o Algoritmo de Bresenham.

Para desenhar os retângulos, são necessários dois pontos, o superior esquerdo e o inferior direito.

Para desenhar um triangulo, são necessários os pontos dos três vértices.

Deve ser permitido ao usuário escolher a cor que será utilizada em cada primitiva gráfica. Para isso, o usuário deve entrar com os valores para as componentes Vermelho ®, Verde (G) e Azul (B) da cor.

A imagem deve ter um tamanho fixo de 512 por 512 pixels.

O que eu consegui fazer até agora foi o circulo estático, com o raio definido, alguém saberia me dar uma dica de como fazer os outros e como fazer para inserir as cores?

O que eu consegui:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <math.h>

const int x_max = 512;

const int y_max = 512;

unsigned char imagem[x_max][y_max];

void cria_imagem(){

int i;

int raio;

//"limpa" imagem (fundo preto)

for (i=0; i<x_max; i++)

memset(imagem, 0, y_max);

//desenha circulo

raio =20;

for (i=0; i<=90; i++){

float y = sin(i * M_PI/180);

float x = cos(i * M_PI/180);

imagem [int(x*raio+256)][int(y*raio+256)]=255;

imagem [int(-x*raio+256)][int(y*raio+256)]=255;

imagem [int(x*raio+256)][int(-y*raio+256)]=255;

imagem [int(-x*raio+256)][int(-y*raio+256)]=255;

}

// for (y=0; y<y_max; y++){

// if (x*y<=255)

// imagem[x][y]=(unsigned char)(x*y);

// else

// imagem[x][y]=(unsigned char) 255;

//}

//}

}

void gera_imagem(){

char * filename = "C:\\Users\\631120020\\Desktop\\circulo2.pbm";

FILE * fp=fopen(filename, "w");

if (fp){

fprintf(fp, "P2 \n");

fprintf(fp, "%d %d\n", x_max, y_max);

fprintf(fp, "255 \n");

for (int x=0; x<x_max; x++)

for (int y=0; y<y_max; y++)

fprintf(fp, "%d " , imagem[x][y]);

fclose(fp);

}

}

int main (int argc, char**argv){

cria_imagem();

gera_imagem();

int x;

scanf("%d", x);

return 0;

}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...