新しく発言する EXIT インデックスへ
MAT文・フラクタル画像・追跡ツール3

  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 での、
御活動など、投稿して下さい。


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