PIZiadas图形

PIZiadas图形

我的世界是英寸.

递归分形: Sierpinski三角形 [JAVA]

triangulo_sierpinski我们已经看到了第一个节目叫 “DrawWorld” 我们推出了JAVA编程面向图形. 让我们改变这一基本程序生成一个基本的递归分形: 该 Sierpinski三角形.

(见 并产生一个递归的分形)

这是一个分形,是建立从一个三角形的两边都除以它的中点递归. 有了这些新的点, 和以往的, 新的三角形构造类似于前面的.

如果我们从一个三角形ABC,并获得其两侧的中点 (MNP), 递归将建立一个新的水平以下三个三角形: APN, PBM NMC.

Sierpinski三角形有 分形维豪斯多夫贝西科维奇的中 与分形维数一致 homotecia 等于: 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