新しく発言する EXIT インデックスへ
塗りつぶしについて教えてください。

  塗りつぶしについて教えてください。 奥平雅教 2006/04/25 16:22:09 
  FullBASICには塗りつぶし方を指定する手段が... 白石 和夫 2006/04/25 21:10:15 
   └ご指摘ありがとうございます。 奥平雅教 2006/04/26 09:05:26 
    └現在の実装では,独自拡張としてそのような... 白石 和夫 2006/04/26 11:01:18 
     ├以下のような作りで何とかできました。 奥平雅教 2006/04/26 11:54:44 
     ├もう一つ作ってみました。 奥平雅教 2006/04/26 15:30:09 
     ├私もこのBASICのファンになりました。... 奥平雅教 2006/04/27 12:31:25 
     └ver.5.8.7で 白石 和夫 2006/05/06 09:40:29 
      ├サンプルを作成しました。 白石 和夫 2006/05/06 18:37:19 
      ├早々のご対応有難うございました。 奥平雅教 2006/05/08 15:17:15 
      └絵定義にて棒グラフを描き、draw文で回転さ... 奥平雅教 2006/05/15 13:20:12 
       ├ハッチは,変形された図形に対して適用され... 白石 和夫 2006/05/15 14:16:37 
       ├例です。どこが悪いのでしょうか。 奥平雅教 2006/05/15 16:12:41 
       │└VAL関数は,前後の空白は無視しますが,それ... 白石 和夫 2006/05/15 17:14:18 
       │ └掲示板の影響でDATA文中のスペースが削除さ... 白石 和夫 2006/05/15 17:30:01 
       │  └で,どこが悪いのでしょうか? 白石 和夫 2006/05/15 17:32:02 
       │   └同じハッチが方位により、回転して欲しいの... 奥平雅教 2006/05/15 17:44:52 
       │    └ハッチを回転させたいのであれば,AREASTYL... 白石 和夫 2006/05/15 17:55:32 
       │     └空き地に縦に描き,ASKPIXELARRAYで配列に取... 白石 和夫 2006/05/16 07:18:24 
       └その2 奥平雅教 2006/05/15 16:17:23 

  塗りつぶしについて教えてください。 奥平雅教 2006/04/25 16:22:09  ツリーへ

塗りつぶしについて教えてください。 返事を書く
奥平雅教 2006/04/25 16:22:09
多角形の塗りつぶしは色指定して塗りこめますが、白黒のあるパターン(点々、斜め線、平行線、格子線)などで塗りつぶす方法を教えていただきたいのですが宜しくお願いします。

  FullBASICには塗りつぶし方を指定する手段が... 白石 和夫 2006/04/25 21:10:15  ツリーへ

Re: 塗りつぶしについて教えてください。 返事を書く
白石 和夫 2006/04/25 21:10:15
Full BASICには塗りつぶし方を指定する手段がないので,どうしてもそうしたければ,自力で処理ルーチンを作るしかない手はないと思います。

   └ご指摘ありがとうございます。 奥平雅教 2006/04/26 09:05:26  ツリーへ

Re: FullBASICには塗りつぶし方を指定する手段が... 返事を書く
奥平雅教 2006/04/26 09:05:26
ご指摘ありがとうございます。
自力でやってみます。

    └現在の実装では,独自拡張としてそのような... 白石 和夫 2006/04/26 11:01:18  ツリーへ

Re: ご指摘ありがとうございます。 返事を書く
白石 和夫 2006/04/26 11:01:18
現在の実装では,独自拡張としてそのような機能を持たせることは可能なので,将来のバージョンでは拡張機能として用意したいと思います。

     ├以下のような作りで何とかできました。 奥平雅教 2006/04/26 11:54:44  ツリーへ

Re: 現在の実装では,独自拡張としてそのような... 返事を書く
奥平雅教 2006/04/26 11:54:44
以下のような作りで何とかできました。

!
! 多角形の中を点々でハッチング

DIM ta(10,10)
DATA 5
DATA 0.1,0.1
DATA 0.8,0.7
DATA 0.6,0.65
DATA 0.2,0.6
DATA 0.25,0.3
READ tako
FOR i=1 TO tako
READ ta(i,1),ta(i,2)
NEXT i
LET xmin=2
LET xmax=0
LET ymin=2
LET ymax=0
SET WINDOW 0,1,0,1
SET COLOR 1
FOR i=1 TO tako
PLOT LINES:ta(i,1),ta(i,2);
NEXT i
PLOT LINES:ta(1,1),ta(1,2);
FOR i=1 TO tako
IF ta(i,1)<xmin THEN LET xmin=ta(i,1)
IF ta(i,2)<ymin THEN LET ymin=ta(i,2)
IF ta(i,1)>=xmax THEN LET xmax=ta(i,1)
IF ta(i,2)>=ymax THEN LET ymax=ta(i,2)
NEXT i
SET POINT STYLE 1
FOR j=ymin TO ymax STEP 0.01
FOR jj=xmin TO xmax STEP 0.01
LET nn=0
FOR i=1 TO tako
LET y1=ta(i,2)
LET x1=ta(i,1)
IF i=tako THEN
LET y2=ta(1,2)
LET x2=ta(1,1)
ELSE
LET y2=ta(i+1,2)
LET x2=ta(i+1,1)
END IF
IF y1>y2 THEN
LET yy1=y2
LET yy2=y1
ELSE
LET yy1=y1
LET yy2=y2
end if
IF j>=yy1 AND j<yy2 THEN
LET a1=(y1-y2)/(x1-x2)
LET b1=y1-a1*x1
LET xx=(j-b1)/a1
IF xx>jj THEN
LET nn=nn+1
ELSE
END IF
ELSE
END if
NEXT i
IF MOD(nn,2)<>0 THEN
PLOT POINTS:jj,j
ELSE
END IF
NEXT jj
NEXT j
END

     ├もう一つ作ってみました。 奥平雅教 2006/04/26 15:30:09  ツリーへ

Re: 現在の実装では,独自拡張としてそのような... 返事を書く
奥平雅教 2006/04/26 15:30:09
もう一つ作ってみました。
先ほどのは0割のときエラーが出ますのでご注意を。
!
! 多角形の中を平行線(水平)でハッチング

DIM ta(10,2),xxx(100)
DATA 10
DATA 0.1,0.11
DATA 0.5,0.3
DATA 0.6,0.1
DATA 0.8,0.3
DATA 0.4,0.5
DATA 0.8,0.6
DATA 0.95,0.85
DATA 0.6,0.65
DATA 0.2,0.6
DATA 0.25,0.3
READ tako
FOR i=1 TO tako
READ ta(i,1),ta(i,2)
NEXT i
!------------------------------
LET xmin=2
LET xmax=0
LET ymin=2
LET ymax=0
LET tenp=0.01
SET WINDOW 0,1,0,1
SET COLOR 1
FOR i=1 TO tako
PLOT LINES:ta(i,1),ta(i,2);
NEXT i
PLOT LINES:ta(1,1),ta(1,2);
PLOT LINES
FOR i=1 TO tako
IF ta(i,1)<xmin THEN LET xmin=ta(i,1)
IF ta(i,2)<ymin THEN LET ymin=ta(i,2)
IF ta(i,1)>=xmax THEN LET xmax=ta(i,1)
IF ta(i,2)>=ymax THEN LET ymax=ta(i,2)
NEXT i
SET POINT STYLE 1
FOR j=ymin TO ymax STEP tenp
FOR jj=1 TO 100
LET xxx(jj)=0
NEXT jj
LET nn=0
FOR i=1 TO tako
LET y1=ta(i,2)
LET x1=ta(i,1)
IF i=tako THEN
LET y2=ta(1,2)
LET x2=ta(1,1)
ELSE
LET y2=ta(i+1,2)
LET x2=ta(i+1,1)
END IF
IF y1-y2=0 THEN 100
IF y1>y2 THEN
LET yy1=y2
LET yy2=y1
ELSE
LET yy1=y1
LET yy2=y2
end if
IF j>=yy1 AND j<yy2 THEN
IF x1-x2=0 THEN
LET xx=x1
LET nn=nn+1
ELSE
LET a1=(y1-y2)/(x1-x2)
LET b1=y1-a1*x1
LET xx=(j-b1)/a1
LET nn=nn+1
END if
LET xxx(nn)=xx
ELSE
END IF
100 NEXT i
FOR ii=1 TO nn-1
FOR i=ii+1 TO nn
IF xxx(ii)>xxx(i) THEN swap xxx(ii),xxx(i)
NEXT i
NEXT ii
FOR jj=1 TO nn STEP 2
PLOT LINES:xxx(jj),j;xxx(jj+1),j;
PLOT LINES
NEXT jj
NEXT j
END

     ├私もこのBASICのファンになりました。... 奥平雅教 2006/04/27 12:31:25  ツリーへ

Re: 現在の実装では,独自拡張としてそのような... 返事を書く
奥平雅教 2006/04/27 12:31:25
私もこのBASICのファンになりました。日々利用させて頂いています。白石先生には頭が下がりっぱなしです。今後とも宜しくお願いします。

     └ver.5.8.7で 白石 和夫 2006/05/06 09:40:29  ツリーへ

Re: 現在の実装では,独自拡張としてそのような... 返事を書く
白石 和夫 2006/05/06 09:40:29
ver. 5.8.7で
SET AREA STYLE "HATCH"
SET AREA STYLE INDEX n
を実行すると,PLOT AREA文で多角形がハッチで塗られるようになります。
nの値は,1〜6です。

      ├サンプルを作成しました。 白石 和夫 2006/05/06 18:37:19  ツリーへ

Re: ver.5.8.7で 返事を書く
白石 和夫 2006/05/06 18:37:19
サンプルを作成しました。
http://hp.vector.co.jp/authors/VA008683/QA_HATCH.htm

      ├早々のご対応有難うございました。 奥平雅教 2006/05/08 15:17:15  ツリーへ

Re: ver.5.8.7で 返事を書く
奥平雅教 2006/05/08 15:17:15
早々のご対応有難うございました。
今後もよろしくお願いします。

      └絵定義にて棒グラフを描き、draw文で回転さ... 奥平雅教 2006/05/15 13:20:12  ツリーへ

Re: ver.5.8.7で 返事を書く
奥平雅教 2006/05/15 13:20:12
絵定義にて棒グラフを描き、draw文で回転させると、ハッチが回転しません。図形変形には対応していないのでしょうか?
例えば風配図(棒グラフを中心円に16方位別に頻度を表す)などです。

       ├ハッチは,変形された図形に対して適用され... 白石 和夫 2006/05/15 14:16:37  ツリーへ

Re: 絵定義にて棒グラフを描き、draw文で回転さ... 返事を書く
白石 和夫 2006/05/15 14:16:37
ハッチは,変形された図形に対して適用されます。

       ├例です。どこが悪いのでしょうか。 奥平雅教 2006/05/15 16:12:41  ツリーへ

Re: 絵定義にて棒グラフを描き、draw文で回転さ... 返事を書く
奥平雅教 2006/05/15 16:12:41
例です。どこが悪いのでしょうか。
2回に分けます。申し訳ありません。
!
! 風配図作成
!
OPTION ANGLE DEGREES
DIM ritu(10,3,16),kai$(10),kub$(10,3)
DIM hou$(16)
LET pp=360/16
LET haba=0.3
LET han=1
CALL syoki
CALL yomi
CALL plot1
CALL plot2
STOP
SUB yomi
DATA " NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW N i"
DATA "0.5-0.9 全日 0.0 0.0 0.0 0.2 0.0 0.2 0.2 0.2 0.2 0.0 0.0 0.0 0.2 0.2 0.1 0.0 "
DATA "1.0-1.9 全日 0.1 0.1 0.2 0.3 0.4 0.8 0.4 0.3 0.4 0.2 0.7 0.6 0.4 0.5 0.7 0.3 "
DATA "2.0-2.9 全日 0.6 0.6 0.5 0.8 1.3 2.4 0.5 0.5 1.3 0.6 0.5 1.0 1.3 0.4 1.9 2.2 "
DATA "3.0-3.9 全日 2.6 1.8 0.8 1.5 1.0 2.4 0.7 1.7 0.3 0.8 1.4 0.7 0.9 1.8 2.5 5.4 "
DATA "4.0-5.9 全日 4.5 3.4 1.1 2.3 1.2 1.9 0.9 2.3 0.6 1.6 1.0 0.4 0.3 0.9 2.9 8.0 "
DATA "6.0- 全日 0.4 1.0 0.1 0.1 0.2 0.5 0.6 1.6 4.7 4.2 0.9 0.2 0.3 2.4 4.7 2.2 "
FOR i=1 TO 1
READ A$
NEXT i
FOR i=1 TO 6
FOR ii=1 TO 1
READ A$
IF ii=1 THEN LET kub$(i,ii)=a$(9:10)
IF ii=2 THEN
LET kai$(i)=a$(1:7)
LET kub$(i,ii)=a$(9:10)
ELSE
END IF
IF ii=3 THEN LET kub$(i,ii)=a$(9:10)
FOR j=1 TO 16
LET ritu(i,ii,j)=VAL(a$(14+(j-1)*6:13+j*6))
NEXT j
NEXT ii
NEXT i
100
END sub
SUB plot1
SET WINDOW -5,6,-5,6
DRAW polygon(16) WITH ROTATE(-pp/2)
DRAW ziku(16)
FOR k=2 TO 3
DRAW en(k)
NEXT k
FOR j=1 TO 16
LET xx1=COS(90-j*pp)
LET yy1=SIN(90-j*pp)
DRAW bou WITH ROTATE(-pp*j)*SHIFT(xx1,yy1)
NEXT j
END SUB
SUB plot2
SET TEXT JUSTIFY "LEFT","BOTTOM"
LET zx=2.8
LET zy=5.0
LET dx=0.5
LET dy=0.3
LET ddy=0.35
PLOT TEXT ,AT zx,zy+dy:"風速階級"
IF han=1 THEN PLOT TEXT ,AT zx-5,zy+dy:"〔全日〕"
SET AREA STYLE "HATCH"
FOR i=1 TO 6
SET AREA STYLE INDEX i
PLOT AREA : zx,zy-(i-1)*ddy;zx+dx,zy-(i-1)*ddy;zx+dx,zy-dy-(i-1)*ddy;zx,zy-dy-(i-1)*ddy;zx,zy-(i-1)*ddy
IF i=1 THEN
PLOT TEXT ,AT zx+dx+0.1,zy-dy-(i-1)*ddy:kai$(i)&" m/s"
ELSE
PLOT TEXT ,AT zx+dx+0.1,zy-dy-(i-1)*ddy:kai$(i)
END IF
NEXT i
SET AREA STYLE "HOLLOW"
END SUB
PICTURE en(k)
FOR l=0 TO 360
PLOT LINES : k*COS(l),k*SIN(l);
NEXT l
END PICTURE

       │└VAL関数は,前後の空白は無視しますが,それ... 白石 和夫 2006/05/15 17:14:18  ツリーへ

Re: 例です。どこが悪いのでしょうか。 返事を書く
白石 和夫 2006/05/15 17:14:18
VAL関数は,前後の空白は無視しますが,それ以外に余分なものがあると例外を生成します。"0 0.0"を0とは評価しません。

       │ └掲示板の影響でDATA文中のスペースが削除さ... 白石 和夫 2006/05/15 17:30:01  ツリーへ

Re: VAL関数は,前後の空白は無視しますが,それ... 返事を書く
白石 和夫 2006/05/15 17:30:01
掲示板の影響でDATA文中のスペースが削除されてしまったのが,VAL関数エラーの原因かもしれません。
LET ritu(i,ii,j)=VAL(a$(12+(j-1)*4:10+j*4))
と修正し,最後のDATA文に適当にスペースを補ってやったら動きました。

       │  └で,どこが悪いのでしょうか? 白石 和夫 2006/05/15 17:32:02  ツリーへ

Re: 掲示板の影響でDATA文中のスペースが削除さ... 返事を書く
白石 和夫 2006/05/15 17:32:02
で,どこが悪いのでしょうか?

       │   └同じハッチが方位により、回転して欲しいの... 奥平雅教 2006/05/15 17:44:52  ツリーへ

Re: で,どこが悪いのでしょうか? 返事を書く
奥平雅教 2006/05/15 17:44:52
同じハッチが方位により、回転して欲しいのですが、そのようになりません。
例えば、N方向の45度斜めハッチがNNE方向時には45−22.5度斜めになって欲しいのです。
先生にこんなお願いをして申し訳ありません。

       │    └ハッチを回転させたいのであれば,AREASTYL... 白石 和夫 2006/05/15 17:55:32  ツリーへ

Re: 同じハッチが方位により、回転して欲しいの... 返事を書く
白石 和夫 2006/05/15 17:55:32
ハッチを回転させたいのであれば,AREA STYLEを使わないで,棒グラフ(長方形)を描く絵定義のなかでPLOT LINES文を使ってハッチを描いてみてください。

       │     └空き地に縦に描き,ASKPIXELARRAYで配列に取... 白石 和夫 2006/05/16 07:18:24  ツリーへ

Re: ハッチを回転させたいのであれば,AREASTYL... 返事を書く
白石 和夫 2006/05/16 07:18:24
空き地に縦に描き,ASK PIXEL ARRAY で配列に取り込んで,MAT PLOT CELLSで回転して描くほうが簡単かも知れません。

       └その2 奥平雅教 2006/05/15 16:17:23  ツリーへ

Re: 絵定義にて棒グラフを描き、draw文で回転さ... 返事を書く
奥平雅教 2006/05/15 16:17:23
その2
すいません。どこが悪いのか教えて頂ければ幸いです。
お手数をおかけして申し訳ありません。

PICTURE polygon(n)
FOR i=0 TO n
PLOT LINES:COS(i*360/n),SIN(i*360/n);
NEXT i
END PICTURE
PICTURE ziku(n)
SET TEXT JUSTIFY "CENTER","HALF"
FOR i=1 TO n
PLOT LINES:COS(i*360/n),SIN(i*360/n);3*COS(i*360/n),3*SIN(i*360/n);
PLOT LINES
PLOT TEXT ,AT 3.3*COS(i*360/n),3.3*SIN(i*360/n):hou$(i)
NEXT i
SET TEXT JUSTIFY "LEFT","BOTTOM"
PLOT TEXT ,AT 0.2,2.05:"10"
PLOT TEXT ,AT 0.2,3.05:"20%"
END PICTURE
PICTURE bou
FOR i=1 TO 6
IF i=1 THEN LET x1=-haba/2
IF i=1 THEN LET y1=0
IF i=1 THEN LET x2=haba/2
IF i=1 THEN LET y2=0
LET x3=-haba/2
LET y3=ritu(i,han,j)/10+y1
LET x4=haba/2
LET y4=ritu(i,han,j)/10+y2
SET AREA STYLE "SOLID"
SET AREA COLOR "白"
PLOT AREA :x1,y1;x2,y2;x4,y4;x3,y3;x1,y1
SET AREA COLOR "黒"
SET AREA STYLE "HATCH"
SET AREA STYLE INDEX i
PLOT AREA :x1,y1;x2,y2;x4,y4;x3,y3;x1,y1
LET x1=x3
LET y1=y3
LET x2=x4
LET y2=y4
NEXT i
END PICTURE
SUB syoki
LET hou$(1)="ENE"
LET hou$(2)="NE"
LET hou$(3)="NNE"
LET hou$(4)="N"
LET hou$(5)="NNW"
LET hou$(6)="NW"
LET hou$(7)="WNW"
LET hou$(8)="W"
LET hou$(9)="WSW"
LET hou$(10)="SW"
LET hou$(11)="SSW"
LET hou$(12)="S"
LET hou$(13)="SSE"
LET hou$(14)="SE"
LET hou$(15)="SSE"
LET hou$(16)="E"
END sub

END


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