पायथन में फ्रैक्टल पेड़

| | | | | | | | | | | | | | | | | | | |

परिचय एक फ्रैक्टल पेड़ एक पेड़ के रूप में जाना जाता है जिसे पुनरावर्ती सममित शाखाओं द्वारा बनाया जा सकता है।

लंबाई 1 का एक ट्रंक लंबाई r की दो शाखाओं में विभाजित होता है, जिनमें से प्रत्येक जो बैरल की दिशा के साथ एक कोण q बनाता है। इन दोनों शाखाओं को r * r लंबाई की दो शाखाओं में विभाजित किया गया है, जिनमें से प्रत्येक अपनी मूल शाखा की दिशा के साथ एक कोण q बनाती है। इस तरह से शाखाओं की अनंत संख्या को जारी रखते हुए, एक पेड़ अपने सीमित बिंदुओं के साथ शाखाओं का एक संग्रह है, जिसे शाखा युक्तियाँ कहा जाता है।

बस सिद्धांत, अब आइए पायथन में कार्यान्वयन का प्रयास करें। इसके लिए हमें GUI या GUI के लिए दो Python लाइब्रेरी Pygame और math, की आवश्यकता है, जो Python में एक अंतर्निहित लाइब्रेरी है और इसका उपयोग गणित में सुधार के लिए किया जाएगा।

पायगेम इंस्टॉल करने के लिए

पाइप इंस्टाल पाइगेम 

तो कैसे आगे बढ़ें, यह अत्यधिक अनुशंसा की जाती है कि आप पाइग्मी और फ्रैक्टल्स के बारे में थोड़ा जान लें।

पहले ट्रंक बनाएं, और फिर शाखा का आकार 0.9 * (तने की लंबाई) मानकर प्रत्येक ट्रंक के लिए शाखाएं बनाना शुरू करें और फिर प्रक्रिया को दोहराते हुए शाखाओं को फिर से स्टेम के रूप में मानें।

<कोड वर्ग = "टिप्पणियां"> # अजगर पुस्तकालयों का आयात

<कोड वर्ग = "कीवर्ड"> आयात <कोड वर्ग = "सादा" > pygame, गणित


# सभी आयातित Pygame मॉड्यूल को इनिशियलाइज़ करें
pygame. init ()


# एक नया सरफेस और विंडो बनाएं।

<कोड वर्ग = "सादा"> सतह_ऊंचाई, सतह_चौड़ाई <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "मान"> 800 कोड> <कोड वर्ग = "सादा">, <कोड वर्ग =" मान "> 600 <कोड वर्ग = "टिप्पणियां"> # सतह चर

main_surface = pygame.display.set_mode ((surface_height, Surface_width))


# Window title

pygame.display.set_caption ( "Fractal_Tree_pythonengineering" )


<कोड वर्ग = "कीवर्ड"> def <कोड वर्ग = "सादा"> draw_tree (आदेश, थीटा, एसजेड, स्थिति एन, शीर्षक, रंग <कोड वर्ग = "कीवर्ड"> = < / कोड> <कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 0 , <कोड क्लास = "वैल्यू"> 0 <कोड क्लास = "प्लेन">), डेप्थ <कोड क्लास = "कीवर्ड"> = < /कोड> <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">):


<पी> <कोड वर्ग = "टिप्पणियां"> रिश्तेदार पूरे पेड़ के तने का अनुपात

ट्रंक_ratio = <कोड वर्ग = "मान"> 0.29


<कोड वर्ग = "टिप्पणियां"> # बैरल लंबाई

<कोड वर्ग = "सादा"> ट्रंक <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> sz <कोड वर्ग = "कीवर्ड"> * <कोड वर्ग = "सादा"> ट्रंक_राती ओ

<पी> कोड वर्ग = "सादा"> डेल्टा_एक्स <कोड वर्ग = "कीवर्ड"> = कोड> <कोड वर्ग = "सादा"> ट्रंक <कोड वर्ग = "कीवर्ड"> * <कोड वर्ग = "सादा"> math.cos (शीर्षक)

<कोड वर्ग = "सादा"> delta_y <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> ट्रंक <कोड वर्ग = "कीवर्ड"> * <कोड वर्ग = "सादा"> math.sin (शीर्षक)

कोड वर्ग = "अपरिभाषित रिक्त स्थान"> <कोड वर्ग = "सादा"> (यू, वी) <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> posn

newpos = (u <कोड वर्ग = "कीवर्ड"> + <कोड वर्ग = "सादा"> डेल्टा_एक्स, वी <कोड वर्ग = "कीवर्ड"> + <कोड वर्ग = "सादा" > delta_y)

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


<कोड वर्ग = "कीवर्ड"> यदि <कोड वर्ग = "सादा"> आदेश > 0 : # subtrees की एक और लेयर बनाएं p>

# अगली छह पंक्तियाँ - साधारण हैक

# रिकर्सन के दो मुख्य भाग अलग हैं

# रंग। रंगों को दूसरे में बदलने के लिए यहां फिडल करें

# गहराई, या जब गहराई सम या विषम हो, आदि।

<कोड वर्ग = "कीवर्ड"> यदि <कोड वर्ग = "सादा"> गहराई <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "कीवर्ड"> = < /कोड> <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">:

<कोड वर्ग = "अपरिभाषित रिक्त स्थान"> < कोड वर्ग = "सादा"> रंग 1 <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 255 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 0 < /कोड> <कोड वर्ग = "सादा">)

कोड वर्ग = "सादा"> रंग 2 <कोड वर्ग = "कीवर्ड"> = < कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 255 <कोड वर्ग = "सादा" ">)

कोड वर्ग = "कीवर्ड"> अन्य <कोड वर्ग = "सादा">:

कोड वर्ग = "सादा"> रंग1 <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "सादा"> रंग

<कोड वर्ग = "सादा" > color2 = color


# दो सबट्री बनाने के लिए पुनरावर्ती कॉल करें

newsz = एसजेड <कोड वर्ग = "कीवर्ड"> * <कोड वर्ग = "सादा"> ( <कोड वर्ग = "मान"> 1 <कोड वर्ग = "कीवर्ड"> - <कोड वर्ग = "सादा"> ट्रंक_अनुपात)

<कोड वर्ग = "सादा"> ड्रा_ट्री (आदेश <कोड वर्ग = "कीवर्ड"> - <कोड क्लास = "वैल्यू"> 1 <कोड क्लास = "प्लेन">, थीटा, न्यूज, न्यूपॉज, हेडिंग <कोड क्लास = "कीवर्ड" > - <कोड वर्ग = "सादा"> थीटा, रंग1, गहराई <कोड वर्ग = "कीवर्ड"> + 1 )

draw_tree (आदेश <कोड क्लास = "कीवर्ड"> - <कोड क्लास = "वैल्यू"> 1 <कोड क्लास = "प्लेन">, थीटा, न्यूज, न्यूपॉस, हेडिंग <कोड क्लास = "कीवर्ड"> + <कोड क्लास = "प्लेन"> थीटा, कलर 2, डेप्थ <कोड क्लास = "कीवर्ड"> + <कोड क्लास = "वैल्यू"> 1 <कोड वर्ग = "सादा">)



कोड वर्ग = "कीवर्ड"> def <कोड वर्ग = "सादा" > मुख्य ():

<कोड वर्ग = "सादा"> थीटा <कोड वर्ग = "कीवर्ड"> = <कोड वर्ग = "मान"> 0

<कोड वर्ग = "अपरिभाषित स्थान">

<कोड वर्ग = "कीवर्ड"> जबकि <कोड वर्ग = "color1"> सच :


# कोने को अपडेट करें

<कोड वर्ग = "सादा"> थीटा <कोड वर्ग = "कीवर्ड"> + <कोड वर्ग s = "कीवर्ड"> = <कोड वर्ग = "मान"> 0.01

<कोड वर्ग = "अपरिभाषित रिक्त स्थान">

# यह छोटा सा हिस्सा हमें चीजों को आकर्षित करने देता है

# स्क्रीन पर सब कुछ

main_surface.fill (( 255 , <कोड वर्ग = "मान"> 255 <कोड वर्ग = "सादा">, <कोड वर्ग = "मान"> 0 <कोड वर्ग = "सादा">))

<कोड वर्ग = "अपरिभाषित रिक्त स्थान"> <कोड वर्ग = "सादा"> draw_tree ( 9 <कोड वर्ग = "सादा">, थीटा, सतह_ऊंचाई <कोड वर्ग = "कीवर्ड"> * <कोड वर्ग = "मान"> 0.9 < कोड वर्ग = "सादा">, (सतह_चौड़ाई <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग =" कीवर्ड "> / <कोड वर्ग = "मान"> 2 < /कोड> <कोड वर्ग = "सादा">, सतह_चौड़ाई <कोड क्लास = "कीवर्ड"> - <कोड क्लास = "वैल्यू"> 50 <कोड क्लास = "प्लेन">), <कोड क्लास = "कीवर्ड"> - < /कोड> <कोड वर्ग = "सादा"> गणित.पीआई <कोड वर्ग = "कीवर्ड"> / <कोड वर्ग = "मान"> 2 <कोड वर्ग = "सादा" "> )

pygame.display.flip ()


# मुख्य फ़ंक्शन को कॉल करना
main ()
pygame.quit ()

बाहर निकलें:

% MINIF YHTMLc707a572199fb7b4b8a82374bf37b87213%   <स्रोत प्रकार = "वीडियो / mp4 "src =" https://media.python.engineering/wp-content/uploads/2017-12-18-at-18-40-42.mp4?_=1 ">