ראינו תכנית ראשונה שנקראה “DrawWorld” מציג לנו את גרפיקת תכנות מונחה JAVA. בואו לשנות את התכנית בסיסית זו כדי ליצור פרקטל רקורסיבית בסיסי: El משולש Sierpinski.
(לראות כפרקטל רקורסיבית נוצר)
זה פרקטל כי הוא בנוי באופן רקורסיבי ממשולש שצדדים חלוקים על ידי נקודת האמצע שלה. עם נקודות אלה חדשים, והאמור לעיל, משולשים חדשים בנויים דומים לקודמת.
אם נתחיל ממשולש ABC ואנחנו מקבלים את אמצעי צלעותיה (MNP), הרמה הבאה של רקורסיה מתקבלת על ידי בניית שלושה משולשים: APN, PBM y NMC.
יש משולש Sierpinski ממד הפרקטלי של האוסדורף-Besicovitch ביחד עם הממד פרקטלית homotecia igual: 1,58496… (בתוך)
אם כל אחד מהמשולשים החדשים אלה מחולק לשלושה, אנו מקבלים דמות חדשה באופן רקורסיבי. תהיה לנו רמה חדשה של רקורסיה אנחנו יכולים לשלוט באמצעות משתנים (nivel_de_recursividad) התכנית שלנו.
הגדיר פונקציה “paintRecursivo” (זה נקרא מהשיטה “לצבוע”) שבבסיס משולש שנקודה, ורקורסיה. הפונקציה מחשב את המשולש, ציור הדמות והשיחות עצמו שלוש פעמים, אחד עבור כל אחד מsubtriangles.
כל ערך רקורסיה קריאה לפונקציה מצטמצם, כך שכאשר הוא אפס רקורסיה מסיימת ביצוע.
יבוא java.applet.Applet; יבוא java.awt.Graphics; /** * @ מחבר חוסה חואן Aliaga */ ציבורי מעמד MainApp מרחיב יישומון { כפול XP1 = 300; כפול yp1 = 300; כפול XP2 = 10; כפול yp2 = 300; כפול sin60 = Math.sin(3.14/3.); int nivel_de_recursividad = 6; ציבורי MainApp() { } ציבורי סטטי חלל ראשי(חוט[] ארגומנטים) { } חלל ציבורי לצבוע(גרפיקה גרם){ paintRecursivo(סול,nivel_de_recursividad,XP1, yp1, XP2, yp2); } חלל פרטי paintRecursivo(גרפיקה גרם, int אני, כפול xp12, כפול yp12, כפול xp22, כפול yp22 ) { כפול DX =(xp22-xp12)/2.; כפול שני =(yp22-yp12)/2.; כפול xp12 xp32 = DX-2 sin60 * dy *; כפול yp32 yp12 = 2 dy sin60 * DX *; כפול = DX1(xp22 xp12)/2.; כפול dy1 =(yp22 yp12)/2.; כפול = DX2(xp32 xp22)/2.; כפול DY2 =(yp32 yp22)/2.; כפול = DX3(xp12 xp32)/2.; כפול DY3 =(yp12 yp32)/2.; אם(אני<= 0){ g.drawLine((int)xp12,(int)yp12,(int)xp22,(int)yp22); g.drawLine((int)xp22,(int)yp22,(int)xp32,(int)yp32); g.drawLine((int)xp32,(int)yp32,(int)xp12,(int)yp12); } אחר{ paintRecursivo(סול,i-1, xp12, yp12, DX1, dy1); paintRecursivo(סול,i-1, DX1, dy1, xp22, yp22); paintRecursivo(סול,i-1, DX3, dy3, DX2, DY2); } } }
חייב להיות מְחוּבָּר לפרסם תגובה.