2016-08-26 7 views
-3

おはようございます、Bresenham線アルゴリズム

私はbresenham線方程式のアルゴリズムを完了するのに苦労しています。

出力は黒で出力され、期待される出力は白です。 bresenhamアルゴリズムは、四角形の中央にある2つの対角線を印刷するために使用されます。誰かがそれを修正するために私のコードで私を修正してください。

BXは、Yについても同様に、X2とX1 super.x と等価です。

image of Output

public void draw(char [][] matrix) { 
    yCoord = super.y; 
    xCoord = super.x; 
    deltaX = Math.abs(bx - xCoord); 
    deltaY = Math.abs(by - yCoord); 
    int sx = xCoord < bx ? 1 : -1; 
    int sy = yCoord < by ? 1 : -1; 
    delta = deltaX - deltaY; 
    int err2; 

    while (true) { 
     matrix[xCoord][yCoord] = '*'; 
     if (xCoord == bx || yCoord == by) { 
      break; 
     } 
     err2 = 2*delta; 
     if (err2 > -deltaY) { 
      delta -= deltaY; 
      xCoord += sx; 
     } else if (err2 < deltaX) { 
      delta += deltaX; 
      yCoord += sy; 
     } 

    } 

} 
+0

この特定の出力にはIDEの代わりに端末を使用していて、端末の使用やデバッグに関する知識はありません。それらは –

+0

あなたは深刻ですか?アスタリスクでピクセルを設定していますが、これは黒で白く表示する理由はありません。アスタリスクでイメージを塗り、スペースで描画します。 –

+0

私のプロジェクトの特定の部分。あまりできない@YvesDaoust –

答えて

0

私はJavaでこのhereとテストが見つかりました:

static char[][] h(char [][] matrix,int x1,int y1, int x2,int y2){ 
     int dx = x2 - x1; 
     int dy = y2 - y1; 
     int y = y1; 
     int eps = 0; 
     for (int x = x1; x <= x2; x++) { 
      matrix[y][x]='*'; 
      eps += dy; 
      if ((eps << 1) >= dx) { 
       y++; 
       eps -= dx; 
      } 
     } 
     return matrix; 
    } 

この

public static void main(String[] args) { 
     char[][] input = { 
       {' ',' ',' ',' ',' ',' '}, 
       {' ',' ',' ',' ',' ',' '}, 
       {' ',' ',' ',' ',' ',' '}, 
       {' ',' ',' ',' ',' ',' '}, 
       {' ',' ',' ',' ',' ',' '} 
     }; 
     char[][] matrix = h(input,0,0,4,5); 
     for(int i=0;i<matrix.length;i++){ 
      for(int j=0;j<matrix[0].length;j++){ 
       System.out.print(matrix[i][j]); 
      } 
      System.out.println(); 
     } 
    } 

*  
*  
    * 
    * 
    * 
を与えます

これは、他のものと重複しているようには見えません。

関連する問題