PIZiadas גרף

PIZiadas גרף

העולם שלי הוא פנימה.

פרקטלים רקורסיבית: משולש Sierpinski [JAVA]

triangulo_sierpinskiראינו תכנית ראשונה שנקראה “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);
  }

 }
}
JAVA

JAVA Curso