Usando Gráficos em C - Parte II
Autor: Fernando Vieira | Publicado: 2011-02-13T15:09:00-08:00

Como falei no post anterior, agora vou mostrar algumas funções básicas e seu funcionamento e deixarei um exemplo de plotador de gráfico.

Funções do Exemplo


initwindow(x,y) -&gt; abre tela com um determinado tamanho.
moveto(x,y) -&gt; move, o que seria seu cursor, para um determinado ponto da tela
lineto(x,y) -&gt; desenha uma linha do ponto onde estaria seu cursor até o definido por você.
setcolor(numero_cor) -&gt; coloca uma cor para a linha que você desenhar.
closegraph() -&gt; fecha a tela dos gráficos.
getx() -&gt; retorna a posição atual de x.
gety() -&gt; retorna a posição atual de y.

Outras Funções
                                
                                &nbsp;
arc (x, y , anguloini, angfim, raio) -&gt; desenha um arco num ponto definido com angulo inicial, final e raio.
circle (x, y, raio) -&gt; desenha um círculo no ponto definido com um determinado raio.
                                rectangle (x, y, largura, altura) -&gt; faz um retângulo saindo da posição inicial com uma determinada largura e altura. 
cleardevice() -&gt; apaga toda a tela do gráfico.
line (xo, yo, xf, yf) -&gt; Desenha uma linha desde os ponto incial até o ponto final. 
                                  
setbkcolor (numero_cor) -&gt; coloca uma cor de fundo na tela.
getbkcolor () -&gt; pega a cor de fundo da tela.
 getpixel (x, y) -&gt; retorna a cor de um pixel da tela na posição desejada.
outtext (texto) -&gt; Desenha uma palavra na tela do gráfico começando na posição atual.
outtextxy (x, y, texto) -&gt; Desenha uma palavra na tela do gráfico começando na posição desejada.


Algumas fontes: 

NIMEP: Universidade Metodista de Piracicaba 
Universidade Federal do Rio de Janeiro 
                                  
                                                                      
 


Aí embaixo um código que desenha (plota) uma reta de 1º Grau dados os valores de a e b:

&nbsp; #include &lt;graphics.h&gt;
&nbsp; #include &lt;stdio.h&gt;
&nbsp; 
&nbsp; int a,b,i;
&nbsp; int x1,y1,x2,y2;

&nbsp; int main() 
&nbsp; { 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initwindow(400,300); //abrindo tela para a parte gráfica do programa com tamanho 400x300 (Pixels)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //traçando os dois eixos de branco (cor padrão, porque eu não defini)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200,150);&nbsp;&nbsp; //vou pro centro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineto(300,150);&nbsp;&nbsp; //faço um traço à direita
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200,150);&nbsp;&nbsp; //vou pro centro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineto(100,150);&nbsp;&nbsp; //faço um traço à esquerda
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200,150);&nbsp;&nbsp; //vou pro centro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineto(200,250);&nbsp;&nbsp; //faço um traço pra baixo
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200,150);&nbsp;&nbsp; //vou pro centro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineto(200,50);&nbsp;&nbsp;&nbsp; //faço um traço pra cima
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //voltando ao centro
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200,150); 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //escolhendo a cor verde para diferenciar dos eixos
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setcolor(2);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //coletando os valores de x e y
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Digite os valores de a (coeficiente angular) e b (coeficiente linear):");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;a);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d",&amp;b);
&nbsp; 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\nPontos gerados pela funcao f(x) = %dx + %d (x,y):\n\n",a,b);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //traçando pontos com valores de x variando de -20 a 20, mesmo que o intevalo fechado [-20,20]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=-20; i&lt;=20; i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //lembrando que uma reta é a união de infinitos pontos, no nosso caso um segmento de reta de x=-20 a x=20
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x1 = i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //valor do x nesse ponto
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y1 = a*x1 + b;&nbsp;&nbsp; //valor do y nesse ponto
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i==-20)&nbsp;&nbsp;&nbsp; //primeiro ponto
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; moveto(200+x1,150-y1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //move para onde será o primeiro ponto (retorna a origem) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //*em x eu acrescento e em y eu subtraio, pois para um valor maior de x ele vai crescer para a direita, já o y cresce para baixo
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineto(getx()-x2+x1,gety()+y2-y1);&nbsp;&nbsp;&nbsp;&nbsp; //em cada cordenada tira-se e depois acrescenta a variação para chegar ao próximo ponto com uma reta
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y2 = y1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //y2 recebe o último valor de y1 para poder retirar a variação e plotar o próximo ponto 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x2 = x1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //x2 recebe o último valor de y1 para poder retirar a variação e plotar o próximo ponto&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n(%d,%d)",x1,y1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; 

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("pause");&nbsp;&nbsp;&nbsp;&nbsp; //esperando o pressionamento de uma tecla qualquer pelo usuário
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closegraph();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //fechando a tela da parte gráfica
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0; 
&nbsp; }

Em breve faço outro post com algumas funções a mais e um outro exemplo.