ポリゴンでお絵かき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 |