MAT文・フラクタル画像・追跡ツール3 SECOND 2007/09/16 01:52:44 (修正1回) ├!続く SECOND 2007/09/16 01:53:50 (修正1回) └!複素数・フラクタル画像・追跡ツール4 SECOND 2007/09/16 04:53:36 (修正1回) └!(2)続く SECOND 2007/09/16 04:54:50 (修正1回) └Linux版6.4.xで支障なし 島村1243 2007/09/17 19:30:20 ├安心しました。ありがとうございます。フリ... SECOND 2007/09/18 00:04:25 (修正2回) └ご面倒かけますが、此方のKey入力も、試して... SECOND 2007/09/18 05:42:52 └Linuxでのフリッカ無し 島村1243 2007/09/20 21:21:36 └ご返事ありがとうございます、ひとづかい、... SECOND 2007/09/20 23:26:19
MAT文・フラクタル画像・追跡ツール3 SECOND 2007/09/16 01:52:44 (修正1回) ツリーへ
MAT文・フラクタル画像・追跡ツール3 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/16 01:52:44 ** この記事は1回修正されてます | |
! MAT文・フラクタル画像・追跡ツール3
!親集合にマーク付3角形を使い、相似縮小状態(方向、裏表)が見える様にした。 OPTION ARITHMETIC NATIVE DIM f1(4,4), f2(4,4), f3(4,4) SET TEXT FONT "",18 SET TEXT BACKGROUND "OPAQUE" ! 文字の背景を、背景色(色指標が0の色)で塗る。 SET POINT COLOR 0 LET item=101 ! Start with demo.=101~111, Normal=1~11 LET N=7 !---------- DO SELECT CASE MOD(item,100) CASE 1 MAT f1=SCALE(1,-1)*ROTATE(PI/6)*SCALE(1/SQR(3)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(-PI/6)*SCALE(1/SQR(3))*SHIFT(1,0) CALL Afine("1.コッホの曲線", 0.5, 0.1, 0.6) CASE 2 MAT f1=ROTATE(PI/4)*SCALE(1/SQR(2)) MAT f2=SHIFT(-1,0)*ROTATE(-PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) CALL Afine("2.レヴィのC曲線", 0.5, 0.3, 1.1) CASE 3 MAT f1=ROTATE(PI/4)*SCALE(1/SQR(2)) MAT f2=SHIFT(-1,0)*ROTATE(PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) CALL Afine("3.ドラゴン", 0.5, -0.05, 1) CASE 4 MAT f1=SCALE(1,-1)*ROTATE(PI/4)*SCALE(1/SQR(2)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(-PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) CALL Afine("4.ペアノの曲線", 0.5, 0.2, 0.6) CASE 5 MAT f1=SCALE(1,-1)*ROTATE(PI/7)*SCALE(1/SQR(3)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*SCALE(2/3)*SHIFT(1,0) CALL Afine("5.葉脈曲線", 0.5, 0, 0.6) ! (題名, 中心X, 中心Y, 半幅) CASE 6 MAT f1=ROTATE(PI/4)*SCALE(1/SQR(2)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(-PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) CALL Afine("6.カニの行列", 0.34, 0.2, 0.7) CASE 7 MAT f1=SCALE(1,-1)*ROTATE(PI*2/5)*SCALE(2*SIN(PI/10)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(-PI*2/5)*SCALE(2*SIN(PI/10))*SHIFT(1,0) CALL Afine("7.クリヌキ正五角形", 0.5, 0.25, 0.6) CASE 8 MAT f1=ROTATE(PI/4)*SCALE(1/SQR(2)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(PI+PI/4)*SCALE(1/SQR(2))*SHIFT(1,0) CALL Afine("8.ブロッコリー", 0.58, 0.4, 1.3) CASE 9 MAT f1=ROTATE(ATN(1/2))*SCALE(SQR(5)/4) MAT f3=SCALE(1,-1)*ROTATE(PI/2)*SCALE(1/4) MAT f1=f1+f3 LET f1(4,4)=1 ! システム予約(倍率逆数) MAT f2=ROTATE(ATN(-1/2))*SCALE(SQR(5)/4) MAT f3=SCALE(1,-1)*ROTATE(-PI/2)*SCALE(1/4) MAT f2=f2+f3 LET f2(4,4)=1 ! システム予約(倍率逆数) MAT f2=SHIFT(-1,0)*f2*SHIFT(1,0) CALL Afine("9.高木関数", 0.5, 0.3, 0.6) CASE 10 LET a=0.4614 ! α=a+a*i !f0(z)= α*z !f1(z)={1/(1+α)}*(z-1) +1 MAT f1=ROTATE(PI/4)*SCALE(SQR(a^2*2)) MAT f2=SHIFT(-1,0)*ROTATE(-ATN(a/(1+a)))*SCALE(1/SQR((1+a)^2+a^2))*SHIFT(1,0) CALL Afine("10.Extra-1", 0.4, 0.2, 0.7) !続く |
├!続く SECOND 2007/09/16 01:53:50 (修正1回) ツリーへ
Re: MAT文・フラクタル画像・追跡ツール3 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/16 01:53:50 ** この記事は1回修正されてます | |
!続く
CASE 11 LET a=0.4614 ! α=a+a*i !f0(z)= α*z !f1(z)= {(1-α)/(1-conj(α)^2)}*conj(z-1) +1 MAT f1=ROTATE(PI/4)*SCALE(SQR(a^2*2)) MAT f2=SHIFT(-1,0)*SCALE(1,-1)*ROTATE(ATN(-a/(1-a))-ATN(a^2*2))*SCALE(SQR(((1-a)^2+a^2)/(1+a^4*4)))*SHIFT(1,0) CALL Afine("11.Extra-2", 0.34, 0.25, 0.75) CASE ELSE LET item=1 ! after Demo. LET N=1 END SELECT LOOP !---------- SUB Afine(t$, xm, ym, h) ! (題名, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h DO SET DRAW mode hidden CLEAR DRAW grid PLOT TEXT,AT xm-h*0.9,ym+h*0.8:" BUSY." PLOT TEXT,AT xm-h*0.5,ym+h*0.8:t$ PLOT TEXT,AT xm+h*0.6,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.93,ym-h*0.8:"ESC:終了" PLOT TEXT,AT xm-h*0.35,ym-h*0.8:"\:N= 00" PLOT TEXT,AT xm+h*0.19,ym-h*0.8:"BackSpace:N−1" PLOT TEXT,AT xm-h*0.926,ym-h*0.9:"半角の1~9,A~B:曲線選択" PLOT TEXT,AT xm+h*0.38,ym-h*0.9:"Enter:N+1" SET DRAW mode explicit LET col=1 DRAW D(N) !親集合(0,0)~(0.5,?i)~(1,0) のN階 写像. IF N=16 THEN beep !--------------------Start with demo. IF 100<item THEN WAIT DELAY 0.5 LET item=item+1 EXIT DO END IF !--------------------Normal. PLOT TEXT,AT xm-h*0.9,ym+h*0.8:"key? " CALL keyin SELECT CASE ky CASE 27 STOP !Esc CASE 49 TO 57 !"1"〜"9" 49〜57 =31h~39h LET item=ky-48 ! item=1~9 EXIT DO CASE 65 TO 66 !"A"〜"Z" 65~90 =41h~5ah, limit"B" LET item=ky-55 ! item=10~35 EXIT DO CASE 92 LET N=0 !\ CASE 13 IF N<16 THEN LET N=N+1 !Enter CASE 8 IF 0<N THEN LET N=N-1 !BS CASE ELSE END SELECT LOOP END SUB !------ 2分岐型 PICTURE D(k) IF 0<k THEN DRAW D(k-1) WITH f1 DRAW D(k-1) WITH f2 ELSE DRAW Set01 LET col=col+2^(4-N) ! (2-N) 4色分割、(3-N) 8色分割、(4-N) 16色分割 END IF END PICTURE !------ 親集合 PICTURE Set01 IF N<14 THEN SET AREA COLOR INT(col) PLOT AREA: 0,0;1,0;0.5,SQR(3)/6 IF N<5 THEN PLOT POINTS:0.8,0.05 ! (1,0)側、角位置に、* のマークを付ける。 ELSE SET LINE COLOR INT(col) PLOT LINES: 0,0;1,0 END IF END PICTURE !------ !BS 8 =08h !Enter 13 =0dh !Esc 27 =1bh !0〜9 48~57 =30h~39h !A〜Z 65~90 =41h~5ah !\ 92 =5ch !------ SUB keyin LET ky$="" DO WHEN EXCEPTION IN CHARACTER INPUT CLEAR,TIMEOUT 1: ky$ USE END WHEN LOOP UNTIL ""<ky$ LET ky=ORD(UCASE$(ky$)) END SUB END |
└!複素数・フラクタル画像・追跡ツール4 SECOND 2007/09/16 04:53:36 (修正1回) ツリーへ
Re: MAT文・フラクタル画像・追跡ツール3 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/16 04:53:36 ** この記事は1回修正されてます | |
!複素数・フラクタル画像・追跡ツール4
!親集合にマーク付3角形を使い、相似縮小状態(方向、裏表)が見える様にした。 OPTION ARITHMETIC COMPLEX DIM z0(0 TO 2^16), z3(0 TO 2^16) ! 最大N=16 SET TEXT FONT "",18 SET TEXT BACKGROUND "OPAQUE" ! 文字の背景を、背景色(色指標が0の色)で塗る。 SET POINT COLOR 0 SET LINE STYLE 1 LET i=complex(0,1) ! i= 虚数 LET item=101 ! Start with demo.=101~111, Normal=1~11 LET N=7 !---------- DO SELECT CASE MOD(item,100) CASE 1 LET a=0 LET b=(3+SQR(3)*i)/6 LET r=0 LET d=conj(b) CALL Afine("1.コッホの曲線", 0.5, 0.1, 0.6) CASE 2 LET a=(1+i)/2 LET b=0 LET r=conj(a) LET d=0 CALL Afine("2.レヴィのC曲線", 0.5, 0.3, 1.1) CASE 3 LET a=(1+i)/2 LET b=0 LET r=a LET d=0 CALL Afine("3.ドラゴン", 0.5, -0.05, 1) CASE 4 LET a=0 LET b=(1+i)/2 LET r=0 LET d=conj(b) CALL Afine("4.ペアノの曲線", 0.5, 0.2, 0.6) CASE 5 LET a=0 LET b=EXP(i*PI/7)/SQR(3) LET r=0 LET d=2/3 CALL Afine("5.葉脈曲線", 0.5, 0, 0.6) ! (題名, 中心X, 中心Y, 半幅) CASE 6 LET a=(1+i)/2 LET b=0 LET r=0 LET d=conj(a) CALL Afine("6.カニの行列", 0.34, 0.2, 0.7) CASE 7 LET a=0 LET b=1-EXP(-PI/5*i) LET r=0 LET d=conj(b) CALL Afine("7.クリヌキ正五角形", 0.5, 0.25, 0.6) CASE 8 LET a=(1+i)/2 LET b=0 LET r=0 LET d=-a CALL Afine("8.ブロッコリー", 0.58, 0.4, 1.3) CASE 9 LET a=(2+i)/4 LET b=i/4 LET r=(2-i)/4 LET d=-i/4 CALL Afine("9.高木関数", 0.5, 0.3, 0.6) CASE 10 LET a=0.4614+0.4614*i LET b=0 LET r=1/(1+a) LET d=0 CALL Afine("10.Extra-1", 0.4, 0.2, 0.7) CASE 11 LET a=0.4614+0.4614*i LET b=0 LET r=0 LET d=(1-a)/(1-conj(a)^2) CALL Afine("11.Extra-2", 0.34, 0.25, 0.75) CASE ELSE LET item=1 ! after Demo. LET N=1 END SELECT LOOP !---------- SUB Afine(t$, xm, ym, h) ! (題名, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h DO SET DRAW mode hidden CLEAR DRAW grid PLOT TEXT,AT xm-h*0.9,ym+h*0.8:" BUSY." PLOT TEXT,AT xm-h*0.5,ym+h*0.8:t$ PLOT TEXT,AT xm+h*0.6,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.93,ym-h*0.8:"ESC:終了" PLOT TEXT,AT xm-h*0.35,ym-h*0.8:"\:N= 00" PLOT TEXT,AT xm+h*0.19,ym-h*0.8:"BackSpace:N−1" PLOT TEXT,AT xm-h*0.926,ym-h*0.9:"半角の1~9,A~B:曲線選択" PLOT TEXT,AT xm+h*0.38,ym-h*0.9:"Enter:N+1" SET DRAW mode explicit !(2)続く |
└!(2)続く SECOND 2007/09/16 04:54:50 (修正1回) ツリーへ
Re: !複素数・フラクタル画像・追跡ツール4 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/16 04:54:50 ** この記事は1回修正されてます | |
!(2)続く
LET cx=0 CALL f0f1s(N, 0) ! z=0 の写像。 記憶のみ。 LET cx=0 CALL f0f1p(N, 1/2+SQR(3)/6*i) ! z=0.5+?i の写像。 記憶のみ。 LET cx=0 CALL f0f1(N, 1) ! z=1 の写像。 z=0, z=0.5+?i の記憶とで3角形を描く。 IF N=16 THEN beep !--------------------Start with demo. IF 100<item THEN WAIT DELAY 0.5 LET item=item+1 EXIT DO END IF !--------------------Normal. PLOT TEXT,AT xm-h*0.9,ym+h*0.8:"key? " CALL keyin SELECT CASE ky CASE 27 STOP !Esc CASE 49 TO 57 !"1"〜"9" 49~57 =31h~39h LET item=ky-48 ! item=1~9 EXIT DO CASE 65 TO 66 !"A"〜"Z" 65~90 =41h~5ah, limit"B" LET item=ky-55 ! item=10~35 EXIT DO CASE 92 LET N=0 !\ CASE 13 IF N<16 THEN LET N=N+1 !Enter CASE 8 IF 0<N THEN LET N=N-1 !BS CASE ELSE END SELECT LOOP END SUB !---------- セルフ・アファイン集合 DEF f0(z)=a*z+b*conj(z) DEF f1(z)=r*(z-1)+d*conj(z-1) +1 !------ 全て z=0 の写像。 記憶のみ。 SUB f0f1s(k, z) IF 0<k THEN CALL f0f1s(k-1, f0(z)) CALL f0f1s(k-1, f1(z)) ELSE LET z0(cx)=z LET cx=cx+1 END IF END SUB !------ 全て z=0.5+?i の写像。 記憶のみ。 SUB f0f1p(k, z) IF 0<k THEN CALL f0f1p(k-1, f0(z)) CALL f0f1p(k-1, f1(z)) ELSE LET z3(cx)=z LET cx=cx+1 END IF END SUB !------ 全て z=1 の写像。 z=0, z=0.5+?i の記憶とで、3角形を描く。 SUB f0f1(k, z) IF 0<k THEN CALL f0f1(k-1, f0(z)) CALL f0f1(k-1, f1(z)) ELSE DRAW lin_z0(z) LET cx=cx+1 END IF END SUB !------ z0()~z3()~z の3角形を描き、z 側70%位置に、* のマークを付ける。 PICTURE lin_z0(z) SET AREA COLOR MOD(cx,16)+1 PLOT AREA: re(z0(cx)),im(z0(cx)); re(z3(cx)),im(z3(cx)); re(z),im(z) IF N<5 THEN PLOT POINTS: re(z0(cx))*0.12+re(z3(cx))*0.18+re(z)*0.7, im(z0(cx))*0.12+im(z3(cx))*0.18+im(z)*0.7 END PICTURE !------ !BS 8 =08h !Enter 13 =0dh !Esc 27 =1bh !0〜9 48~57 =30h~39h !A〜Z 65~90 =41h~5ah !\ 92 =5ch !------ SUB keyin LET ky$="" DO WHEN EXCEPTION IN CHARACTER INPUT CLEAR,TIMEOUT 1: ky$ USE END WHEN LOOP UNTIL ""<ky$ LET ky=ORD(UCASE$(ky$)) END SUB END |
└Linux版6.4.xで支障なし 島村1243 2007/09/17 19:30:20 ツリーへ
Re: !(2)続く |
返事を書く ノートメニュー |
島村1243 <bjllmpcujp> 2007/09/17 19:30:20 | |
Linux版6.4.xで支障なし
Fedora7とDebian3.1で動作確認しました。正常に機能しました。 ただ、character input ダイアログが高速でフリッカしている のが目に付きました。 Windows版59Aでもrunしたら、フリッカ速度が更に早いので、良く 注意して見ないと気付かない程度でした。 以上報告です。 |
├安心しました。ありがとうございます。フリ... SECOND 2007/09/18 00:04:25 (修正2回) ツリーへ
Re: Linux版6.4.xで支障なし |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/18 00:04:25 ** この記事は2回修正されてます | |
安心しました。ありがとうございます。フリッカしているのは、
NOWAIT句を、使って、 character input の呼出しを、繰り返しているためですが、 すこし、みっともないですね。 通常どうりに、次の様に書けば、チラつかないのですが・・ SUB keyin CHARACTER INPUT CLEAR: ky$ LET ky=ORD(UCASE$(ky$)) END SUB しかし・・ 実行中、グラフやプログラムの画面を、クリックしたりすると 「INPUT Window 非選択」になり、key入力が遮断されますので、 「INPUT Window 選択」状態に、もう一度クリックして、戻さなければ、 ならない。 V7.00 では、INPUT Window は最前面に優先され、探し易くなっていますが、 V5.9A 以前では、他の下敷きになって、探すのが、少し面倒だった。 多分、試験中で、INPUT window が、邪魔にならないか否か、とか、しばらく、 様子を見てからでないと、Linux には、やって貰えないと、思います。 !------ 上の様な、不都合があって、今の様にしました。 |
└ご面倒かけますが、此方のKey入力も、試して... SECOND 2007/09/18 05:42:52 ツリーへ
Re: Linux版6.4.xで支障なし |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/18 05:42:52 | |
ご面倒かけますが、此方のKey入力も、試してくれますか。
「input window」のチラツキ対策。「input window 非選択」からの自己回復は1秒以内。 「変更予定」・・Win98SE で良好。自分では、気に入っている。 !------ SUB keyin LET ky$="" DO WHEN EXCEPTION IN CHARACTER INPUT CLEAR,TIMEOUT 1: ky$ USE END WHEN LOOP UNTIL ""<ky$ LET ky=ORD(UCASE$(ky$)) END SUB 「現状」・・あまり良くない !------ SUB keyin DO FOR w=1 TO 5 CHARACTER INPUT NOWAIT:ky$ IF ""<ky$ THEN EXIT FOR WAIT DELAY 0.02 NEXT w LOOP UNTIL 5<w DO CHARACTER INPUT NOWAIT:ky$ WAIT DELAY 0.05 LOOP UNTIL ""<ky$ LET ky=ORD(UCASE$(ky$)) END SUB |
└Linuxでのフリッカ無し 島村1243 2007/09/20 21:21:36 ツリーへ
Re: ご面倒かけますが、此方のKey入力も、試して... |
返事を書く ノートメニュー |
島村1243 <bjllmpcujp> 2007/09/20 21:21:36 | |
Linuxでのフリッカ無し
遅くなりましたが、同じPCに入っているFedora7とVine4.0でSECONDさんの改訂版をためしました。 結果は、charcter-inputダイアログのフリッカは無くなり(タイトル英文字は1秒位の周期で動いて います)快適です。 |
└ご返事ありがとうございます、ひとづかい、... SECOND 2007/09/20 23:26:19 ツリーへ
Re: Linuxでのフリッカ無し |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/20 23:26:19 | |
ご返事ありがとうございます、ひとづかい、ひどくて
すみません。感謝してます。また、何か、Linux での、 御活動など、投稿して下さい。 |