分形彩图的C或者matlab的源代码(至少3段)

分形彩图的C或者matlab的源代码(至少3段),第1张

#include<graphics.h>

#include<stdlib.h>

#include<math.h>

int main()

{

float m,dx,dy,x,y,x_n,y_n,Cx,Cy

int n,i,j,L=4

int gdriver=DETECT,gmode//gdriver和gmode分别表示图形驱动器和模式,gdriver=DETECT是在测试显示器硬件

initgraph(&gdriver,&gmode,"")//初始化图形模式

setbkcolor(1)//设置背景色为蓝色

dx=3.0/639

dy=2.2/479

for(i=0i<639i++)

{

Cx=-1.9+i*dx

for(j=0j<479j++)

{

Cy=-1.2+j*dy

x=y=0

for(n=0n<=1000n++)

{

x_n=x*x-y*y+Cx

y_n=2*x*y+Cy

m=x_n*x_n

if(m>L) break

x=x_n

y=y_n

}

putpixel(i,j,(int)(0.4*m)%16)//在指定位置画一像素(坐标(i,j),第三个计算式为画点的颜色)

}

}

getch()//任意键返回

closegraph()//关闭图形模式并返回文本模式

}

关于颜色的设置如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━

符号常数 数值 含义 字符或背景

——————————————————————————

BLACK 0 黑 两者均可

BLUE 1 兰 两者均可

GREEN 2 绿 两者均可

CYAN 3 青 两者均可

RED 4 红 两者均可

MAGENTA 5 洋红 两者均可

BROWN 6 棕 两者均可

LIGHTGRAY 7 淡灰 两者均可

DARKGRAY 8 深灰 只用于字符

LIGHTBLUE 9 淡兰 只用于字符

LIGHTGREEN 10 淡绿 只用于字符

LIGHTCYAN 11 淡青 只用于字符

LIGHTRED 12 淡红 只用于字符

LIGHTMAGENTA 13 淡洋红 只用于字符

YELLOW 14 黄 只用于字符

WHITE 15 白 只用于字符

BLINK 128 闪烁 只用于字符

#include<stdio.h> 

#include<graphics.h> 

#include<conio.h> 

#include<stdlib.h> 

#include<bios.h> 

#define NUM 10

#define Min(x,y) ((x)<(y)?(x):(y)) 

#define Max(x,y) ((x)>(y)?(x):(y))

void image_draw(char finename[13],int color)

int main(void)

{

    int color

    char filename[13]

    clrscr()

    window(20,8,60,12)

    textattr(WHITE|BLUE*16)

    clrscr()

    cprintf("\n ENTER filename:")

    cscanf("%s",filename)

    cprintf("\n Enter picture color(2~15):")

    cscanf("%d",&color)

    image_draw(filename,color)

    getch()

    exit(0)

}

void image_draw(char *filename,int color)

    int i, j, k, no_transformations, temp, xoffset, yoffset

    int px, py, p_cum[7], flag=0, mo=1, dr=VGA

    float a[NUM][7], f, p_sum=0, xscale, yscale

    float newx=0, XMin=0, XMax=0, YMax=0, YMin=0, x=0, y=0

    FILE *fin

    char ch='-1'

    if((fin=fopen(filename,"rb"))==NULL) 

    {

        cprintf("\n File '%s' not found.",filename)

        getch()

        exit(0)

    }

    fscanf(fin,"%d",&no_transformations) 

    for(i=0i<no_transformationsi++) 

    {

        for(j=0j<7j++)

        {

            fscanf(fin,"%f",&f)

            a[i][j]=f

        }

    }

    fclose(fin) 

    initgraph(&dr,&mo,"") 

    setbkcolor(1) 

    for(i=0i<no_transformationsi++) 

    {

        p_sum+=a[i][6]

        p_cum[i]=p_sum*32767

    }

    while (ch!=27)

    {

        for(i=0i<256i++)

        {

            temp=rand()

            for(k=0k<no_transformations-1k++)

            {

                if(temp<p_cum[k])

                break

            }

            newx=(a[k][0]*x+a[k][1]*y+a[k][4])

            y=(a[k][2]*x+a[k][3]*y+a[k][5])

            x=newx

            if((flag==0)&&(i>15))

            {

                XMax=Max(x,XMax)XMin=Min(x,XMin)

                YMax=Max(y,YMax)YMin=Min(y,YMin)

            }

            else

            {

                px=(x*xscale+xoffset)

                py=(y*yscale+yoffset)

                if((px>=0)&&(px<639)&&(py>=0)&&(py<349))

                    putpixel(px,349-py,color)

            }

        }

        if(flag==0) 

        {

            xscale=418/(XMax-XMin)

            yscale=Min(315/(YMax-YMin),xscale/1.38)

            if(yscale<xscale/1.38)

            xscale=1.38*yscale

            xoffset=320-(XMax+XMin)*xscale/2

            yoffset=175-(YMax+YMin)*yscale/2

            flag=1

        }

        if(bioskey(1)) ch=bioskey(0)

    }

    closegraph()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11983429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存