修正ありがとうございます。
射影変換の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