自己相似図形その1 A.Ohira 2005/08/26 10:39:38 └自己相似図形その2 A.Ohira 2005/08/26 10:43:50 └自己相似図形その3 A.Ohira 2005/08/26 10:45:25 └自己相似形その4 A.Ohira 2006/01/10 15:09:33
自己相似図形その1 A.Ohira 2005/08/26 10:39:38 ツリーへ
自己相似図形その1 |
返事を書く |
A.Ohira 2005/08/26 10:39:38 | |
はじめまして。高校で情報を担当(おこがましいですが)している教員です。 久しぶりに授業でBASICを扱ってみようか、とダウンロードしてみました。 ついでに、昔々にBASICで遊んでいたころのプログラムを移植(というほどでもない)してみました。 まずはC曲線です。Levy曲線ていうんですか? orderに、0から順に整数値を入力してください。 DECLARE EXTERNAL SUB ccurve SET WINDOW -2.5,2.5,-2.5,2.5 INPUT PROMPT "order":order SET LINE COLOR order+1 CALL ccurve(order,-1,0,1,0) END EXTERNAL SUB ccurve(order,xf,yf,xt,yt) IF order=0 THEN PLOT LINES: xf,yf;xt,yt ELSE LET xm=(xf+xt)/2-(yt-yf)/2 LET ym=(yf+yt)/2+(xt-xf)/2 CALL ccurve(order-1,xf,yf,xm,ym) CALL ccurve(order-1,xm,ym,xt,yt) END IF END SUB |
└自己相似図形その2 A.Ohira 2005/08/26 10:43:50 ツリーへ
Re: 自己相似図形その1 |
返事を書く |
A.Ohira 2005/08/26 10:43:50 | |
自己相似図形その2 ドラゴン曲線です。C曲線と基本的に1行しか変わりませんが。 DECLARE EXTERNAL SUB dcurve SET WINDOW -2.5,2.5,-2.5,2.5 INPUT PROMPT "order":order SET LINE COLOR order+1 CALL dcurve(order,-1,0,1,0) END EXTERNAL SUB dcurve(order,xf,yf,xt,yt) IF order=0 THEN PLOT LINES: xf,yf;xt,yt ELSE LET xm=(xf+xt)/2-(yt-yf)/2 LET ym=(yf+yt)/2+(xt-xf)/2 CALL dcurve(order-1,xf,yf,xm,ym) CALL dcurve(order-1,xt,yt,xm,ym) END IF END SUB |
└自己相似図形その3 A.Ohira 2005/08/26 10:45:25 ツリーへ
Re: 自己相似図形その2 |
返事を書く |
A.Ohira 2005/08/26 10:45:25 | |
自己相似図形その3 コッホ曲線です。 DECLARE EXTERNAL SUB koch SET WINDOW -1.2,1.2,-1.2,1.2 INPUT PROMPT "order":order SET LINE COLOR order+1 CALL koch(order,-1,0,1,0) END EXTERNAL SUB koch(order,xf,yf,xt,yt) IF order=0 THEN PLOT LINES: xf,yf;xt,yt ELSE LET x1=(xf*2+xt)/3 LET y1=(yf*2+yt)/3 LET x2=(xf+xt)/2-(yt-yf)/(2*SQR(3)) LET y2=(yf+yt)/2+(xt-xf)/(2*SQR(3)) LET x3=(xf+xt*2)/3 LET y3=(yf+yt*2)/3 CALL koch(order-1,xf,yf,x1,y1) CALL koch(order-1,x1,y1,x2,y2) CALL koch(order-1,x2,y2,x3,y3) CALL koch(order-1,x3,y3,xt,yt) END IF END SUB |
└自己相似形その4 A.Ohira 2006/01/10 15:09:33 ツリーへ
Re: 自己相似図形その3 |
返事を書く |
A.Ohira 2006/01/10 15:09:33 | |
自己相似形その4 ふと思い立って、同じ手法で今度はシェルピンスキーのギャスケットを描いてみました。 だからなんだ、と言われそうですが。 やはりorderに0から順に整数を入れて変化を楽しめます。 DECLARE EXTERNAL SUB sierpinski SET WINDOW -1.5,1.5,-.5,2.5 INPUT PROMPT "order":order SET LINE COLOR order+1 CALL sierpinski(order,-1,0,1,0) END EXTERNAL SUB sierpinski(order,xf,yf,xt,yt) IF order=0 THEN PLOT LINES: xf,yf;xt,yt ELSE LET x1=(3*xf+xt+SQR(3)*yf-SQR(3)*yt)/4 LET y1=(-SQR(3)*xf+SQR(3)*xt+3*yf+yt)/4 LET x2=(xf+3*xt+SQR(3)*yf-SQR(3)*yt)/4 LET y2=(-SQR(3)*xf+SQR(3)*xt+yf+3*yt)/4 CALL sierpinski(order-1,x1,y1,xf,yf) CALL sierpinski(order-1,x1,y1,x2,y2) CALL sierpinski(order-1,xt,yt,x2,y2) END IF END SUB |