塗りつぶしについて教えてください。 奥平雅教 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 |