Python`da fraktal ağaçlar

| | | | | |

Giriş Fraktal ağaç, özyinelemeli simetrik dallanmayla oluşturulabilen bir ağaç olarak bilinir.

1 uzunluğundaki bir gövde, her biri r uzunluğunda iki dala ayrılır. bu, namlunun yönü ile bir q açısı oluşturur. Bu dalların her ikisi de, her biri kendi ana dalının yönü ile bir q açısı yapan, r * r uzunluğunda iki dala bölünmüştür. Bu şekilde sonsuz sayıda dala devam eden bir ağaç, dal uçları adı verilen sınır noktalarıyla birlikte bir dallar topluluğudur.

Yeterli teori, şimdi Python`daki uygulamayı deneyelim. Bunun için GUI veya GUI için Pygame ve Python`da yerleşik bir kitaplık olan ve matematik ince ayarları için kullanılacak olan matematik adlı iki Python kitaplığına ihtiyacımız var.

Pygame`i kurmak için

pip pygame`i kurun 

Nasıl ilerleyeceğinizi, pygmies ve fraktallar hakkında biraz bilgi sahibi olmanız şiddetle tavsiye edilir.

Önce gövde oluşturun, ardından dal boyutunun 0,9 * (gövde uzunluğu) olduğunu varsayarak her bir gövde için dal oluşturmaya başlayın ve ardından işlemi tekrarlayarak dalları yeniden gövde olarak ele alın.

# Python kitaplıklarını içe aktarma

içe aktarma pygame, matematik


# Tüm içe aktarılan Pygame modüllerini başlat
pygame. init ()


# Yeni bir yüzey ve pencere oluşturun.

yüzey_yüksekliği, yüzey_genişliği = 800 , 600 # Yüzey Değişkenleri

main_surface = pygame.display.set_mode ((surface_height, yüzey_width))


# Pencere başlığı

pygame.display.set_caption ( "Fractal_Tree_pythoneengineering" )


def draw_tree (sıra, teta, sz, konum n, başlık, renk = ( 0 , 0 , 0 ), derinlik = 0 ):


Göreli gövdenin tüm ağaca oranı

trunk_ratio = 0.29


# Namlu uzunluğu

ana hat = sz * trunk_rati o

delta_x = ana hat * math.cos (başlık)

delta_y = ana hat * math.sin (başlık)

< kod sınıfı = "tanımsız boşluklar" > (u, v) = posn

newpos = (u + delta_x, v + delta_y)

pygame.draw.line (main_surface, color , posn, newpos)


if order > 0 : # Başka bir alt ağaç katmanı çizin


# Sonraki altı satır - basit hack

# özyinelemenin iki ana yarısı farklıdır

# renk. Renkleri başka bir

# derinlikle veya derinlik çift veya tek olduğunda vb. değiştirmek için burayı kullanın.

if derinlik = = 0 :

color1 = ( 255 , 0 , 0 )

color2 = < kod sınıfı = "düz"> ( 0 , 0 , 255 )

başka :

color1 = renk

color2 = color


# iki alt ağaç çizmek için özyinelemeli çağrılar yapın

newsz = sz * ( 1 - trunk_ratio)

draw_tree (sipariş - 1 , theta, newsz, newpos, başlık - teta, renk1, derinlik + 1 )

draw_tree (sipariş - 1 , theta, newsz, newpos, başlık + teta, renk2, derinlik + 1 )



def ana ():

teta = 0

while Doğru :


# Güncelleme köşesi

theta + = 0,01

# Bu küçük kısım bir şeyler çizmemizi sağlar

# ekrandaki her şey

main_surface.fill (( 255 , 255 , 0 ))

draw_tree ( 9 , teta, yüzey_yüksekliği * 0.9 , (surface_width / / 2 , yüzey_genişliği - 50 ), - matematik.pi / 2 )

pygame.display.flip ()


# Ana işlevi çağırma
main()
pygame.quit ()

Çıkış:

% MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%      

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

News


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