最简单的分形图像生成算法
生活随笔
收集整理的這篇文章主要介紹了
最简单的分形图像生成算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? 本文將提供一段完整地生成一幅分形圖像文件的C語言代碼,并且極為簡單.我相信這應該是最簡單的分形圖像生成算法.大部分的分形圖像代碼也都很短,但一有遞歸迭代就難以理解了.而這段代碼則很好懂,并且其生成的圖像會使人意想不到.
#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);// 其實更簡單粗爆的方式是//fwrite(&t, 1, 3, fp); }代碼運行完后,會生成一個PPM格式的圖像文件,為:
最簡單的分形圖形應該是康托(Cantor)三分集,只是不停地將線段一分為二.如下圖所示:
該算法生成的圖像很康托三分集有些相似.尤其是它的綠色通道:
將代碼修改下,其分形的效果會更明顯:
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); }
相關文章:
C語言中將0到1000的浮點數用強制指針類型轉換的方式生成一幅圖像
?
總結
以上是生活随笔為你收集整理的最简单的分形图像生成算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkin系列_调度jmeter实现分
- 下一篇: ceph伦理概念