最简单的分形图像生成算法
生活随笔
收集整理的這篇文章主要介紹了
最简单的分形图像生成算法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? 本文將提供一段完整地生成一幅分形圖像文件的C語(yǔ)言代碼,并且極為簡(jiǎn)單.我相信這應(yīng)該是最簡(jiǎn)單的分形圖像生成算法.大部分的分形圖像代碼也都很短,但一有遞歸迭代就難以理解了.而這段代碼則很好懂,并且其生成的圖像會(huì)使人意想不到.
#include <iostream> #include <cmath> #include <cstdlib>#define DIM 1000void pixel_write(int,int); FILE *fp;int main() {fp = fopen("image.ppm","wb");if (!fp){return -1;}fprintf(fp, "P6\n%d %d\n255\n", DIM, DIM);for(int j=0;j<DIM;j++){for(int i=0;i<DIM;i++){pixel_write(i,j);}}fclose(fp);return 0; }void pixel_write(int i, int j) {static unsigned char color[3];float t = j + i*0.001f;memcpy(color, &t, 3);fwrite(color, 1, 3, fp);// 其實(shí)更簡(jiǎn)單粗爆的方式是//fwrite(&t, 1, 3, fp); }代碼運(yùn)行完后,會(huì)生成一個(gè)PPM格式的圖像文件,為:
最簡(jiǎn)單的分形圖形應(yīng)該是康托(Cantor)三分集,只是不停地將線段一分為二.如下圖所示:
該算法生成的圖像很康托三分集有些相似.尤其是它的綠色通道:
將代碼修改下,其分形的效果會(huì)更明顯:
void pixel_write(int i, int j) {static unsigned char color[3];float t = j/4 + i*0.001f;memcpy(color, &t, 3);fwrite(color, 1, 3, fp); }
相關(guān)文章:
C語(yǔ)言中將0到1000的浮點(diǎn)數(shù)用強(qiáng)制指針類(lèi)型轉(zhuǎn)換的方式生成一幅圖像
?
總結(jié)
以上是生活随笔為你收集整理的最简单的分形图像生成算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jenkin系列_调度jmeter实现分
- 下一篇: ceph伦理概念