新しく発言する EXIT インデックスへ
ポリゴンでお絵かき2

  ポリゴンでお絵かき2 ヤマサキ 2003/09/26 20:12:08 
  340行のPLOTAREAは,MATPLOT文を使ってみて... 白石和夫 2003/09/26 21:03:19 
   └早速お返事を頂けて感激です。初心者なもの... ヤマサキ 2003/09/26 22:12:34 
    └MATPLOTAREA,LIMITn:x,y 白石和夫 2003/09/27 20:57:55 
     └配列のヘルプを読みまして、お教え頂いたMA... ヤマサキ 2003/09/29 18:34:40 

  ポリゴンでお絵かき2 ヤマサキ 2003/09/26 20:12:08  ツリーへ

ポリゴンでお絵かき2 返事を書く
ヤマサキ 2003/09/26 20:12:08
100 SET WINDOW 0,10,0,10
110 CLEAR
120 SET AREA COLOR 4
130 PLOT AREA:0,0;1,0;0,1
140 SET AREA COLOR 2
150 PLOT AREA:10,10;10,9;9,10
160 DIM X(101),Y(101)
170 FOR I=1 TO 101
180 GET POINT:X(I),Y(I)
190 IF X(1)+Y(1)<1 THEN GOTO 400
200 IF X(1)+Y(1)>19 THEN GOTO 110
210 IF I>1 THEN
220 PLOT LINES:X(I-1),Y(I-1);X(I),Y(I)
230 IF SQR((X(1)-X(I))^2+((Y(1)-Y(I))^2)) <0.04 THEN GOTO 260
240 END IF
250 NEXT I
260 LET N=I-1
270 FOR I=N+1 TO 100
280 LET X(I)=X(N)
290 LET Y(I)=Y(N)
300 NEXT I
310 RANDOMIZE
320 SET COLOR MIX (255) RND,RND,RND
330 SET AREA COLOR 255
340 PLOT AREA:X(1),Y(1);X(2),Y(2);X(3),Y(3);X(4),Y(4);X(5),Y(5);X(6),Y(6);X(7),Y(7);X(8),Y(8);X(9),Y(9);X(10),Y(10); &
& X(11),Y(11);X(12),Y(12);X(13),Y(13);X(14),Y(14);X(15),Y(15);X(16),Y(16);X(17),Y(17);X(18),Y(18);X(19),Y(19);X(20),Y(20); &
& X(21),Y(21);X(22),Y(22);X(23),Y(23);X(24),Y(24);X(25),Y(25);X(26),Y(26);X(27),Y(27);X(28),Y(28);X(29),Y(29);X(30),Y(30); &
& X(31),Y(31);X(32),Y(32);X(33),Y(33);X(34),Y(34);X(35),Y(35);X(36),Y(36);X(37),Y(37);X(38),Y(38);X(39),Y(39);X(40),Y(40); &
& X(41),Y(41);X(42),Y(42);X(43),Y(43);X(44),Y(44);X(45),Y(45);X(46),Y(46);X(47),Y(47);X(48),Y(48);X(49),Y(49);X(50),Y(50); &
& X(51),Y(51);X(52),Y(52);X(53),Y(53);X(54),Y(54);X(55),Y(55);X(56),Y(56);X(57),Y(57);X(58),Y(58);X(59),Y(59);X(60),Y(60); &
& X(61),Y(61);X(62),Y(62);X(63),Y(63);X(64),Y(64);X(65),Y(65);X(66),Y(66);X(67),Y(67);X(68),Y(68);X(69),Y(69);X(70),Y(70); &
& X(71),Y(71);X(72),Y(72);X(73),Y(73);X(74),Y(74);X(75),Y(75);X(76),Y(76);X(77),Y(77);X(78),Y(78);X(79),Y(79);X(80),Y(80); &
& X(81),Y(81);X(82),Y(82);X(83),Y(83);X(84),Y(84);X(85),Y(85);X(86),Y(86);X(87),Y(87);X(88),Y(88);X(89),Y(89);X(90),Y(90); &
& X(91),Y(91);X(92),Y(92);X(93),Y(93);X(94),Y(94);X(95),Y(95);X(96),Y(96);X(97),Y(97);X(98),Y(98);X(99),Y(99);X(100),Y(100)
350 FOR I=1 TO 101
360 LET X(I)=NUL
370 LET Y(I)=NUL
380 NEXT I
390 GOTO 170
400 END

  340行のPLOTAREAは,MATPLOT文を使ってみて... 白石和夫 2003/09/26 21:03:19  ツリーへ

Re: ポリゴンでお絵かき2 返事を書く
白石和夫 2003/09/26 21:03:19
340行のPLOT AREAは,MAT PLOT文を使ってみてください。きっと,ずっとコンパクトに書けます。
また,十進BASICでは未代入の変数の値は0なので,360行,370行の代入文は単に0を代入しているだけですね。Full BASIC規格だと変数の初期値は0とは決まってないので,ここは0と書いたほうがすっきりします。

   └早速お返事を頂けて感激です。初心者なもの... ヤマサキ 2003/09/26 22:12:34  ツリーへ

Re: 340行のPLOTAREAは,MATPLOT文を使ってみて... 返事を書く
ヤマサキ 2003/09/26 22:12:34
早速お返事を頂けて感激です。初心者なもので、お教えいただいた,MAT PLOT文についてすぐにはわかりませんが、ヘルプ等を参照して書きなおしてみます。ありがとうございます。

    └MATPLOTAREA,LIMITn:x,y 白石和夫 2003/09/27 20:57:55  ツリーへ

Re: 早速お返事を頂けて感激です。初心者なもの... 返事を書く
白石和夫 2003/09/27 20:57:55
MAT PLOT AREA, LIMIT n: x,y
みたいな感じです。LIMIT句を使えば,270〜300行は不要になるのでは?

     └配列のヘルプを読みまして、お教え頂いたMA... ヤマサキ 2003/09/29 18:34:40  ツリーへ

Re: MATPLOTAREA,LIMITn:x,y 返事を書く
ヤマサキ 2003/09/29 18:34:40
配列のヘルプを読みまして、お教え頂いた MAT PLOT文で書き直してみました。
コンパクトになったついでに、配列の大きさを一桁あげて、多角形の頂点の上限を
なくしました。(常識的に一度の描画で1000ポイント以上指定する人はないと思い
ますので)行列とか行列式とか言われるとよくわからないのですが、MAT文がとても
便利に使えるという事がわかりました。ありがとうごさいます。

REM *** ポリゴンでお絵かき NEW
!マウスクリックで頂点を指定し、最後に始点をクリックして多角形を閉じます。
!一つの多角形を描き終わった後、次の多角形を描く前に
!右上の青い三角形内をクリックするとそれまでに描いた画面をクリアします。
!全ての多角形を描き終えたら、左下の赤い三角形内をクリックして、
!プログラムを終了させてください。
!いろいろな多角形の組み合わせで絵や文字を描くことができます。
!多角形の色は乱数まかせです。思わぬ色の組み合わせが楽しめます。
!始点と終点がうまくつながらないときは230行目の数値「0.04」を
!「0.08」くらいまでの値に調整してみてください。

100 SET WINDOW 0,10,0,10
110 CLEAR
120 SET AREA COLOR 4
130 PLOT AREA:0,0;1,0;0,1
140 SET AREA COLOR 2
150 PLOT AREA:10,10;10,9;9,10
160 DIM X(1001),Y(1001)
170 FOR I=1 TO 1001
180 GET POINT:X(I),Y(I)
190 IF X(1)+Y(1)<1 THEN GOTO 340
200 IF X(1)+Y(1)>19 THEN GOTO 110
210 IF I>1 THEN
220 PLOT LINES:X(I-1),Y(I-1);X(I),Y(I)
230 IF SQR((X(1)-X(I))^2+((Y(1)-Y(I))^2)) <0.04 THEN GOTO 260
240 END IF
250 NEXT I
260 LET N=I-1
270 RANDOMIZE
280 SET COLOR MIX (255) RND,RND,RND
290 SET AREA COLOR 255
300 MAT PLOT AREA,LIMIT N:X,Y
310 MAT X=ZER
320 MAT Y=ZER
330 GOTO 170
340 END


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