NetaTaneMenu? >>>> 羊歯

羊歯


左図が下のソースで描いたもの。右図は正式なもの。

shida.JPG

ソースがこれです。どこをどう手直しすれば右図に なるのでしょう?

DATA 0.836,0.044,-0.044,0.836,0,0.619
READ a1,b1,c1,d1,e1,f1 
DATA -0.144,0.302,0.302,0.141,0,0.127
READ a2,b2,c2,d2,e2,f2
DATA 0.141,-0.302,0.302,0.141,0,0.619
READ a3,b3,c3,d3,e3,f3
DATA 0,0,0,0.175,0,0
READ a4,b4,c4,d4,e4,f4
SET POINT STYLE 4
LET  px = 1
LET  py = 1
!描画領域の設定
SET WINDOW -1,1.1,-1,4
PLOT POINTS: px,py
FOR i=0 TO 100000
  LET  k = RND
  IF k=<0.7 THEN
     LET px = a1*px+b1*py+e1
     LET py = c1*px+d1*py+f1
  ELSEIF k=<0.8 THEN
     LET px = a2*px+b2*py+e2
LET py = c2*px+d2*py+f2
  ELSEIF k=<0.9 THEN
     LET px = a3*px+b3*py+e3
     LET py = c3*px+d3*py+f3
  ELSE
     LET px = a4*px+b4*py+e4
     LET py = c4*px+d4*py+f4
  END IF 
  SET POINT STYLE 1
  SET POINT COLOR 3
  PLOT POINTS: px, py 
NEXT i
END

その前にまずはソースの簡単な説明を。お願いします。 ではあまりにもぶっきらぼうですよね。 そこで,次のようなL-systemなんでしょうか?

http://melusine.eu.org/syracuse/metapost/galeries/lsystems1/

早とちりか,こちらですね,spleen fern。iterated function system?(反復関数系?)

http://www.zeuscat.com/andrew/chaos/spleenwort.fern.html

例えば

!描画領域の設定
SET WINDOW -1,1.1,-1,4

の部分を

SET WINDOW -2,3,-1,4

のように縦横比を1:1にするだけで,プロポーションはご要望通りになります。

DATA -0.144,0.302,0.302,0.141,0,0.127
READ a2,b2,c2,d2,e2,f2

の部分を

DATA -0.144,0.302,0.302,0.141,0,0.5
READ a2,b2,c2,d2,e2,f2

のように最後の数値を変えれば,枝の出る場所が望み通りに。

誰が元のプログラムを描いたのか知りませんが,

DATA 0.836,0.044,-0.044,0.836,0,0.619
READ a1,b1,c1,d1,e1,f1 
DATA -0.144,0.302,0.302,0.141,0,0.127
READ a2,b2,c2,d2,e2,f2
DATA 0.141,-0.302,0.302,0.141,0,0.619
READ a3,b3,c3,d3,e3,f3
DATA 0,0,0,0.175,0,0
READ a4,b4,c4,d4,e4,f4

というデータ部が冗長です。データの自由度が不明。 例えば,

c*=-b*, d*=a*,

なのでしょうか?三系列ある意味は?


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS