Gráficos elaborados com GnuPlot e Pov-Ray

É sabido que o GnuPlot é um excelente programa para gerar gráficos tanto 2D quanto 3D partindo de funções matemáticas ou de um arquivos de dados originados de alguma simulação. Mas agora, com a ajuda do povray, podemos gerar gráfico de beleza mais aprimorada. Vale ressaltar que o pov-ray é um programa de ray tracing disponível para variadas plataformas de computação.

[ Hits: 36.989 ]

Por: Franklin Anderson de Oliveira Souza em 17/01/2007 | Blog: http://fisica.ufmt.br/~franklinbr/


Gerando alguns gráficos



Prontinho. Agora vamos gerar alguns gráficos legais, acompanhe abaixo:

set terminal povray
set xlabel "eixo X"
set ylabel "eixo Y"
set zlabel "eixo Z"
set samples 20
set isosamples 20

set out "graficoA.pov"

splot [-3:3][-3:3 ]
cos(x) + sin(y) with d

! povray +FC +A0.5 graficoA.pov



set terminal povray
set xlabel "eixo X"
set ylabel "eixo Y"
set zlabel "eixo Z"
set samples 20
set isosamples 20

set out "graficoB.pov"

splot [-3:3][-3:3]
log(cos(x)**2 + sin(y)**2) with d

! povray +FC +A0.5 graficoB.pov



set terminal povray
set xlabel "eixo X"
set ylabel "eixo Y"
set zlabel "eixo Z"
set samples 20
set isosamples 20

set out "graficoC.pov"

splot x**2 + y**2 with d,
x**2 - y**2 with d

! povray +FC +A0.5 graficoC.pov



set terminal povray
set xlabel "eixo X"
set ylabel "eixo Y"
set zlabel "eixo Z"
set samples 20
set isosamples 20

set out "graficoD.pov"

splot x + y with d

! povray +FC +A0.5 graficoD.pov


Até agora só foi possível plotar gráficos de funções matemáticas. Mas digamos que você desenvolva um programa que simule algum problema, seja de natureza matemática ou física. Como devemos proceder para visualizar estes dados? Para fim de demonstração fiz um pequeno programa escrito na linguagem C para gerar dados de uma função matemática, o programa segue abaixo:

#include <stdio.h>
#include <math.h>

main (int argc, char **argv)
{

        float x, y, z;
        FILE *arquivo;

        arquivo = fopen ("dados.dat", "w");

        for (x = -20; x <= 20; x += 0.3) {
                for (y = -20; y <= 20; y += 0.3) {
                        z = sin (sqrt (pow (x, 2) + pow (y, 2)));
                        printf ("%f  %f  %f
", x, y, z);
                        fprintf (arquivo, "%f  %f  %f
", x, y, z);
                }
        }
}

Para compilar basta:

$ gcc programa.c -o programa -lm
$ ./programa


Com isso será gerado um arquivo de nome "dados.dat" no lugar corrente onde você executou o programa compilado. É neste arquivo que estão os dados que queremos visualizar, abaixo segue como proceder:

set terminal povray
set xlabel "eixo X"
set ylabel "eixo Y"
set zlabel "eixo Z"
set samples 20
set isosamples 20
set style data points

set out "graficoE.pov"

splot 'dados.dat' u 1:2:3

! povray +FC +A0.8 graficoE.pov


[1] - Não pretendo neste tutorial resolver possíveis problemas de dependência ou falta de pacotes para uma correta compilação do programa. Apenas uma dica, verifique se existem todos os dev necessários para a compilação, na falta, tente buscar e instalar usando o programa responsável por isso (Yast, Apt, Rpm...) na distro Linux que você usa.

Página anterior    

Páginas do artigo
   1. Compilação, instalação e configuração
   2. Gerando alguns gráficos
Outros artigos deste autor

O que é Orientação a Objeto - Mais uma tentativa

Debian + Xorg + Nvidia - Um conceito visual para desktops

Gnuplot - versátil ferramenta científica

Polindo o seu Debian - KDE + Debian-Sid

Mp3Blaster - O mais completo reprodutor de MP3 modo texto

Leitura recomendada

Pequenas coleções (parte 2)

Slamd64 + ATI Radeon + AIGLX + Beryl

Edição pesada de imagens com o Gimp (parte 1)

Monitorando interfaces virtuais com MRTG e IPFM

Quando o rosto vira espelho

  
Comentários
[1] Comentário enviado por fdavid em 17/01/2007 - 10:05h

muito legal... você sabe me dizer se tem como plotar sobre uma .JPG ?

[2] Comentário enviado por franklinbr em 17/01/2007 - 10:18h

Bem, na verdade ele gera um png. Apartir do png voce pode, com o gimp, converter para a extensao que pretender !

:D

[3] Comentário enviado por fdavid em 17/01/2007 - 11:03h

entendo... mas na verdade gostaria de colocar uma imagem de fundo no grafico a ser plotado, entende ?

[4] Comentário enviado por franklinbr em 17/01/2007 - 11:55h

Sim, e nao sei como fazer isso, na verdade o que acontece eh que o gnuplot gera um arquivo.pov, correspondente ao grafico. O que se pode fazer eh descobrir como declarar uma imagem em background no codigo do do povray gerado, e isso apesar de nao ser dificil , nao sei :(

[5] Comentário enviado por franklinbr em 17/01/2007 - 11:57h

Mas de qualquer forma tenho uma pista de como fazer, no caso este camarada do link criou tudo na mao, independente do gnuplot, ele fez um programinha em C pra gerar os dados e usou o povray para gerar o grafico.

http://www.digitalhermit.com/linux/ray_tracing/povray/mesh/

espero ter ajudado

[6] Comentário enviado por ethraza em 18/01/2007 - 01:26h

Todos os gráficos foram gerados com o comando splot, será que funciona e faz alguma diferença usando o comando plot?
E quanto a velocidade de plotagem, cai muito a performance?

[7] Comentário enviado por franklinbr em 18/01/2007 - 01:51h

Os graficos foram gerados com splot porque sao graficos 3D, pra gerar graficos 2D basta plot, veja a syntax do gnuplot ou algum tutorial, para mais explicacoes

A respeito da resolucao voce pode escolher mudando o valor "+A0.5" do comando abaixo

! povray +FC +A0.5 graficoB.pov


que se nao me engano vai ateh o valor 1, nao tenho certeza, eh necessário um teste para verificar ...

[8] Comentário enviado por sermart em 21/01/2007 - 21:24h

eu achei muito interessante pois já usei o pov ray para linux e não havia testado esta possibilidade, até porque pov vem evoluindo bastante. Parabéns pelo artigo.

[9] Comentário enviado por andreascaue em 05/08/2008 - 15:50h

Muito bom esse artigo em resposta a primeira pergunta é só você usar o capturador de imagens de tela e salvar como .jpg

[10] Comentário enviado por astha em 10/10/2010 - 18:15h

Estimado Franklin,

Eu nao escrivo muito bem portugues, solamente espanhol. Espero que voce pueda enterderme!!!

Eu ja tenho instalado o Gnuplot 4.2. Eu tenho feito os passos que voce disse, mas cuando quero instalar o Gnuplot 4.0 em uma pasta escolhida como voce diz, não tenho sucesso. Eu fiz

$./configure --prefix=/home/hfs/astha/

ESTO APARECEU NA ULTIMA PARTE

** Configuration summary for gnuplot 4.0.0:

Where is the help file? ${prefix}/share/gnuplot/4.0/gnuplot.gih

Use builtin minimal readline
Enable generation of JPEG files
Enable generation of GIF files
Enable generation of PNG files
using gd driver
Enable TTF fonts with gd driver
Build gnuplot-mode for X/Emacs
Build LaTeX tutorial
Use the X Window System
Enable mouse for X11
Enable pm3d
Enable filledboxes
Enable relative boxwidths
Enable defined(variable) test
Enable fitting error variables

$ make

Mas cuando entro na pasta ASTHA, nenhum arquivo, PORQUE??

Que é o que faltando?

Astha Selene

[11] Comentário enviado por astha em 11/10/2010 - 21:18h

Estimado Franklin,

Eu nao escrivo muito bem portugues, solamente espanhol. Espero que voce pueda enterderme!!!

Eu ja instalei GNUPLOT 4.0, mas agora tenho outro problema cuando eu quero gerar alguns gráficos,
isto parece:

"sh: povray: command not found"

como posso resolver isto

Astha Selene



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts