分形《二》分形的遞迴演算法

2021-07-06 03:00:31 字數 1411 閱讀 7641

遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。1)核心的子問題演算法。2)遞迴呼叫。3)給定遞迴出口。

遞迴設計使程式簡潔,也體現了設計思路在整體-區域性上結合的嚴謹,但仍不提倡程式設計使用,因為其執行效率低且占用棧的空間問題突出。作為解決思路的一種方式還是具有魅力。

分形的自我相似,自我複製和自我巢狀用遞迴演算法來實現是合適的,事實上經典分形圖的繪製大多數可採用遞迴演算法。

一.canto三分集。

**渲染框架上有方便繪製幾何圖形的shaperenderer類,它和batch畫筆都封裝了呼叫底層渲染的介面。

注:**標籤的段落無關分形演算法,是渲染框架上的一些筆記。

三分集遞迴演算法:

private void canto(int ax,int ay,int bx,int by)

else

dx=(float) (cx+math.cos(alfa+pi/3)*l);

dy=(float) (cy+math.sin(alfa+pi/3)*l);

koch(ax,ay,cx,cy,depth);

koch(ex,ey,bx,by,depth);

koch(cx, cy, dx, dy,depth);

koch(dx, dy, ex, ey,depth);

} }

最終效果:

比起三分集,妖魔曲線複雜一些,涉及到角度和方向上的計算,如果你把每條線段看成是有方向的向量,這些計算會更容易接受。演算法中的alpha是絕對角度,兩條線段的相對夾角不變,為60度但絕對角度是變化的,絕對角度的計算需要方向上的修正。見下圖可粗略體會下(圖作得粗糙別吐槽)

如果注釋修正絕對角度的**,結果會是這樣子

妖魔曲線基本的演算法就是這樣。它的基本圖元是一條直線,在此基礎上可以修改其基本圖元為乙個封閉的幾何圖形來模擬雪花。

待續...

分形的遞迴輸出

分形,具有以非整數維形式充填空間的形態特徵。通常被定義為 乙個粗糙或零碎的幾何形狀,可以分成數個部分,且每一部分都 至少近似地 是整體縮小後的形狀 即具有自相似的性質。乙個盒狀分形定義如下 度為1的盒分形為 x度為2的盒分形為 x x xx x依次類推,如果b n 1 表示n 1度的盒分形,則n度的...

分形的遞迴輸出

分形,具有以非整數維形式充填空間的形態特徵。通常被定義為 乙個粗糙或零碎的幾何形狀,可以分成數個部分,且每一部分都 至少近似地 是整體縮小後的形狀 即具有自相似的性質。乙個盒狀分形定義如下 度為1的盒分形為 x度為2的盒分形為 x xx x x依次類推,如果b n 1 表示n 1度的盒分形,則n度的...

遞迴 PTA分形的遞迴輸出

分形,具有以非整數維形式充填空間的形態特徵。通常被定義為 乙個粗糙或零碎的幾何形狀,可以分成數個部分,且每一部分都 至少近似地 是整體縮小後的形狀 即具有自相似的性質。乙個盒狀分形定義如下 度為1的盒分形為 x度為2的盒分形為 x xx x x依次類推,如果b n 1 表示n 1度的盒分形,則n度的...