我們已經看到了第一個節目叫 “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); } } }
一定是 連接的 發表評論.