変形指示mat文で書くフラクタル画像11種類 SECOND 2007/08/29 04:45:05 (修正3回) ├!続く SECOND 2007/08/29 04:46:56 (修正4回) │├色分けの不具合を、訂正。 SECOND 2007/08/30 14:13:34 (修正2回) │└修正2〜3の内容 SECOND 2007/09/04 13:32:50 (修正1回) │ ├DEF文の変換式は元のでいいのでは? 山中和義 2007/09/04 15:18:24 │ │├いえ、元のは、Xだと思います。白石先生、... SECOND 2007/09/04 17:57:16 (修正2回) │ │└貴兄の計算、MAT文は、新しい方、〜conj(z-... SECOND 2007/09/04 20:33:05 │ │ └私の理解が間違っていました。 山中和義 2007/09/05 09:31:42 │ └!複素数形式を行列形式(変形指示mat文、行... 山中和義 2007/09/04 15:38:58 (修正1回) │ └この件を、実験的に示せる例題がありません... SECOND 2007/09/04 19:26:53 (修正1回) ├!複素関数で書くTragonとシルピンスキーのガ... SECOND 2007/08/30 22:38:43 (修正2回) │└DEF文に大きな訂正が、あります。すみません... SECOND 2007/09/03 19:29:07 ├!T-squareとシルピンスキーのカーペット SECOND 2007/09/01 03:45:00 └!トラゴンが踊る。 SECOND 2007/09/06 17:40:38
変形指示mat文で書くフラクタル画像11種類 SECOND 2007/08/29 04:45:05 (修正3回) ツリーへ
変形指示mat文で書くフラクタル画像11種類 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/08/29 04:45:05 ** この記事は3回修正されてます | |
!変形指示mat文で書くフラクタル画像11種類
!----- !f0(z)= この枠に入っているのは、 !f1(z)= 該当している複素数形式の、 !f2(z)= 写像式です。 !----- !Nの小さい写像も、段階的に表現するため、親集合に省略形の点(0,0)を使わず、 !本来の親集合(0,0)~(1,0)線分を、使います。 OPTION ARITHMETIC NATIVE SET TEXT FONT "MS 明朝",18 DIM f1(4,4), f2(4,4), f3(4,4) LET D23=2 ! 2分岐フラグ !----- !f0(z)= (2+i)/4*z +i/4*conj(z) !f1(z)= (2-i)/4*(z-1) -i/4*conj(z-1) +1 !----- 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("高木関数のグラフ", 14, 0.5, 0.3, 0.6) !----- !f0(z)= 0*z +(1-EXP(-PI/5*i))*conj(z) !f1(z)= 0*(z-1) +(1-EXP( PI/5*i))*conj(z-1) +1 !----- 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("クリヌキ正五角形", 15, 0.5, 0.25, 0.6) !----- !f0(z)= (1+i)/2*z +0*conj(z) !f1(z)= 0*(z-1) -(1+i)/2*conj(z-1) +1 !----- 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("ブロッコリー", 16, 0.6, 0.5, 1.3) LET D23=3 ! 3分岐フラグ !----- !f0(z)= EXP(i*PI/6)/SQR(3)*z +0*conj(z) !f1(z)= EXP(i*PI/6)/SQR(3)*(z-2) +0*conj(z-2) +2 !f2(z)= EXP(i*PI/6)/SQR(3)*(z-1-i*sqr(3)) +0*conj(z-1-i*sqr(3)) +1+i*SQR(3) !----- MAT f1=ROTATE(PI/6)*SCALE(1/SQR(3)) MAT f2=SHIFT(-2,0)*ROTATE(PI/6)*SCALE(1/SQR(3))*SHIFT(2,0) MAT f3=SHIFT(-1,-SQR(3))*ROTATE(PI/6)*SCALE(1/SQR(3))*SHIFT(1,SQR(3)) CALL Afine("トラゴン集合", 10, 1, 0.8, 2) !----- !f0(z)= 1/2*z +0*conj(z) !f1(z)= 1/2*(z-2) +0*conj(z-2) +2 !f2(z)= 1/2*(z-1-i*sqr(3)) +0*conj(z-1-i*sqr(3)) +1+i*SQR(3) !----- MAT f1=SCALE(1/2) MAT f2=SHIFT(-2,0)*SCALE(1/2)*SHIFT(2,0) MAT f3=SHIFT(-1,-SQR(3))*SCALE(1/2)*SHIFT(1,SQR(3)) CALL Afine("シルピンスキーのガスケット", 10, 1, 0.8, 1.5) LET D23=2 ! 2分岐フラグ !----- !f0(z)= 0*z +(1+i)/2*conj(z) !f1(z)= 0*(z-1) +(1-i)/2*conj(z-1) +1 !----- 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("ペアノの曲線", 16, 0.5, 0.2, 0.6) !続く |
├!続く SECOND 2007/08/29 04:46:56 (修正4回) ツリーへ
Re: 変形指示mat文で書くフラクタル画像11種類 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/08/29 04:46:56 ** この記事は4回修正されてます | |
!続く
!----- !f0(z)= 0*z +(3+SQR(3)*i)/6*conj(z) !f1(z)= 0*(z-1) +(3-SQR(3)*i)/6*conj(z-1) +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("コッホの曲線", 14, 0.5, 0.1, 0.6) !----- !f0(z)= (1+i)/2*z +0*conj(z) !f1(z)= (1+i)/2*(z-1) +0*conj(z-1) +1 !----- 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("ドラゴン", 16, 0.5, 0, 1) !----- !f0(z)= (1+i)/2*z +0*conj(z) !f1(z)= (1-i)/2*(z-1) +0*conj(z-1) +1 !----- 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("レヴィのC曲線", 16, 0.5, 0.3, 1.1) !----- !f0(z)= (1+i)/2*z +0*conj(z) !f1(z)= 0*(z-1) +(1-i)/2*conj(z-1) +1 !----- 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("カニの行列", 16, 0.35, 0.3, 0.8) !----- !f0(z)= 0*z +EXP(i*PI/7)/SQR(3)*conj(z) !f1(z)= 0*(z-1) +2/3*conj(z-1) +1 !----- 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("葉脈曲線", 14, 0.5, 0.1, 0.6) beep !---------- SUB Afine(t$, Nmax, xm, ym, h) ! (題名, 最大N, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h FOR N=0 TO Nmax CLEAR DRAW grid PLOT TEXT,AT xm-h*0.8,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.4,ym+h*0.8:t$ LET col=1 IF D23=2 THEN DRAW D(N) ELSE DRAW D3(N) !親集合(0,0)~(1,0) のN階 写像. WAIT DELAY 1.5-EXP(N/40) NEXT N WAIT DELAY 1 END SUB !------ 3分岐型 PICTURE D3(k) IF 0<k THEN DRAW D3(k-1) WITH f1 DRAW D3(k-1) WITH f2 DRAW D3(k-1) WITH f3 ELSE DRAW Set01 LET col=col+3^(2-N) ! (2-N) 9色分割、(3-N) 27色分割、(4-N) 81色分割 END IF END PICTURE !------ 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 !------ 親集合(0,0)~(1,0) PICTURE Set01 SET LINE COLOR INT(col) PLOT LINES: 0,0;1,0 IF N<5 THEN PLOT POINTS:0.85,0 ! (1,0)方向85%位置に、* のマークを付ける。 END PICTURE END |
│├色分けの不具合を、訂正。 SECOND 2007/08/30 14:13:34 (修正2回) ツリーへ
Re: !続く |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/08/30 14:13:34 ** この記事は2回修正されてます | |
色分けの不具合を、訂正。
特に、ペアノ曲線が重症でした。 他のパターンについても、下記の訂正をする事で、 自己相似状態、接合状態が、正しく色分けされるようになった。 ※ルート・スレッド掲示の方は、すでに修正されています。 ( ) OPTION ARITHMETIC NATIVE ! ←追加、是非ではないが高速になる。 SET TEXT FONT "MS 明朝",18 DIM f1(4,4), f2(4,4), f3(4,4) ( ) !---------- SUB Afine(t$, Nmax, xm, ym, h) ! (題名, 最大N, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h FOR N=0 TO Nmax CLEAR DRAW grid PLOT TEXT,AT xm-h*0.8,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.4,ym+h*0.8:t$ !LET col=0 →削除 LET col=1 ! ←追加 IF D23=2 THEN DRAW D(N) ELSE DRAW D3(N) !親集合(0,0)~(1,0) のN階 写像. WAIT DELAY 1.5-EXP(N/40) NEXT N WAIT DELAY 1 END SUB PICTURE D3(k) IF 0<k THEN DRAW D3(k-1) WITH f1 DRAW D3(k-1) WITH f2 DRAW D3(k-1) WITH f3 !LET col=col+3^(4-N) →削除 ELSE DRAW Set01 LET col=col+3^(2-N) ! ←追加、(2-N) 9色分割、(3-N) 27色分割、(4-N) 81色分割 END IF END PICTURE PICTURE D(k) IF 0<k THEN DRAW D(k-1) WITH f1 DRAW D(k-1) WITH f2 !LET col=col+2^(4-N) →削除 ELSE DRAW Set01 LET col=col+2^(4-N) ! ←追加、(2-N) 4色分割、(3-N) 8色分割、(4-N) 16色分割 END IF END PICTURE !------ 親集合(0,0)~(1,0) PICTURE Set01 !SET LINE COLOR MOD(col,16)+1 →削除 SET LINE COLOR INT(col) ! ←追加 PLOT LINES: 0,0;1,0 IF N<5 THEN PLOT POINTS:0.85,0 ! (1,0)方向85%位置に、* のマークを付ける。 END PICTURE END |
│└修正2〜3の内容 SECOND 2007/09/04 13:32:50 (修正1回) ツリーへ
Re: !続く |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/04 13:32:50 ** この記事は1回修正されてます | |
修正2〜3の内容
対照の複素数形式を改め、 できるだけ相互の式の対照を、揃えた。 動作は、変化していない。 コッホの曲線の複素数参照式、誤り訂正。 付録、「変形指示mat文と複素数形式の相互対照」 |f0(z)|=|a b|| z |+|0 | |f1(z)| |r d||conj(z)| |1-r-d| f0(z)= a*z +b*conj(z) f1(z)= r*z +d*conj(z) +1-r-d 次のように、書き直すと、f1(z) が、(1,0)を新たな原点とする様な写像(回転縮小)に なっているのが、見易くなる。 反面、上の複素行列のようには、書けなくなる。 f0(z)= a*z +b*conj(z) f1(z)= r*(z-1) +d*conj(z-1) +1 MAT w1= ROTATE( ATN(IM(a)/RE(a)) )*SCALE(ABS(a)) ・・・a* MAT w2= SCALE(1,-1)*ROTATE( ATN(IM(b)/RE(b)) )*SCALE(ABS(b)) ・・・b*conj() MAT _f0= w1+w2 ・・・_f0(4,4)は、システム予約=1へ書き戻す。 MAT w1= ROTATE( ATN(IM(r)/RE(r)) )*SCALE(ABS(r)) ・・・r* MAT w2= SCALE(1,-1)*ROTATE( ATN(IM(d)/RE(d)) )*SCALE(ABS(d)) ・・・d*conj() MAT w3= w1+w2 ・・・ w3(4,4)は、システム予約=1へ書き戻す。 MAT _f1= SHIFT(-1,0)* w3 *SHIFT(1,0) ・・・(z-1)、+1 f1(z)= r*(z-m) +d*conj(z-m) +m ・・・m の座標が(1,0)でない場合、 MAT _f1= SHIFT(-RE(m),-IM(m))* w3 *SHIFT(RE(m),IM(m)) ※a と b は、片方=0、 r と d も、片方=0、が殆んどで、w1+w2 の計算が必要になる事は、めったにない。 |
│ ├DEF文の変換式は元のでいいのでは? 山中和義 2007/09/04 15:18:24 ツリーへ
Re: 修正2〜3の内容 |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2007/09/04 15:18:24 | |
DEF文の変換式は元のでいいのでは?
間違いかもしれませんが、私はこう認識しています。(共役部分) 縮小写像の変換式 点pにおける縮小写像の複素数形式 DEF f(Z, a,b,p)=a*(Z-p)+b*(conj(Z)-p)+p !またはa*Z+b*conj(Z)+p*(1-a-b) は、 点pにおける縮小写像の行列形式(同次座標) DIM ma(4,4),mb(4,4),f(4,4) MAT ma=SCALE(ABS(a))*ROTATE(arg(a)) !a*Z MAT mb=SCALE(1,-1)*SCALE(ABS(b))*ROTATE(arg(b)) !b*conj(Z) MAT f=ma+mb !原点における縮小写像 LET f(4,4)=1 !※システム予約 MAT f=SHIFT(-re(p),-im(p))*f*SHIFT(re(p),im(p)) !点pにおける縮小写像 ※ABS(0)のときのarg(0)に注意 と記述できる。 ABS(a)やarg(a)を代数的に求めれば、SCALE(1/SQR(2))やROTATE(PI/6)のようになる。 |
│ │├いえ、元のは、Xだと思います。白石先生、... SECOND 2007/09/04 17:57:16 (修正2回) ツリーへ
Re: DEF文の変換式は元のでいいのでは? |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/04 17:57:16 ** この記事は2回修正されてます | |
いえ、元のは、Xだと思います。白石先生、御願いします。
以下の内容の、問題です。f1(z)〜が、写像原点を、(1,0) でなく、m1〜 を使用する場合です。 !-----3分岐 複素関数形式 !DEF f0(z)=a*z+b*conj(z) !DEF f1(z)=r*z+d*conj(z) +m1*(1-r-d) ←修正前、誤り !DEF f2(z)=e*z+f*conj(z) +m2*(1-e-f) ← 〜、誤り !-----3分岐 複素関数形式 !DEF f0(z)=a*z+b*conj(z) !DEF f1(z)=r*z+d*conj(z) +m1(1-r)-conj(m1)*d ←正 !DEF f2(z)=e*z+f*conj(z) +m2(1-e)-conj(m2)*f ←正 DEF f0(z)=a*z+b*conj(z) DEF f1(z)=r*(z-m1)+d*conj(z-m1) +m1 ! ←この方が解り易い DEF f2(z)=e*(z-m2)+f*conj(z-m2) +m2 ! ← 〜 !----- |
│ │└貴兄の計算、MAT文は、新しい方、〜conj(z-... SECOND 2007/09/04 20:33:05 ツリーへ
Re: DEF文の変換式は元のでいいのでは? |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/04 20:33:05 | |
貴兄の計算、MAT文は、新しい方、〜conj(z-p) +p に、なっています。
よく見てください。 点pにおける縮小写像の複素数形式 DEF f(Z, a,b,p)=a*(Z-p)+b*(conj(Z)-p)+p !またはa*Z+b*conj(Z)+p*(1-a-b) は、 点pにおける縮小写像の行列形式(同次座標) DIM ma(4,4),mb(4,4),f(4,4) MAT ma=SCALE(ABS(a))*ROTATE(arg(a)) !a*Z MAT mb=SCALE(1,-1)*SCALE(ABS(b))*ROTATE(arg(b)) !b*conj(Z) MAT f=ma+mb !原点における縮小写像 LET f(4,4)=1 !※システム予約 MAT f=SHIFT(-re(p),-im(p))*f*SHIFT(re(p),im(p)) !点pにおける縮小写像 |
│ │ └私の理解が間違っていました。 山中和義 2007/09/05 09:31:42 ツリーへ
Re: 貴兄の計算、MAT文は、新しい方、〜conj(z-... |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2007/09/05 09:31:42 | |
私の理解が間違っていました。
行列の縮小写像は、〜conj(z-p)+pに対応しているんですね。 以下、確認のプログラム OPTION ARITHMETIC COMPLEX LET i=complex(0,1) !虚数単位 LET z1=0+i !試験用のデータ LET z2=1+i LET r=EXP(i*PI/6)/SQR(3) !試験用の変換 LET d=2-i LET m1=1+i*SQR(3) DEF f1(z)=r*(z-m1)+d*conj(z-m1)+m1 DEF f2(z)=r*(z-m1)+d*(conj(z)-m1)+m1 PRINT f1(z1) PRINT f1(z2) PRINT f2(z1) PRINT f2(z2) DIM w1(4,4),w2(4,4),w3(4,4),M(4,4) MAT w1=ROTATE(ATN(im(r)/re(r)))*SCALE(ABS(r)) !r* MAT w2=SCALE(1,-1)*ROTATE(ATN(im(d)/re(d)))*SCALE(ABS(d)) !d*conj() MAT w3=w1+w2 LET w3(4,4)=1 !w3(4,4)は、システム予約=1へ書き戻す。 MAT M=SHIFT(-re(m1),-im(m1))* w3 *SHIFT(re(m1),im(m1)) !(z-m1)、+m1 DIM p(4) LET p(1)=re(z1) !x ※z=x+y*i LET p(2)=im(z1) !y LET p(3)=0 LET p(4)=1 MAT p=p*M MAT PRINT p LET p(1)=re(z2) !x ※z=x+y*i LET p(2)=im(z2) !y LET p(3)=0 LET p(4)=1 MAT p=p*M MAT PRINT p END |
│ └!複素数形式を行列形式(変形指示mat文、行... 山中和義 2007/09/04 15:38:58 (修正1回) ツリーへ
Re: 修正2〜3の内容 |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2007/09/04 15:38:58 ** この記事は1回修正されてます | |
!複素数形式を行列形式(変形指示mat文、行列)に変換してみる
OPTION ARITHMETIC complex LET i=SQR(-1) !虚数単位 SET TEXT FONT "MS 明朝",18 DIM f1(4,4), f2(4,4), f3(4,4) LET a=0 LET b=(3+SQR(3)*i)/6 LET p=0 CALL SetM2(a,b,p, f1) !!!CALL SetM(a,b,p, f1) LET c=0 LET d=(3-SQR(3)*i)/6 LET p=1 CALL SetM2(c,d,p, f2) !!!CALL SetM(c,d,p, f2) CALL Afine("コッホの曲線", 14, 0.5, 0.1, 0.6) SUB SetM(a,b,p, f(,)) !点pにおける縮小写像 a*(Z-p)+b*Conj(Z-p)+p または a*Z+b*Conj(Z)+p*(1-a)-b*conj(p) DIM ma(4,4),mb(4,4) MAT ma=ZER !a*Zを得る IF ABS(a)>0 THEN MAT ma=SCALE(ABS(a))*ROTATE(arg(a)) MAT mb=ZER !b*Conj(Z)を得る IF ABS(b)>0 THEN MAT mb=SCALE(1,-1)*SCALE(ABS(b))*ROTATE(arg(b)) !共役 MAT f=ma+mb !原点における縮小写像a*Z+b*Conj(Z)を得る LET f(4,4)=1 MAT f=SHIFT(-re(p),-im(p))*f*SHIFT(re(p),im(p)) !点pにおける縮小写像を得る END SUB SUB SetM2(c,d,p, f(,)) DIM mc(2,2),md(2,2),mt(2,2),ms(4,4) LET mc(1,1)=re(c) !複素数cを行列へ LET mc(1,2)=-im(c) LET mc(2,1)=im(c) LET mc(2,2)=re(c) LET md(1,1)=re(d) !複素数dを行列へ LET md(1,2)=-im(d) LET md(2,1)=im(d) LET md(2,2)=re(d) LET mt(1,1)=1 !共役 ※X軸対称 LET mt(1,2)=0 LET mt(2,1)=0 LET mt(2,2)=-1 MAT md=md*mt !d*Conj(Z)を得る MAT mt=mc+md !原点における縮小写像c*Z+d*Conj(Z)を得る MAT f=IDN !点pにおける縮小写像を得るために同次座標系へ LET f(1,1)=mt(1,1) LET f(1,2)=mt(2,1) !※転置(座標は行ベクトルのため) LET f(2,1)=mt(1,2) !※ LET f(2,2)=mt(2,2) MAT ms=IDN !点pから原点へ平行移動 LET ms(4,1)=-re(p) LET ms(4,2)=-im(p) MAT f=ms*f !縮小写像を行う LET ms(4,1)=re(p) !もとの位置pへ LET ms(4,2)=im(p) MAT f=f*ms !点pにおける縮小写像c*(Z-p)+d*Conj(Z-p)+pを得る END SUB !---------- SUB Afine(t$, Nmax, xm, ym, h) ! (題名, 最大N, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h FOR N=0 TO Nmax CLEAR DRAW grid PLOT TEXT,AT xm-h*0.8,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.4,ym+h*0.8:t$ LET col=1 DRAW D(N) !親集合(0,0)~(1,0) のN階 写像. WAIT DELAY 1.5-EXP(N/40) NEXT N WAIT DELAY 1 END SUB !------ 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 !------ 親集合(0,0)~(1,0) PICTURE Set01 SET LINE COLOR INT(col) PLOT LINES: 0,0;1,0 IF N<5 THEN PLOT POINTS:0.85,0 ! (1,0)方向85%位置に、* のマークを付ける。 END PICTURE END |
│ └この件を、実験的に示せる例題がありません... SECOND 2007/09/04 19:26:53 (修正1回) ツリーへ
Re: !複素数形式を行列形式(変形指示mat文、行... |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/04 19:26:53 ** この記事は1回修正されてます | |
この件を、実験的に示せる例題がありません。
結果が違ったものになるためには、 d ・・conj(z) の係数が、0でなく、かつ、 f1(z) の写像原点pが、(私は、m1,m2,の記号を使用した) (1,0) でなく、Tragon のように、虚数部を含む必要が、あります。 ただ、変形指示mat文で、両サイドに、 SHIFT(-re( p ),-im( p ) )*SCALE(1,-1)* 〜 〜 *SHIFT(re( p ),im( p ) ) を、置くならば、〜*conj(z-p) +p とした事に、なるでしょう。 |
├!複素関数で書くTragonとシルピンスキーのガ... SECOND 2007/08/30 22:38:43 (修正2回) ツリーへ
Re: 変形指示mat文で書くフラクタル画像11種類 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/08/30 22:38:43 ** この記事は2回修正されてます | |
!複素関数で書くTragon とシルピンスキーのガスケット
!構造が同じ、写像関数とプログラム、であるのに、 !Nが大きくなると、描画の順序が、違っているのが、見えてきます。 !(変形指示mat文形式) !写像関数(行列)の方を、直列計算し、出来た関数で写像する。 !平行移動成分が、回毎に、小さくなっていくためか、隣接描画。 !(複素関数形式) !写像関数を固定し、座標数値だけを、繰返し直列計算する。 !平行移動成分が、毎回、固定され、全体へ分散しながら描画。 !色分けの際に注意。 SET TEXT FONT "MS 明朝",18 OPTION ARITHMETIC COMPLEX DIM z0(0 TO 3^10) ! 最大N=10 LET i=complex(0,1) ! i= 虚数 !-----3分岐 複素関数形式 !DEF f0(z)=a*z+b*conj(z) !DEF f1(z)=r*z+d*conj(z) +m1*(1-r-d) ←修正前、誤り !DEF f2(z)=e*z+f*conj(z) +m2*(1-e-f) ← 〜、誤り !-----3分岐 複素関数形式 !DEF f0(z)=a*z+b*conj(z) !DEF f1(z)=r*z+d*conj(z) +m1(1-r)-conj(m1)*d ←正 !DEF f2(z)=e*z+f*conj(z) +m2(1-e)-conj(m2)*f ←正 DEF f0(z)=a*z+b*conj(z) DEF f1(z)=r*(z-m1)+d*conj(z-m1) +m1 ! ←この方が解り易い DEF f2(z)=e*(z-m2)+f*conj(z-m2) +m2 ! ← 〜 !----- !MAT f1=SCALE(1/SQR(3))*ROTATE(PI/6) !MAT f2=SHIFT(-2,0)*SCALE(1/SQR(3))*ROTATE(PI/6)*SHIFT(2,0) !MAT f3=SHIFT(-1,-SQR(3))*SCALE(1/SQR(3))*ROTATE(PI/6)*SHIFT(1,SQR(3)) !----- LET a=EXP(i*PI/6)/SQR(3) LET b=0 LET r=a LET d=0 LET m1=2 LET e=a LET f=0 LET m2=1+i*SQR(3) CALL Afine("Tragon 集合", 10, 1, 0.8, 2) !----- !MAT f1=SCALE(1/2) !MAT f2=SHIFT(-2,0)*SCALE(1/2)*SHIFT(2,0) !MAT f3=SHIFT(-1,-SQR(3))*SCALE(1/2)*SHIFT(1,SQR(3)) !----- LET a=1/2 LET b=0 LET r=1/2 LET d=0 LET m1=2 LET e=1/2 LET f=0 LET m2=1+i*SQR(3) CALL Afine("シルピンスキーのガスケット", 10, 1, 0.8, 1.5) !---------- SUB Afine(t$, Nmax, xm, ym, h) ! (題名, 最大N, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h FOR N=0 TO Nmax CLEAR DRAW grid PLOT TEXT,AT xm-h*0.8,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.4,ym+h*0.8:t$ LET cx=0 CALL f0f1s(N, 0) ! z=0 の写像。 記憶のみ。 LET cx=0 CALL f0f1(N, 1) ! z=1 の写像。 z=0 の記憶と線で結ぶ。 WAIT DELAY 1.5-EXP(N/40) NEXT N beep WAIT DELAY 1 END SUB !------ 全て z=0 の写像。 記憶のみ。 SUB f0f1s(k, z) IF 0<k THEN CALL f0f1s(k-1, f0(z)) CALL f0f1s(k-1, f1(z)) CALL f0f1s(k-1, f2(z)) ELSE LET z0(cx)=z LET cx=cx+1 END IF END SUB !------ 全て z=1 の写像。 z=0 の記憶z0() と線で結ぶ。 SUB f0f1(k, z) IF 0<k THEN CALL f0f1(k-1, f0(z)) CALL f0f1(k-1, f1(z)) CALL f0f1(k-1, f2(z)) ELSE DRAW linez0(z) LET cx=cx+1 END IF END SUB !------ z0()~z の写像の直線を描き、z 側の85%位置に、* のマークを付ける。 PICTURE linez0(z) SET LINE COLOR MOD(cx,9)+1 ! 3^2=9色分割、3^3=27色分割、3^4=81色分割・・(分岐数)^m PLOT LINES: re(z0(cx)),im(z0(cx)); re(z),im(z) IF N<4 THEN PLOT POINTS: re(z0(cx))*0.15+re(z)*0.85, im(z0(cx))*0.15+im(z)*0.85 END PICTURE END |
│└DEF文に大きな訂正が、あります。すみません... SECOND 2007/09/03 19:29:07 ツリーへ
Re: !複素関数で書くTragonとシルピンスキーのガ... |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/03 19:29:07 | |
DEF 文に大きな訂正が、あります。すみません。
不幸にも、動作上に変化は、ありませんが、 大きな間違いでした。 |
├!T-squareとシルピンスキーのカーペット SECOND 2007/09/01 03:45:00 ツリーへ
Re: 変形指示mat文で書くフラクタル画像11種類 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/01 03:45:00 | |
!T-square と シルピンスキーのカーペット
OPTION ARITHMETIC NATIVE SET TEXT FONT "MS 明朝",18 ASK bitmap SIZE savW,savH ! グラフ画面サイズの控え。 !---------- LET D48=4 SET BITMAP SIZE 641,641 CALL Afine("T−square", 6, 0, 0.2, 2.4) WAIT DELAY 2.5 LET D48=8 SET BITMAP SIZE 501,501 CALL Afine("シルピンスキーのカーペット", 6, 0, 0.3, 3.7) SET bitmap SIZE savW,savH ! グラフ画面サイズを、起動前に戻す。 !---------- SUB Afine(t$, Nmax, xm, ym, h) ! (題名, 最大N, 中心X, 中心Y, 半幅) SET WINDOW xm-h,xm+h, ym-h,ym+h FOR N=0 TO Nmax CLEAR DRAW grid PLOT TEXT,AT xm-h*0.8,ym+h*0.8, USING "N= %%":N PLOT TEXT,AT xm-h*0.4,ym+h*0.8:t$ LET col=0 IF D48=4 THEN DRAW D4(N) ELSE DRAW D8(N) WAIT DELAY 1.5-EXP(N/40) NEXT N END SUB !------ T-square PICTURE D4(k) IF 0<k THEN DRAW D4(k-1) WITH SCALE(1/2)*SHIFT( 1, 1) DRAW D4(k-1) WITH SCALE(1/2)*SHIFT(-1, 1) DRAW D4(k-1) WITH SCALE(1/2)*SHIFT(-1,-1) DRAW D4(k-1) WITH SCALE(1/2)*SHIFT( 1,-1) END IF ! 0階1階2階・・N階、全て重ね書き。 PLOT AREA: -1,-1;1,-1;1,1;-1,1 ! 親集合の塗りつぶされた正方形。 END PICTURE !------ シルピンスキーのカーペット Sierpinski carpet PICTURE D8(k) IF 0<k THEN DRAW D8(k-1) WITH SCALE(1/3)*SHIFT( 2, 0) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT( 2, 2) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT( 0, 2) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT(-2, 2) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT(-2, 0) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT(-2,-2) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT( 0,-2) DRAW D8(k-1) WITH SCALE(1/3)*SHIFT( 2,-2) ELSE SET LINE COLOR MOD(INT(col),16)+1 PLOT LINES: -1,-1;1,-1;1,1;-1,1;-1,-1 ! 親集合の正方形。 LET col=col+8^(1-N) ! (0-N) 1色(黒)、(1-N) 8色分割、(2-N) 64色分割 END IF END PICTURE END |
└!トラゴンが踊る。 SECOND 2007/09/06 17:40:38 ツリーへ
Re: 変形指示mat文で書くフラクタル画像11種類 |
返事を書く ノートメニュー |
SECOND <cszcthjjdj> 2007/09/06 17:40:38 | |
!トラゴン が踊る。
!このプログラムは、十進BASICサンプル fractal\TRIANGLE.BAS を、 !元にしたものです。 OPTION ARITHMETIC NATIVE OPTION ANGLE DEGREES SET POINT STYLE 1 LET alpha=-15 LET ds=15 LET N=9 LET h=3.6 DO SET WINDOW 1-h+ds/40, 1+h+ds/40, 0.5-h, 0.5+h SET DRAW mode hidden CLEAR PLOT TEXT,AT ds/40, 3:"Any Key to Stop" DRAW tragon(N) SET DRAW mode explicit IF 30<=ABS(alpha) THEN WAIT DELAY 0.5 SET DRAW mode hidden CLEAR DRAW tragon(N) SET DRAW mode explicit PLOT TEXT,AT ds/40, 3:"Any Key to Stop" WAIT DELAY 0.25 LET ds=-ds END IF LET alpha=alpha+ds CHARACTER INPUT NOWAIT:s$ LOOP UNTIL ""<s$ PICTURE tragon(k) IF 0<k THEN DRAW tragon(k-1) WITH SCALE(1/SQR(3))*ROTATE(alpha) DRAW tragon(k-1) WITH SHIFT(-2,0)*SCALE(1/SQR(3))*ROTATE(alpha)*SHIFT(2,0) DRAW tragon(k-1) WITH SHIFT(-1,-SQR(3))*SCALE(1/SQR(3))*ROTATE(alpha)*SHIFT(1,SQR(3)) ELSE SET POINT COLOR MOD(INT(col),8)+1 PLOT POINTS: 0,0 LET col=col+3^(2-N) END IF END PICTURE END |