tag:C,分形,L-System,GD庫
/* Create by zyzx
* Created 2008-07-15
* Modified 2008-07-16
*/
???????? 前些天,在博客園晃點(diǎn),自信心頗受打擊。。??纯磶啄昵霸谝粋€起跑線上的同學(xué),比如3D方面的,現(xiàn)在都牛起了;而咱因為各種原因,停滯不前,各個方面都是淺嘗則止。。。下定決心,好好看看書溫習(xí)溫習(xí)。。。
???????? 要看的書太多了哦,,,數(shù)字圖像相關(guān),圖像編解碼,基礎(chǔ)信息數(shù)學(xué),ARM體系等等啊。。。想靜下心來還真不容易。。。
???????? 于是,先從比較小的開源庫開始學(xué)起,比較好玩。。。GD庫是用C寫的小巧而且比較容易移植到嵌入式,呵呵,那就從它學(xué)起了。關(guān)于GD庫網(wǎng)上有一些教材,還有環(huán)境配置,http://www.libgd.org/Main_Page這里是它的主頁。。。
????????? 只繪制個點(diǎn)線啊,啥的沒啥意思。。想起了大學(xué)學(xué)分形學(xué)時,曾經(jīng)做過一些小的試驗,是基于L-System的,就拿來稍微修改了下。。
????????? 關(guān)于分形,這里有很強(qiáng)大的東西http://www.fractal.net.cn/。。
????????? 生成了如下的圖片。關(guān)于L-System原理可以去網(wǎng)上找找,這里只有代碼實現(xiàn)。
全部源代碼:
修改程序的如下部分:
float length= 10 ;??? ??? ??? ??? //樹枝段長度,length=LENGTH/2^N
#define CONSTN??? 20??? ??? ??? //SS的個數(shù)
char ss[CONSTN]={'f','f','-','[','-',???????? // 生長法則
???????????????????????????? 'f','+','f','+','f',
???????????????????????????? ']','+','[','+','f',
???????????????????????????? '-','f','-','f',']'};
//* 配色調(diào)整
r = abs( (x1 << 2 ) % 255 );
g = abs( (y1 << 2 ) % 255 );
b = abs( (x2 << 2 ) % 255 );
a = abs( (y2 << 2 ) % 127 - 70);
x2=int(x1-length*sin(jiaodu*thita*PAI/180.0));???????????? //上面的 -角度 控制生長方向
y2=int(y1-length*cos(jiaodu*thita*PAI/180.0));?????????? //現(xiàn)在是向上生長
可以得到如下圖:
修改程序的如下部分:
#define NN??? 9??? ??? ??? ??? //分形樹的階數(shù)N'= N+2;
float length= 12 ;??? ??? ??? ??? //樹枝段長度,length=LENGTH/2^N
float thita= 90;??? ??? ??? ?? ?? //偏轉(zhuǎn)角度
#define CONSTN??? 16??? ??? ??? //SS的個數(shù)
char ss[CONSTN]={'f','f','-','[','-',
??? ??? ??? ?????????????? 'f','+','f',
??? ??? ??? ?????????????? ']','+','[','+','f',
??? ??? ??? ?????????????? '-','f',']'};
可以得到如下圖: