分形之樹(Tree)

2021-09-06 18:41:27 字數 1110 閱讀 2116

似乎每乙個有關分形的教程都要講到分形樹,大概是因為樹是生活中最常見的分形實物吧。這一節將展示下如何一步一步地生長出一棵樹來。其實現演算法不難,就是在每一次生長迭代中,使線段生長出幾條新的線段來。

核心**:

static

void fractaltree(const vector3& vstart, const vector3&vend,

yreal trunk_angle, yreal branch_angle, yreal trunk_c, yreal branch_c,

vector3*pvertices)

軟體截圖:

樹的生成需要若干個引數:樹幹的偏角,樹枝的偏角,樹幹的生長長度,樹枝的生長長度,修改下引數可以得到如下形狀的樹:

資料結構之樹 Tree

對於大量的資料,使用鍊錶的線性訪問的時間消耗很大。於是提出了樹的概念。樹的應用十分廣泛,作業系統的檔案目錄就是典型的樹形結構。大部分對樹的操作的時間複雜度可以被乾到o logn 這裡介紹樹的孩子兄弟表示法,另外還有別的表示方法,有興趣可以自己查一下清華大學的教材。這裡的資料域使用int型別方便測試,...

Turtle繪製分形樹

import turtle def draw branch branch length if branch length 5 限定繪製的樹枝 包括樹幹 樹枝和樹葉 長度至少大於5 if branch length 20 如果長度小於20,即可判定是樹葉,繪製成綠色 turtle.color gree...

HDU 5044 Tree 樹鏈剖分

題意 給一棵樹,兩種操作 add1 給u v路徑上所有點加上值k,add2 給u v路徑上所有邊加上k,初始值都為0,問最後每個點和每條邊的值,輸出。解法 樹鏈剖分可做,剖出來如果直接用線段樹來區間更新的話會tle,所以要換一種姿勢,有一種樹鏈剖分的經典姿勢就是看做樹狀陣列一樣,每次加值的時候,比如...