Pythonのフラクタルツリー

| | | | | |

はじめにフラクタルツリーは、再帰的に対称な分岐によって作成できるツリーとして知られています。

長さ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]->     
>

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method