はじめにフラクタルツリーは、再帰的に対称な分岐によって作成できるツリーとして知られています。
長さ1のトランクは、それぞれ長さrの2つのブランチに分割されます。これは、バレルの方向と角度qを形成します。これらのブランチは両方とも、長さr * rの2つのブランチに分割され、それぞれが親ブランチの方向と角度qをなします。このように無限の数のブランチを続けると、ツリーはブランチの集まりであり、ブランチのヒントと呼ばれる限界点があります。
理論的には、Pythonでの実装を試してみましょう。このためには、GUIまたはGUI用の2つのPythonライブラリ Pygame と、Pythonの組み込みライブラリであり、数学の調整に使用される mathが必要です。
Pygameをインストールするには
pip install pygame
次に進む方法については、pygmiesとフラクタルについて少し知っておくことを強くお勧めします。
最初にトランクを作成し、次に各トランクのブランチの作成を開始します。ブランチのサイズを0.9 *(ステムの長さ)と想定してから、ブランチを再びステムとして扱い、プロセスを繰り返します。
#Pythonライブラリのインポート
import
pygame、math
#インポートされたすべてのPygameモジュールのキューを初期化します
pygame。 init()
#新しいサーフェスとウィンドウを作成します。
surface_height、surface_width
=
800
、
600
#サーフェス変数
main_surface
=
pygame.display.set_mode((surface_height、surface_width))
#ウィンドウタイトル
pygame.display.set_caption(
" Fractal_Tree_pythonengineering "
)
def
draw_tree(order、theta、sz、pos n、heading、color
=
(
0
、
0
0
)、depth
=
0
):
相対ツリー全体に対するトランクの比率
trunk_ratio
=
0.29
#バレルの長さ
トランク
=
sz
*
trunk_rati o
delta_x
=
トランク
*
math.cos(見出し)
delta_y
=
トランク
*
math.sin(見出し)
(u、v)
=
posn
newpos
=
(u
+
delta_x、v
+
delta_y)
pygame.draw.line(main_surface、color、posn、newpos)
if
order>
0
:
#サブツリーの別のレイヤーを描画します
#次の6行-単純なハック
#再帰の2つの主要な半分異なる
#色。ここをいじって色を別の色に変更します
#深さ、または深さが偶数または奇数の場合など。
if
depth
=
=
0
:
color1
=
(
255
、
0
、
0
)
color2
=
(
0
、
0
、
255
)
else
:
color1
=
color
color2
=
color
#2つのサブツリーを描画するために再帰呼び出しを行う
newsz
=
sz
<コードクラス="キーワード">*<コードクラス="プレーン">(<コードクラス="値">1<コードクラス= "keyword">- trunk_ratio)
draw_tree(order
-
1
、theta、newsz、newpos、heading
-
theta、color1、depth
+
1
)
draw_tree(order
-
1
、theta、newsz、newpos、heading
+
theta、color2、depth
+
1
)
def
main():
theta
=
0
while
True
:
#コーナーを更新
theta
+
=
0.01
#この小さな部分では、物を描くことができます
#画面上のすべて
main_surface.fill((
255
、
255
、
0
))
draw_tree(
9
、theta、surface_height
*
0.9
、(surface_width
/
/
2
、surface_width
-
50
)、
-
math.pi
/
2
)
pygame.display.flip()
#メイン関数を呼び出す
main()
pygame.quit()
終了:
<! -[if lt IE 9]>%MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%<! [Endif]->>