ljq279318147 发表于 2009-1-1 13:55:55

漂亮!数学真的很美

0.1 发表于 2009-4-13 18:00:14

太美了,楼主辛苦了

wayne 发表于 2009-4-21 10:29:05

我用matlab画过一个分形的,虽不如前面那些精致,但也朴素好看

数学星空 发表于 2009-6-21 20:41:21

我也发几张漂亮的图片供大家欣赏

gxqcn 发表于 2009-6-22 07:36:01

啊,这是立体的分形图。
虽然分形本身的维数就是“分数”维的。

数学星空 发表于 2009-6-22 15:48:54

本帖最后由 数学星空 于 2009-6-22 15:53 编辑

[呵,我再几张极小曲面图供大家欣赏







wayne 发表于 2009-7-24 20:58:50

感觉上面,有一张图是openGL的作品,其他的都是Mathematica画出来的

mathabc 发表于 2009-9-21 18:59:27

怎么做出来的啊?很想知道,\(^o^)/~

suprman 发表于 2009-12-18 22:56:53

好东西,要分享。

KeyTo9_Fans 发表于 2009-12-19 14:33:33

本帖最后由 KeyTo9_Fans 于 2009-12-19 14:46 编辑

我的头像挺精致的吧?

其实做这样的图片只需写短短的几行代码就可以了:
#include<cstdio>

char hd={66,77,38,106,0,0,0,0,0,0,54,0,0,0,40,0,0,0,0,8,0,0,0,6,
0,0,1,0,24,0,0,0,0,0,-16,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int i,j,k,l,n,m,B,G,R;
double a,b,x,y,z,p,px,py;

int main()
{
        printf("宽度 高度 横坐标 纵坐标 放大倍数: ");
        scanf("%d%d%lf%lf%lf",&m,&n,&px,&py,&p);
        FILE *f=fopen("KeyTo9_Fans.bmp","wb");
        hd=m&255;
        hd=m>>8;
        hd=n&255;
        hd=n>>8;
        for(i=0;i<54;i++)
                fprintf(f,"%c",hd);
        for(i=0;i<n;i++)
        {
                if((i+1)*80/n>i*80/n)printf("|");
                for(j=0;j<m;j++)
                {
                        a=(j-m/2+0.5)/m/p+px;
                        b=(i-n/2+0.5)/m/p+py;
                        l=1;x=0;y=0;
                        for(k=-64;k<1024;k++)
                        {
                                z=x*x-y*y+a;
                                y=2*x*y+b;
                                x=z;
                                if(x*x+y*y>4)
                                {
                                        if(k<=0){B=255;G=191-k;R=255;}
                                        if(0<k&&k<64){B=255;G=191;R=255-k;}
                                        if(63<k&&k<128){B=255;G=127+k;R=255-k;}
                                        if(127<k&&k<256){B=383-k;G=255;R=127;}
                                        if(255<k&&k<384){B=383-k;G=255;R=k-128;}
                                        if(383<k&&k<640){B=0;G=639-k;R=255;}
                                        if(639<k&&k<768){B=k-639;G=0;R=895-k;}
                                        if(767<k&&k<896){B=127;G=0;R=895-k;}
                                        if(k>895){B=1023-k;G=0;R=0;}
                                        fprintf(f,"%c%c%c",B,G,R);
                                        l=0;break;
                                }
                        }
                        if(l)fprintf(f,"%c%c%c",0,0,0);
                }
        }
        return 0;
}
附件是该代码编译出来的可执行程序,即使没有编程工具也可以运行。

运行程序,按如下格式输入5个参数就可以生成一张图片:

896 672 -0.16143 1.03879 20000

这5个参数分别是图片宽度、图片高度、中心点横坐标、中心点纵坐标、放大倍数。

我的头像正是用这组参数生成的。

放大倍数理论上多大都没问题,但由于计算机进行实数运算的精确程度有限,所以最高放大倍数只能达到10万亿倍左右,再放大就变成巨大的方块了。

注意:图片宽度和图片高度必须是4的倍数,不然生成出来的图片好像会囧掉*_*

页: 1 2 3 [4] 5 6
查看完整版本: 精美几何美图