PIZiadas圖形

PIZiadas圖形

我的世界是英寸.

遞歸分形: Sierpinski三角形 [JAVA]

triangulo_sierpinski我們已經看到了第一個節目叫 “DrawWorld” 我們推出了JAVA編程面向圖形. 讓我們改變這一基本程序生成一個基本的遞歸分形: 該 Sierpinski三角形.

(見 並產生一個遞歸的分形)

這是一個分形,是建立從一個三角形的兩邊都除以它的中點遞歸. 有了這些新的點, 和以往的, 新的三角形構造類似於前面的.

如果我們從一個三角形ABC,並獲得其兩側的中點 (MNP), 遞歸將建立一個新的水平以下三個三角形: APN, PBM NMC.

El triángulo de Sierpinski tiene una 分形維豪斯多夫貝西科維奇的中 coincidente con su dimensión fractal de homotecia IGUAL一個: 1,58496… ()

如果這些新的三角形細分為三個, 我們將得到一個新的遞歸圖. 我們將有一個新的水平,我們可以控制的遞歸使用一個變量 (nivel_de_recursividad) 我們的計劃.

我們已經定義了一個函數 “paintRecursivo” (我叫的方法 “油漆”) 在這一點上,我們的三角形基地, 遞歸. 該函數計算頂點的三角形, 描繪圖,並調用本身三倍, 為每個子三角形.

在每次調用該函數的遞歸的價值降低, 這樣,當它是零完成賬面遞歸.

進口 java.applet.Applet的;
進口 java.awt.Graphics的;
/**
* @作者何塞·胡安·阿利亞加
*/
公眾  MainApp 擴展 Applet的 {
 一倍 XP1 = 300;
 一倍 YP1 = 300;
 一倍 XP2 = 10;
 一倍 YP2 = 300;
 一倍 sin60 =數學。黃大仙(3.14/3.);
 詮釋 nivel_de_recursividad = 6;

 公眾 MainApp() { }

 公眾 靜止 無效 (串[] 參數) { }

 公共無效 油漆(圖形克){
   paintRecursivo(克,nivel_de_recursividad,XP1,YP1,XP2,YP2);
 }

 私人無效 paintRecursivo(圖形克, 詮釋 我, 一倍 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.;
  一倍 鏑=(yp12   YP32)/2.;

  如果(我<= 0){
   g.drawLine((詮釋)XP12,(詮釋)yp12,(詮釋)XP22,(詮釋)yp22);
   g.drawLine((詮釋)XP22,(詮釋)yp22,(詮釋)XP32,(詮釋)YP32);
   g.drawLine((詮釋)XP32,(詮釋)YP32,(詮釋)XP12,(詮釋)yp12);
  }
  其他{
   paintRecursivo(克,I-1,XP12,yp12,DX1,DY1);
   paintRecursivo(克,I-1,DX1,DY1,XP22,yp22);
   paintRecursivo(克,的i-1,DX3,DY3,DX2,DY2);
  }

 }
}
JAVA

當然JAVA