新しく発言する EXIT インデックスへ
PLOTAREAとMATPLOTCELLSの描く図形の正確さ

  PLOT AREAとMAT PLOT CELLSの描く図形の正確さ nor 2003/10/29 00:25:53 
  ビットマップのドット数が横方向に200個ある... 白石和夫 2003/10/29 21:02:17 
   └ピクセルを主体に思考したいのであれば, 白石和夫 2003/10/29 21:57:08 
    └さっそくのお返事ありがとうございます。 nor 2003/10/30 12:33:35 
     └PLOTAREAではうまくいきました。 nor 2003/11/01 00:27:59 
      └内部での計算誤差があるようです。調べてみ... 白石和夫 2003/11/01 17:37:11 
       └修正版を作成しました。 白石和夫 2003/11/02 08:39:22 
        └Dwlphi5だと不具合があるので,Delphi6を使... 白石和夫 2003/11/03 09:58:00 
         └さっそくの対応ありがとうございます.いつも... nor 2003/11/04 22:04:31 

  PLOT AREAとMAT PLOT CELLSの描く図形の正確さ nor 2003/10/29 00:25:53  ツリーへ

PLOT AREAとMAT PLOT CELLSの描く図形の正確さ 返事を書く
nor 2003/10/29 00:25:53
はじめましてnorと申します。気軽にプログラムが書けるので便利に使わせていただいています。メッシュマップのようなものを作りたくて、PLOT AREAやMAT PLOT CELLSを使ってプログラムを書いてみたのですが、描画される図形の正確さが気になって質問します。

SET BITMAP SIZE 200,200
SET WINDOW 1,11,11,1
FOR y=1 TO 10
FOR x=1 TO 10
SET AREA COLOR y*x
PLOT AREA : x,y; x+1,y; x+1,y+1; x,y+1
NEXT x
NEXT y
END

このプログラムを実行すると、10×10の塗りつぶされた四角形が描かれますが、それぞれの四角形は20×20ドットになることを期待しています。しかし、実際に書かれるのは、6行目と6列目の四角形は19×19ドットで、10行目と10列目は21×21ドットになってしまいます。また、

OPTION BASE 1
SET BITMAP SIZE 200,200
DIM col(10,10)
FOR y=1 TO 10
FOR x=1 TO 10
LET col(x,y)=x*y
NEXT x
NEXT y
SET WINDOW 0,10,10,0
MAT PLOT CELLS, IN 0,0; 10,10:col
END

このプログラムもそれぞれの四角形が20×20ドットになることを期待しているのですが、10行目が19×19ドットになって、1ドットの細長い白い行ができてしまいます。

これは仕方のないことなのでしょうか?それとも、プログラムの書き方が間違っているのでしょうか?

  ビットマップのドット数が横方向に200個ある... 白石和夫 2003/10/29 21:02:17  ツリーへ

Re: PLOT AREAとMAT PLOT CELLSの描く図形の正確さ 返事を書く
白石和夫 2003/10/29 21:02:17
ビットマップのドット数が横方向に200個あると,ドット間は199個になります。それが原因なのではないでしょうか。
ドット間を200にしたければ,横方向のドット数は201にしなければなりません。

   └ピクセルを主体に思考したいのであれば, 白石和夫 2003/10/29 21:57:08  ツリーへ

Re: ビットマップのドット数が横方向に200個ある... 返事を書く
白石和夫 2003/10/29 21:57:08
ピクセルを主体に思考したいのであれば,
SET WINDOW 0,199,0,199
あるいは,
SET WINDOW 0,199,199,0
のように座標系を設定してください。

    └さっそくのお返事ありがとうございます。 nor 2003/10/30 12:33:35  ツリーへ

Re: ピクセルを主体に思考したいのであれば, 返事を書く
nor 2003/10/30 12:33:35
さっそくのお返事ありがとうございます。
たまたま10×10ドットの四角が多く描かれたので,ピクセルと座標の関係を勘違いしていました.
ピクセル主体で試してみます.

     └PLOTAREAではうまくいきました。 nor 2003/11/01 00:27:59  ツリーへ

Re: さっそくのお返事ありがとうございます。 返事を書く
nor 2003/11/01 00:27:59
PLOT AREAではうまくいきました。

SET BITMAP SIZE 200,200
SET WINDOW 1,200,200,1
FOR y=1 TO 200 STEP 20
FOR x=1 TO 200 STEP 20
SET AREA COLOR y*x
PLOT AREA : x,y; x+19,y; x+19,y+19; x,y+19
NEXT x
NEXT y
END

ただ、MAT PLOT CELLS命令を使った場合、

DIM col(2,2)
DATA 1,2
DATA 3,4
MAT READ col
SET BITMAP SIZE 400,400
SET WINDOW 0,2,0,2
MAT PLOT CELLS,IN 0,0;2,2:col
END

で、上端と右端に1ドットの白い線が出来てしまいます。
だめもとで、SET BITMAP SIZEを401,401にしても同じです。
また、
SET WINDOW 0,399,0,399
MAT PLOT CELLS,IN 0,0;399,399:col
でも同じです。

まだ間違っていますか?初心者なので、勘違いしている
ところがあるかもしれませんがよろしくお願いします。

      └内部での計算誤差があるようです。調べてみ... 白石和夫 2003/11/01 17:37:11  ツリーへ

Re: PLOTAREAではうまくいきました。 返事を書く
白石和夫 2003/11/01 17:37:11
内部での計算誤差があるようです。調べてみます。

       └修正版を作成しました。 白石和夫 2003/11/02 08:39:22  ツリーへ

Re: 内部での計算誤差があるようです。調べてみ... 返事を書く
白石和夫 2003/11/02 08:39:22
修正版を作成しました。
なお,この版からDelphi5使用になります。

        └Dwlphi5だと不具合があるので,Delphi6を使... 白石和夫 2003/11/03 09:58:00  ツリーへ

Re: 修正版を作成しました。 返事を書く
白石和夫 2003/11/03 09:58:00
Dwlphi5だと不具合があるので,Delphi6を使用します(ver.5.1.2)。肥大化しています(1Mバイト超)。また,Deplhi3との非互換が原因の未知のバグが潜むかも知れません。

         └さっそくの対応ありがとうございます.いつも... nor 2003/11/04 22:04:31  ツリーへ

Re: Dwlphi5だと不具合があるので,Delphi6を使... 返事を書く
nor 2003/11/04 22:04:31
さっそくの対応ありがとうございます.いつもお返事や対応のすばやさにも驚くばかりです.
改良に少しばかりお役に立ててうれしいです.また気がついた点があったらレポートします.
これからも、便利に使わせていただきます.良いソフトをありがとうございます.


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。