该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
源程序如下:
/*Program 1 (IFS=PROGRAM TO GENERATE ITERATED FUNCTION SYSTEM)*/
#include
#include
#include
#include
#define NUM 10
#define Min(x,y) ((x)
#define Max(x,y) ((x)>(y)?(x):(y))
void image_draw(char finename[13],int color);
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,px,py,p_cum[7],flag=0,mo=1,dr=VGA;
float a[NUM][7],f,p_sum=0,xscale,yscale,newx=0,XMin=0,XMax=0,YMax=0,YMin=0,x=0,y=0;
FILE *fin;
if((fin=fopen(filename,"rb"))==NULL)
{
cprintf("\n File '%s' not found.",filename);
exit(0);
}
fscanf(fin,"%d",&no_transformations);
for(i=0;i
{
for(j=0;j<7;j++)
{
fscanf(fin,"%f",&f);
a[i][j]=f;
}
}
fclose(fin);
initgraph(&dr,&mo,"f:\\turboc2");
setbkcolor(1);
for(i=0;i
{
p_sum+=a[i][6];
p_cum[i]=p_sum*32767;
}
while (kbhit())
{
for(i=0;i<256;i++)
{
temp=rand();
for(k=0;k
{
if(temp
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*yscale;
xoffset=320-(XMax+XMin)*xscale/2;
yoffset=175-(YMax+YMin)*yscale/2;
flag=1;
}
}
getch();
closegraph();
}