PIZiadas گرافیک

PIZiadas گرافیک

دنیای من شوید.

فرکتال بازگشتی: مثلث Sierpinski با [جاوا]

triangulo_sierpinskiما را دیده اند، یک برنامه برای اولین بار به نام “DrawWorld” معرفی گرافیک برنامه نویسی شی گرا جاوا. بیایید تغییر این برنامه اساسی برای تولید بازگشتی اساسی فراکتال: El مثلث Sierpinski با.

(دیدن و تولید یک فراکتال بازگشتی)

آن است که یک فراکتال است که به صورت بازگشتی از یک مثلث است که طرف نقطه میانی آن تقسیم ساخته شده است. با این نقاط جدید, و قبلی, مثلث جدید شبیه به قبلی ساخته.

اگر ما از یک مثلث ABC شروع و نقاط وسط اضلاع آن (MNP), سطح بعدی بازگشتی سه مثلث زیر ساخت: APN, PBM NMC.

مثلث Sierpinski با یک بعد فراکتال هاسدورف Besicovitch همزمان با بعد فرکتال homotecia برابر: 1,58496… (W)

اگر هر یک از این مثلث جدید را به سه تقسیم, ما خواهد شد گرفتن یک رقم جدید به صورت بازگشتی. ما را به سطح جدیدی از بازگشت ما می توانیم با استفاده از یک متغیر کنترل (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.;
  دو برابر xp32 xp12   DX = 2 * ارزش * sin60;
  دو برابر yp32=yp12 dy 2*dx*sin60;

  دو برابر 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

دوره جاوا