« gnuplot(4) | メイン | 3ヶ月の夢 »

2005年05月27日

gnuplot(5)

データファイルを使った3次元プロットについて。

sin_cos_data.plt

# sin_cos_data.plt

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set parametric
set hidden3d
splot "sin_cos.dat" with lines

sin_cos.dat

# sin_cos.dat
#       x         y        z
-3.000000 -3.000000 0.139708
-3.000000 -2.900000 0.137022
-3.000000 -2.800000 0.132966
-3.000000 -2.700000 0.127583
-3.000000 -2.600000 0.120924
-3.000000 -2.500000 0.113057
-3.000000 -2.400000 0.104061
-3.000000 -2.300000 0.094025
-3.000000 -2.200000 0.083049
:
(省略)

sin_cos_data.c

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

#define M_RANGE     3

int main(int argc, char *argv[])
{
    FILE    *fp;
    double  x, y, z;
    
    fp = fopen( "sin_cos.dat", "w" );
    
    for( x = -M_RANGE; x <= M_RANGE; x += 0.1 )
    {
        for( y = -M_RANGE; y <= M_RANGE; y += 0.1)
        {
            z = sin( x ) * cos( y );
            fprintf( fp, "%lf %lf %lf\n", x, y, z );
        }
        fprintf( fp, "\n" );
    } 

    fclose(fp);
    
    return EXIT_SUCCESS;
}

今回は新しいコマンドとして set parametric と set hidden3d があります。

parametric モードは1行に x, y, z の3つの値を持つデータをプロットするモードです。また、ここでは示していませんが noparametric モードは z 値のみを持つ3次元データをプロットするときに使います。

hidden3d は陰線除去を行ってくれるコマンドです。ただ、この設定を行うとグラフの回転表示が非常に遅くなります。どうやら gnuplot はすべてソフトウェアで書かれているようですね。動作環境に応じて OpenGL や Direct3D (非Windows環境では無いので流石にこれは無理だと思いますが)で表示してもらえるといいのですが…。検索してみるとあったりして。


投稿者 napier : 2005年05月27日 00:59


トラックバック

このエントリーのトラックバックURL:
http://will.squares.net/mt/mt-modified-tb.cgi/185