Computação Gráfica
CG é uma área da computação dedicada a criação, armazenamento e manipulação de imagens baseada em modelos matemáticos.
Lecture 1
Iniciaremos nosso curso aprendendo como construir uma imagem.
Portable Pixel Map (PPM)
O formato PPM nasceu no final da década de \(80\) para compartilhar imagens facilmente entre diferentes plataformas.
Código
Podemos escrever um código em C para construir uma imagem usando o formato PPM. Este objetivo será alcançado através da análise do programa ppm_create.c.
/**
* \file ppm_create.c
*
* \brief Criacao de uma imagem em PPM.
*
* \author
* Petrucio Ricardo Tavares de Medeiros \n
* Universidade Federal Rural do Semi-Árido \n
* Departamento de Engenharias e Tecnologia \n
* petrucio at ufersa (dot) edu (dot) br
*
* \version 1.0
* \date April 2025
*/
#include <stdio.h>
int main(){
// dimensoes da imagem
int width = 256;
int height = 256;
// Configurando o header do formato PPM
printf("P3\n %d \t %d\n 255\n", width, height);
for (int i = 0; i < height; i++){ // Altura
for (int j = 0; j < width; j++){ // Largura
printf("%d \t %d \t %d \n", i, j, 63);
}
}
return 0;
}
Descrição do programa
Inserimos na primeira linha do arquivo a biblioteca para lidar com entrada/saída de dados na linguagem C.
#include <stdio.h>
Definimos as dimensões (largura e altura) da imagem que estamos construindo.
int width = 256;
int height = 256;
Em seguida, configuramos o cabeçalho do formato PPM.
printf("P3\n %d \t %d\n 255\n", width, height);
No laço de repetição, percorremos a largura e altura da imagem preenchendo as cores dos pixels.
for (int i = 0; i < height; i++){ // Altura
for (int j = 0; j < width; j++){ // Largura
printf("%d \t %d \t %d \n", i, j, 63);
}
}
Compilação
O processo de compilação é realizado através do compilador GCC através do seguinte comando:
gcc <nome_arquivo>.c -o <nome_executavel>
Este comando criará um arquivo executável e a saída deve ser direcionada para um arquivo com extensão ".ppm".
./<nome_executavel> > output.ppm
Exercício
-
Construa uma imagem \(100 \times 100\) usando o formato PPM com fundo preto que tem apenas 1 pixel vermelho no centro da imagem.
-
Implemente uma função que altera o valor de um pixel da imagem.
-
Codifique uma função que salva a imagem no formato PPM.
-
Crie uma função que inicializa uma imagem com branco.
-
Construa uma imagem \(100 \times 100\) usando o formato PPM com fundo preto e escreva o caractere ' T ' no centro da imagem com alto contraste em relação ao fundo da imagem.