7.4.1版の不具合

 投稿者:山中和義  投稿日:2009年12月11日(金)18時49分30秒
  修正ありがとうございます。

射影変換のPLOT TEXT文で、「添字が範囲外」エラーとなります。7.4.0版では描画できていました。
! 射影変換 sample\transfo9.bas追加
DIM T(4,4)
MAT READ T
DATA 1,  0,  0, -0.25
DATA 0,  1,  0,  0.2
DATA 0,  0,  1,  0
DATA 0,  0,  0,  1
PICTURE House
   SET AREA COLOR 15
   PLOT AREA:    0, 1;   0,  0;   2,  0;   2,  1         ! 壁
   SET AREA COLOR 2
   PLOT AREA:  -0.6,1;  2.6, 1;   2,  2;   0,  2         ! 屋根
   SET AREA COLOR 10
   PLOT AREA:  0.1, 0; 0.1,0.8; 0.5,0.8; 0.5,  0         ! ドア
   SET AREA COLOR 5
   PLOT AREA: 1.4,0.4; 1.9,0.4; 1.9,0.8; 1.4,0.8         ! 窓
   SET AREA COLOR 12
   PLOT AREA:  1.7, 2; 1.7,2.3; 1.5,2.3; 1.5,  2         ! 煙突

   SET TEXT HEIGHT 2 !<----- 大きくするとNG
   PLOT TEXT ,AT 0,0: "屋根"

END PICTURE
SET WINDOW -5,5,-5,5
DRAW axes
DRAW House WITH T
END


「常に物理座標」では、これを有効にした表示は正しいのでしょうか?
SET WINDOW -5,5,-5,5
DRAW grid

!2つの消失点
DATA  4,1 !水平線(X軸に平行)の消失点(x1,y1)
DATA -3,4 !垂直線(Y軸に平行)の消失点(x2,y2)
READ x1,y1, x2,y2
DRAW vp WITH SHIFT(x1,y1)
DRAW vp WITH SHIFT(x2,y2)

PICTURE vp !マーカーを描く
   LET a=0.125
   PLOT AREA: -a,-a; a,-a; a,a; -a,a
END PICTURE


DIM M(4,4) !消失点になるように台形変形する
MAT M=IDN
LET M(1,4)=1/(x1-x2) !消失点(x,0)なら、1/x。 x→∞なら、0
LET M(2,4)=1/(y2-y1) !消失点(0,y)なら、1/y。 y→∞なら、0

DIM Mp(4,4)
MAT Mp=SHIFT(-x2,-y1)*M*SHIFT(x2,y1)


DRAW t WITH Mp

PICTURE t !変形された図形を描く
   PLOT LINES: -1,-1; 1,-1; 1,1; -1,1; -1,-1 !境界線を描く
   PLOT LINES: -1,0; 1,0 !軸
   PLOT LINES: 0,-1; 0,1

   SET TEXT HEIGHT 1 !正規座標内の図形 ←←←← ここ
   !※「問題座標(JIS)」では、既定値が0.01のため SET TEXT HEIGHT はほぼ必須となる。
   PLOT TEXT ,AT  0, 0: "F"
   PLOT TEXT ,AT -1, 0: "2"
   PLOT TEXT ,AT -1,-1: "@"
   PLOT TEXT ,AT  0,-1: "M"
END PICTURE

END
 

Re: 7.4.1版の不具合

 投稿者:白石 和夫  投稿日:2009年12月12日(土)09時29分17秒
  > No.785[元記事へ]

> 射影変換のPLOT TEXT文で、「添字が範囲外」エラーとなります。7.4.0版では描画できていました。
ご報告ありがとうございました。
修正します(若干の速度向上の試みの失敗です)。


「常に物理座標」にするとバージョン7.3以前と同じ描画になります。
基点付近の情報に基づいて描きます。
 

戻る