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?
Pergunta
fpavelino
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
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.