Universidade do Vale do Paraíba
Download
1 / 107

Material I-Bimestre - PowerPoint PPT Presentation


  • 75 Views
  • Uploaded on

Universidade do Vale do Paraíba Colégio Técnico Antônio Teixeira Fernandes Disciplina Introdução a Computação Gráfica (ICG). Material I-Bimestre

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Material I-Bimestre' - bill


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Universidade do Vale do ParaíbaColégio Técnico Antônio Teixeira FernandesDisciplina Introdução a Computação Gráfica (ICG)

Material I-Bimestre

Primitivas Gráficas em 2D, Conceito de pontos pixel, Sistema de cores,linhas retas,Algoritmo DDA,Breseham,Linhas cores e espessuras, Traçando círculos e elipses,Coordenadas polares, preenchimento de áreas, transformações geométricas em duas dimensões, Tratamento Imagens BMP(Mapa de Bits)

Site : http://www1.univap.br/~wagner

Prof. Responsável

Wagner Santos C. de Jesus


Computa o gr fica cg
Computação Gráfica (CG)

  • Vem a ser a forma de se fazer uma representação da realidade graficamente na resolução de computadores.

  • A CG vem auxiliando nas mais diversas áreas do conhecimento; facilitando a visualização e simulação de eventos sociais, culturais e científicos.


Algumas reas de atua o da computa o gr fica
Algumas áreas de atuação da computação gráfica

  • Engenharia – Simulação e CAD

  • Bioengenharia – Simulação de crescimento tumoral

  • Medicina – Sistemas de eletrocardiograma e Tomografias

  • Arte e Cinema – (Efeitos especiais e personagens). Representação de quadros e esculturas

  • Fotografia – Processamento de imagens

  • Geografia – Sistema informações geográficas

  • Arquitetura – Sistemas especializados em plantas de edificações.

  • Entretenimento e cultura – Jogos e vídeo games.

  • Matemática, Física e estatística.


Simulação de crescimento tumoral

Criação de texturas de pelos de animais

Simulador de Gestação

Criação de realidade virtual simulação de deslocamento humano.

Imagem do leito de um rio

em relevo


Criação de modelagem orgânica digital

Sistema de informações geográficas

Simulador Neuro

Cirúrgico

Cena de Praça pública (CCRV)

Auto-CAD – Arquitetura e Edificações (AutoDesk)



Entretenimento (Jogos em 2D)

Tiro ao Alvo

Corrida

Estatística e Cinema

Cinema cena do filme (toyStoy - 1995) -Estúdio: Walt Disney Pictures / Pixar Animation Studios

Gráfico (Estatística)



Filme shrek 2004 produtora s dreamworks skg pacific data images pdi
Filme Shrek primitivas básicas.2004 - Produtora(s): DreamWorks SKG, Pacific Data Images (PDI)

Simulação de Funcionamento de Máquinas usando modelo Virtual AutoDesk.

Projeto trem de pouso aeronave


Cena confeccionada pelos alunos andr e rafael 2008
Cena confeccionada pelos alunos primitivas básicas.André e Rafael – 2008

Software - CCRV


Cena vista de outro ngulo
Cena vista de outro ângulo primitivas básicas.

Software - CCRV


Ca a f16 2009
Caça F16 2009 primitivas básicas.


Ca a f16 2009 francisco
Caça F16 2009 (Francisco) primitivas básicas.



Primitivas gr ficas 2d
Primitivas Gráficas – 2D 2D.

Chamamos de primitivas gráficas os comandos e funções que manipulam e alteram os elementos gráficos de uma imagem. Também entram na definição os elementos básicos de gráficos a partir dos quais são construídos outros, mais complexos.(Hetem Annibal Jr.,2006).


Pontos
Pontos 2D.

  • O ponto é a unidade gráfica fundamental e também pode ser chamada de pixel.

    Propriedades de um pixel :

  • Posição no plano gráfico (x,y)

  • Cor


Representa o de pixel
Representação de pixel 2D.

  • (x,y) preto

(coordenada - y)

(coordenada - x)

Para se obter um pixel é necessário informar o par ordenado (x,y), que possibilita as coordenadas de linha e coluna onde será pintada a grade do vídeo; de acordo com a resolução especificada no sistema operacional.


Eixo de coordenadas 800x600 ou 1024x768
Eixo de coordenadas (800x600) ou (1024x768) 2D.

0 – Colunas - x

y- Linhas - 0


Sinal de v deo anal gico
Sinal de vídeo Analógico 2D.

Linha impar

Linha par


Exibição do vídeo 2D.

O video é exibido lendo-se eletronicamente o sinal de vídeo e transformando-o no movimento do feixe de elétrons que varre a tela do monitor analógico.



Pintando um pixel na pr tica usando c builder
Pintando um pixel na prática 2D.usando C++ Builder

Para se tratar elementos gráficos podemos usar um objeto denominado Canvas que possibilita usar primitivas gráficas.

Canvas

Ponto

Linha

Retângulo

Elipse

Arcos

OBJETO


Criando um ponto
Criando um ponto 2D.

Para se desenhar um ponto usa-se a propriedade Pixels do objeto Canvas.

Exemplo:Canvas->Pixels[x][y] = RGB(0,0,0);

Onde x coordenada da coluna; e y coordenada da linha a função RGB determina a cor do pixel que será plotado na tela.


Tons monocrom ticos
Tons monocromáticos 2D.

0

127

255

0

255

Faixa de tons de cinza => C, portanto 0 <= C <= 255




Exemplo da cria o de um ponto no v deo algoritmo
Exemplo da criação de um ponto no vídeo - algoritmo 2D.

Pintap(real : x,y,cor)

inicio

pixels[x][y] <- cor;

fim


Linhas retas
Linhas Retas 2D.

  • Para se desenhar uma reta é necessário usar primitivas gráficas, onde as primitiva vem a ser um conjunto de algoritmos para se realizar elementos gráficos mais complexos.


Conceito matem tico de reta
Conceito Matemático de reta 2D.

Onde (m) Coeficiente ângular em relação ao eixo x.

Ângulo entre 0º e 45º com eixo x, o Coeficiente linear b dá o valor do eixo y.

se

se

Ângulo entre 45º e 90º com eixo x.

Dados dois pontos no plano P1 e P2, pode-se obter m e b da seguinte maneira.

(2)

(1)



Dda digital diferencial analyser analisador diferencial digital
DDA – Digital Diferencial Analyser algoritmos de retas(Analisador Diferencial Digital)

Trata-se de um algoritmo que respeita as equações de coeficiente angular e linear mostrados anteriormente; Porem esse algoritmo torna-se ineficiente em alguns caso mostrando uma certa descontinuidade nas retas desenhadas.


Algoritmo dda codificado
Algoritmo DDA (codificado) algoritmos de retas

Exemplos valores (x0,y0)-(x1,y1)

retaDDA( real : x0, y0, x1, y1)

Inicio

dx <- x1 - x0

dy <- y1 - y0

x <- x0

y <- y0

s <- 0

se (dx > dy) entao

s <- dx

senao

s <- dy

fim_se

xi <- dx / s

yi <- dy / s

Pintap( x,y, cor)

Para x de 0 ate s faca

x <- x + xi

y <- y + yi

Pintap( x,y, cor)

fim_para

fim

(500,100)

(100,100)

(100,200)

(300,600)


Breseham
Breseham algoritmos de retas

Esse algoritmo baseia-se no argumento de que um segmento de reta, ao ser plotado, deve ser contínuo, os pixels que compõem o segmento devem ser vizinhos; Isso fará com que os pontos das retas sejam próximos não havendo separação entre os pixels pintados.


Algoritmo de breseham
Algoritmo de Breseham algoritmos de retas

  • Calcula-se

  • Calculam-se variáveis auxiliares:

  • Coloca-se nas variáveis o ponto inicial: x = e y =

  • Plota-se o ponto (x,y)

  • Calcula-se os parâmetros de decisão:

  • Se p for negativo então x = x + 1, passa-se para passo 8.

  • Se p for positivo ou zero, então x = x + 1, y = y + 1,

  • Repetem-se os passos 6 a 7 até que o ponto seja alcançado


C builder breseham
C++ Builder, Breseham algoritmos de retas

Em linguagens modernas esse algoritmo já se encontra implementado e melhorado. Não havendo necessidade de uma nova implementação.


Algoritmo
Algoritmo algoritmos de retas

retaBreseham (inteiro:x0,y0,x1,y1)

Inicio

MoverAte(x0,y0)

PintarAte(x1,x1)

fim


M todos para segmentos de retas
Métodos para segmentos de retas algoritmos de retas

MoveTo() : Determina o ponto inicial para um segmento de reta.

Exemplo :

Canvas->MoveTo(x0,y0);


M todo lineto
Método:LineTo(): algoritmos de retas

Determina o ponto final para o segmento de reta.

Exemplo :

Canvas->LineTo(x1,y1);


Exemplo pr tico
Exemplo Prático algoritmos de retas

Canvas->MoveTo(100,100);

Canvas->LineTo(100,200);

(100,100)

(100,200)


Espessura de uma linha
Espessura de uma linha algoritmos de retas

Propriedade : Pen Permite ativar a caneta gráfica; em conjunto com Width que determina espessura de um seguimento de reta.

Exemplo :

Canvas->Pen->Width = x ;

Espessura


Cor da linha color
Cor da linha (Color) algoritmos de retas

Propriedade : Color determina a cor da linha usando padrão RGB().

Exemplo :

Canvas->Pen->Color = RGB(255,0,0);


Tipos de linhas
Tipos de linhas algoritmos de retas

Para usar os tipos de linhas usando objeto Canvas implementado em C++, usa-se as propriedades Pen,Style; determina o tipo de linha que será usada em uma figura.

Sintaxe :

Canvas->Pen->Style = <Estilo da linha>;


Estilos da linha
Estilos da Linha algoritmos de retas


Criando um ret ngulo
Criando um retângulo algoritmos de retas

Método Rectangle() : Cria um retângulo com a indicação de dois pontos.

Exemplo :

Canvas->Rectangle(5, 5, 100, 50);


Círculos e Elipses algoritmos de retas


C rculos
Círculos algoritmos de retas

Traçado de um círculos:

Um circulo vem a ser um conjunto de pontos que estão a uma mesma distância de um ponto; essa distância é também chamada de raio. E o ponto distante de todos os outros é o centro.

Raio

Obtemos a seguinte definição.

Centro

Essa definição não tem como ser usada em computação gráfica.


Defini o v lida para a computa o gr fica
Definição válida para a computação gráfica. algoritmos de retas

y =f(x) ou x = g(y), Isolando-se as variáveis teremos

g(y)

f(x)

Essa definição quando um segmento de círculo fica quase horizontal ou vertical um incremento e x ou y tornará o arco descontinuo.


Para podermos criar um algoritmo que desenhe o seguimento circular devemos converte as expressões anteriores em coordenadas polares. Como função de raio e de um ângulo.

Funções trigonométricas:

É um ângulo que varia entre


Precis o dependente do raio do c rculo
Precisão dependente do raio do círculo circular devemos converte as expressões anteriores em coordenadas polares. Como função de raio e de um ângulo.

3

2

4

1

5

8

6

7


Algoritmo do segmento de arcos e c rculos usando fun es trigonom tricas sentido hor rio
Algoritmo do segmento de arcos e círculos usando funções trigonométricas sentido horário.

Xc, Yc – Centro Arco

Raio – Distância do centro nos pontos que formam o arco

Ti, Tf – valores iniciais e finais de

Cor : poderá ser três variáveis inteiras para receber valores RGB.

dArc(Inteiro:Xc,Yc, raio,Ti,Tf, cor)

Inicio

moverAte(Xc,Yc)

para teta de Ti ate Tf faca

x <- Xc + raio * cos(teta)

y <- Yc + raio * sin(teta)

Pintap(x,y,cor)

fim_para

fim

Para forma um circulo deverá estar entre 0 e 2


Observa o
Observação trigonométricas sentido horário.

As Variáveis Ti e Tf, serão iniciadas com valores em graus que deverão ser transformada em radiano no momento de sua implementação; que será equivalente a teta.


O algoritmo apresentado anteriormente conhecido como funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para círculos.

Esse algoritmo já se encontra implementado em C++.


Implementando arcos precisos
Implementando arcos precisos funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para círculos.

Método : Arc() - Desenha círculos e arcos.

Sintaxe :

Arc(Esq,top,Dir,Bai,Dir,Top,Esq,Top)

Exemplo :

Canvas->Arc(100,200,300,400,500,600,700,800);


Elipses
Elipses funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para círculos.

Traçado de uma Elipse:

Uma elipse é definida como um conjunto de pontos cuja soma das distâncias para dois pontos fixos é constantes. Onde os dois pontos fixos são chamados de foco da elipse. Sua definição matemática é:

Onde

São as posições dos focos,

São as do ponto P distância até os focos.

p=(x,y)

Essa definição não tem como ser usada em computação gráfica.


Para se obter um algoritmo que satisfa a as defini es em computa o gr fica
Para se obter um algoritmo que satisfaça as definições em computação gráfica.

Se faz necessário uma definição f(x) e g(y). Coordenada polar

rx e ry referem-se aos raios da elipse na direção x e y, (xc, yc) é o centro da elipse. é um ângulo que vária entre 0 e 2

O número de passos deverá aumentar com o raio.


Quadrante de simetria numa elipse
Quadrante de simetria numa elipse computação gráfica.

1

2

4

3


Algoritmo do segmento de arcos para confecção da elipse usando funções trigonométricas sentido horário.

Xc, Yc – Centro Arco

Rx, Ry – Raio da elipse na direção x e y. Rx < Ry

Ti, Tf – valores iniciais e finais de

Cor : poderá ser três variáveis inteiras para receber valores RGB.

dElipse(Inteiro:Xc,Yc, Rx,Ry,Ti,Tf, cor)

Inicio

moverAte(Xc,Yc)

para teta de Ti ate Tf faca

x <- Xc + Ry * cos(teta)

y <- Yc + Rx * sin(teta)

Pintap(x,y,cor)

fim_para

fim

Para forma um circulo deverá estar entre 0 e 2


O algoritmo apresentado anteriormente conhecido como funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Esse algoritmo já se encontra implementado em C++.


Ponto m dio para elipse
Ponto Médio para Elipse funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Método : Ellipse() desenha uma elipse nas coordenadas especificadas.

Exemplo :

Canvas->Ellipse(Xc,Yc, Rx, Ry);


Preenchimento de reas
Preenchimento de áreas funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Ao se desenhar um objeto além de seu contorno o mesmo poderá possuir cores em seu interior podendo ser visualizadas. Em C++ encontramos implementados esse algoritmos o que normalmente se usa é o preenchimento recursivo.


Propriedade brush color
Propriedade Brush, Color funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Permite realizar o preenchimento em um determinado objeto retângulo, círculo etc.

Exemplo :

Canvas->Brush->Color = RGB(0,255,0);

Canvas->Rectangle(10,10, 100, 50 );


Preenchimento hachura
Preenchimento Hachura funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Style : Propriedade que permite realizar um estilo de preenchimento em uma figura.

Exemplo :

Canvas->Brush->Color = RGB(255,0,0);

Canvas->Brush->Style = bsDiagCross;

Canvas->Rectangle(100, 100,200, 200 );


Tabela da propriedade style
Tabela da propriedade : Style funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Obs: São preenchimentos válidos apenas para o objeto

Canvas.


Usando textura
Usando Textura funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Podemos preencher uma figura usando um arquivo com uma imagem ou desenho.

Para realizar essa técnica usa-se um objeto da classe Graphics.

Exemplo :

Graphics::TBitmap *ObjBmp = new Graphics::TBitmap;


Usando o m todo loadfromfile
Usando o método LoadFromFile() funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Esse método irá carregar uma imagem ao fundo da figura.

Exemplo :

ObjBmp->LoadFromFile("/Textura.bmp");


Propriedade brush bitmap
Propriedade Brush, Bitmap funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Envolve toda uma imagem na área de uma figura.

Exemplo :

Canvas->Brush->Bitmap = ObjBmp;


Exemplo
Exemplo : funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;

try

{

BrushBmp->LoadFromFile(“Textura.bmp");

Canvas->Brush->Bitmap = BrushBmp;

Canvas->Ellipse(10,200,300,400);

}

__finally

{

Canvas->Brush->Bitmap = NULL;

delete BrushBmp;

}


Associando figuras a imagens
Associando figuras a imagens funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Exemplo :

TCanvas *pCanvas = Image1->Canvas;

pCanvas->Brush->Style = bsVertical;

pCanvas->Brush->Color = RGB(0,0,255);

pCanvas->Rectangle(0, 0, Image1->Width, Image1->Height);


Desenhando graficamente um texto
Desenhando Graficamente um texto funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

WwySsig

}

}Subida

Altura

} Descida

Linha de base

Tamanho da fonte


Cria o de textos
Criação de textos funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

TextOutA() : Permite desenhas um texto nas coordenadas especificadas.

Sintaxe : Canvas->TextOutA(x,y,String);

Exemplo :

Canvas->TextOutA(100,200,”Tchuk”);


Modificando atributos do texto
Modificando atributos do texto funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Propriedade : Font


Exemplo pr tico de texto formatado
Exemplo prático de texto formatado funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Canvas->Font->Color = RGB(255,0,0);

Canvas->Font->Size = 50;

Canvas->Font->Name = "Times New Roman";

Canvas->Font->Style = TFontStyles() << fsBold << fsStrikeOut << fsUnderline;

Canvas->TextOutA(100,200,“Bom Dia !!!");


Transforma es geom tricas 2d
Transformações Geométricas – 2D funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Chamamos de transformação o ato de levar um objeto de um ponto para outro, num sistema de referências. As transformações mais usadas são :

  • Translação

  • Rotação

  • Escala.


Transla o
Translação funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Chamamos de translação o ato de levar um objeto de um ponto para outro, num sistema de referência. Dado um ponto original (x,y) ; existe um ponto (x’,y’) translação, que corresponde ao ponto original dado por:

(tx, ty) – É chamado de vetor de translação ou vetor de deslocamento tx quantos pixels a figura está deslocada na horizontal e ty quantos pixels a figura esta deslocada na vertical.

{

x’=x+tx

y’=y+ty


Aplica o de uma transla o
Aplicação de uma translação funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

y0+ty

y1+ty

y0’

y1’

x0

x1

Translação


Implementa o de uma transla o
Implementação de uma translação funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

int x0 = 10; int y0 = 10;

int x1 = 100; int y1 =50;

ty = 70;

Canvas->Rectangle(x0,y0,x1,y1 );

Canvas->Rectangle(x0,y0+ty,x1,y1+ty );

Vetor de translação horizontal


Rota o
Rotação funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Dá-se o nome de rotação ao ato de girar um objeto de um ângulo, num sistema de referência.


Exemplo de aplica o de rota o em torno de um eixo
Exemplo de Aplicação de Rotação em torno de um eixo. funções polares; irá apresentar falha de precisão quando se aumentar o raio podem tornar imprecisões no traçado do circulo ou arco; Para resolver esse problema existe um algoritmo conhecido como ponto médio para Elipse.

Para ajuste no primeiro quadrante os valores devem ser negativos.

x’=xc + r * cos(180+teta)

y’=yc + r * sen(180+teta)

{

(100,200)

r

Origem (xc,yc)

(x’,y’)

teta = 90 graus


Implementa o em c de rota o em torno de um eixo de refer ncia
Implementação em C++ de Rotação em torno de um eixo de referência

Canvas->Font->Size = 50;

Canvas->Font->Color = RGB(0,0,255);

Canvas->TextOutA(100,200,".");

double r = 50;

double x1 = 100 + r * cos((180 * 3.141592) / 180);

double y1 = 200 + r * sin((180 * 3.141592) / 180);

Canvas->Font->Color = RGB(255,0,0);

Canvas->TextOutA(x1,y1,".");


Escala
Escala referência

Quando se aplica uma transformação de escala a um objeto, o resultado é um novo objeto semelhante ao original, mas “esticado” ou “encolhido”. Pode-se aplicar escala com valores diferentes para cada dimensão; por exemplo, dobrar um objeto na direção horizontal e dividir na vertical.


Formaliza o da escala
Formalização da Escala referência

Uma escala é determinada pelo vetor de escala (Sx,Sy). Onde Sx é a escala aplicada na direção x, e Sy é a escala aplicada na direção y.

Equação :

{

x’= xsx

y’= ysy


Aplicando escala
Aplicando Escala referência

y0

y1 * Sy

y’

x0

x1

* Sx

x’


Implementa o de escala em uma figura
Implementação de escala em uma figura. referência

int x0=100; int y0=200;

int x1=300; int y1=250;

int sx=2; int sy=2;

Canvas->Pen->Color = RGB(255,0,0);

Canvas->Brush->Style = bsCross;

Canvas->Brush->Color = RGB(0,0,255);

Canvas->Rectangle(x0,y0,x1,y1);

ShowMessage(" ");

Canvas->Rectangle(x0,y0,x1*sx,y1*sy );


Introdu o processando imagens bitmap
Introdução : Processando Imagens Bitmap referência

  • Processamento de imagem é qualquer forma de processamento de dados no qual a entrada e saída são imagens tais como fotografias ou quadros de vídeo.



Processamento computacional envolvendo imagens
Processamento computacional envolvendo imagens referência

Processar Imagem

Processamento

de

Imagens

Processamento de Imagens – Estuda as transformações de imagens, que pode ser de uma imagem em outra ou a estimação de parâmetros da imagem.


Computa o gr fica cg1
Computação Gráfica (CG) referência

Cone de raio 1

altura 1, pós observador, pós iluminação, fundo, etc.

Processamento

em CG

Estuda os métodos de se criar imagens sintéticas a partir de especificações.


Tipo bitmap
Tipo Bitmap referência

  • Device Independent Bitmap (DIB) ou Windows Bitmap (BMP) é um formato de gráficos por mapa de bits (composto por pixeis) usado pelos gráficos de subsistema (GDI) do MicrosoftWindows, e é usada geralmente como um formato de gráficos nessa plataforma.

GDI - Graphics Device Interface


Importante
Importante: referência

  • Um arquivo do tipo BMP é mais seguro para ser manipulado por não ter compressão de informações em seu formato causando a perda de qualidade na imagem ou figura.


Abrindo um arquivo de imagem
Abrindo um arquivo de imagem. referência

  • Primeiro o objeto da classe Image deve ser instanciado.

Image1->Picture->LoadFromFile("C:/PImagem/bolas.bmp");


Fazendo leitura da imagem
Fazendo leitura da Imagem referência

  • Uma das técnica mais simples para realizar a leitura de uma imagem é chamada de varredura horizontal. Onde pega-se o tamanho da área ocupada pela imagem e realiza-se a leitura dos pixels até o final de cada linha fazendo isso até o final da imagem.


Exemplo : Varredura Horizontal referência

Largura (width)

(Xn+1,Yn+1)

Altura

(height)


Capturando o tamanho da imagem width e height
Capturando o tamanho da imagem referênciaWidth e Height

// Cria um ponteiro do tipo Imagem.

Graphics::TBitmap *Bmp = new Graphics::TBitmap;

// Exibe imagem na tela

Tela->Picture->LoadFromFile("C:/Caminho/bolas.bmp");

// Aponta para o endereço da imagem

Bmp = Tela->Picture->Bitmap;

// Captura o tamanho da imagem

int largura = Bmp->Width;

int altura = Bmp->Height;


Identificando a cor do pixel
Identificando a cor do pixel. referência

Criar um objeto da classe TColor.

Exemplo : TColor captura_cor;

Esse objeto irá permitir reconhecer cores da imagem no formato RGB.


Exemplo : referência

byte r,g,b;

TColor captura_cor;

captura_cor= Bmp->Canvas->Pixels[x][y];

r = GetRValue(captura_cor);

g = GetGValue(captura_cor);

b = GetBValue(captura_cor);


Criando a varredura por arranjos simples
Criando a varredura por arranjos simples. referência

A, são arranjos simples de S elementos tomados 2 a 2.(par ordenado)

Seja: Z

S, área retangular da imagem.

x

S

y


Exemplo : (Troca a imagem de cor) referência

Graphics::TBitmap *Bmp = new Graphics::TBitmap;

Tela->Picture->LoadFromFile("C:/PImagem/taco.bmp");

Image1->Picture->LoadFromFile("C:/PImagem/taco.bmp");

Bmp = Tela->Picture->Bitmap;

TColor captura_cor;

byte r,g,b;

int largura = Bmp->Width;

int altura = Bmp->Height;

for(int coluna=0;coluna<=largura;coluna++) {

for(int linha=0;linha<=altura;linha++){

captura_cor = Bmp->Canvas->Pixels[coluna][linha];

r = GetRValue(captura_cor);

g = GetGValue(captura_cor);

b = GetBValue(captura_cor);

if(r == 255 && g == 0 && b ==0)

Bmp->Canvas->Pixels[coluna][linha] = RGB(0,0,0);

}

}

Bmp->SaveToFile("C:/PImagem/taconovo.bmp");


Capturando cores objeto da classe tcolordialog dialog
Capturando cores referênciaobjeto da classe TColorDialog (Dialog)

Retorna com os tons nas faixas RGB correspondente a cor selecionada.


M todo execute
Método Execute() referência

Realiza a abertura da caixa de dialogo (ColorDialog1), para escolha da cor desejada.

boolean logico = Cd->Execute();


Capturando a cor selecionada
Capturando a cor selecionada. referência

TColor cor = ColorDialog1->Color;

Byte r = GetRValue(cor);

Byte g = GetGValue(cor);

Byte b = GetBValue(cor);

Captura as cores escolhidas nas faixas adequadas.


Tperformancegraph sample
TPerformanceGraph (Sample) referência

Cria uma área para representação de gráficos de funções matemáticas periódicas.

Onde as grades representam uma determinada escala para representações e leituras dos gráficos.


M todo datapoint
Método: DataPoint() referência

Realiza a atribuição de pontos e cor na área do objeto, PerformanceGraph permitindo plotar um gráfico com deslocamento no período.

Sintaxe :

Obj_perf->DataPoint(<cor>,<ponto> );


Update
Update() referência

Realiza a impressão do ponto no gráfico.

Sintaxe :

Obj_perf->Update();


Exemplo de gr fico da f x x 2 onde 10 x 30
Exemplo: de gráfico da f(x) = x referência2, onde –10 <= x <= 30

int b = 30;

for(int x = -10;x<=b;x++) {

int y = pow(x,2);

Pg->DataPoint(RGB(255,0,0),abs(y));

Pg->Update();

Pg->Refresh();

}

O programa acima irá imprimir uma parábola como mostra a figura, acima.


ad