2016-05-27 12 views
0

私はそれに黒い点の束を持つ.ppmファイルを生成するプログラムを持っています。私がしたいのは、これらのドットの間に線を引いてグラフを作成することですが、スイング方法を使用する代わりに、.ppmのマトリックスを直接操作する方法があるかどうかを知りたいのです。 いくつかのネストされたループが必要だと思われますが、2つの点の間に線を作成するためにどの位置を変更する必要があるのでしょうか?線を描く別の方法

(知らない人のために、.ppmファイルを使用すると、ピクセルでスタッフピクセルを描画することができ、基本的にそれの位置のそれぞれについて、3つのRGB値を持つ巨大な行列である)

+1

https://en.m.wikipedia.org/wiki/Bresenham%27s_line_algorithm –

+1

検索について_Java ImageIO portable pixm apフォーマット_; JAIにはプラグインがありました。 – trashgod

+0

PPMの読み方をご紹介します。 – gpasch

答えて

0

シングルピクセルの厚さ:

void drawline(Color pixels[][], int width, int height, 
       int x1, int x2, int y1, int y2, Color line) 
{ 
    int dx = x1 - x2; 
    int dy = y1 - y2; 
    if (dx != 0 || dy != 0) 
    { 
     int n = Math.Max(Math.Abs(dx), Math.Abs(dy)); 
     double inv = 1.0/(double)(n + 1); 
     double dxdn = (double)dx * inv; 
     double dydn = (double)dy * inv; 
     double x = (double)x1, y = (double)y1; 
     for (int i = 0; i <= n; i++) 
     { 
     int xi = (int)x, yi = (int)y; 
     if (xi >= 0 || xi < width || yi >= 0 || yi < height) 
      pixels[yi][xi] = line; 
     x += dxdn; y += dydn; 
     } 
    } 
} 

(NBはこれはC#構文であり、あなたは、Javaに変換するマイナーの変更が必要な場合があります)

関連する問題