📄 卷积.txt
字号:
#include "graphics.h"
#include "conio.h"
#include "math.h"
#include "stdio.h"
#define E 100
#define N 640
void jianto(int x,int y,int drection)
{
if(drection==0)
{
line(x,y,x-5,y-5);
line(x,y,x-5,y+5);
}
else
{
line(x,y,x-5,y+5);
line(x,y,x+5,y+5);
}
}
void backg2()
{
bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);
line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
jianto(getmaxx(),getmaxy()/2,0);
line(getmaxx()/2-50,getmaxy()/2,getmaxx()/2-50,getmaxy()/4);
jianto(getmaxx()/2-50,getmaxy()/4,1);
line(0,getmaxy()/4,getmaxx(),getmaxy()/4);
jianto(getmaxx(),getmaxy()/4,0);
}
void sjx(int x1,int y1,int x2,int y2,int x3,int y3)
{
int points[8];
points[0]=x1;
points[1]=y1;
points[2]=x2;
points[3]=y2;
points[4]=x3;
points[5]=y3;
points[6]=x1;
points[7]=y1;
drawpoly(4,points);
}
main()
{
int i,j;
int k,l,l0;
int m,n;
int point;
int x[N];
double y1[N];
double y2[N];
double z[N];
double y12[N];
int ly1=150,ly2=200;
int gmode;
int gdriver=DETECT;
initgraph(&gdriver,&gmode,"\\tc\\bin");
setfillstyle(1,1);
bar(0,0,getmaxx(),getmaxy()/4);
setfillstyle(1,4);
bar(0,getmaxy()/2,getmaxx(),getmaxy());
setfillstyle(1,0);
bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);
setcolor(2);
line(0,getmaxy()/4,getmaxx(),getmaxy()/4);
jianto(getmaxx(),getmaxy()/4,0);
line(0,getmaxy()/2,getmaxx(),getmaxy()/2);
jianto(getmaxx(),getmaxy()/2,0);
line(0,getmaxy()*3/4,getmaxx(),getmaxy()*3/4);
jianto(getmaxx(),getmaxy()*3/4,0);
line(getmaxx()/2-50,0,getmaxx()/2-50,getmaxy());
jianto(getmaxx()/2-50,0,1);
jianto(getmaxx()/2-50,getmaxy()/4,1);
jianto(getmaxx()/2-50,getmaxy()/2,1);
for(i=0;i<N;i++)
{
x[i]=i;
y1[i]=0;
y2[i]=0;
z[i]=0;
y12[i]=0;
}
for(i=(int)(getmaxx()/2-100);i<getmaxx()/2+50;i++)
y1[i]=1;
for(i=0;i<200;i++)
y2[(int)(i+getmaxx()/2-50)]=(i*0.1)/(2*E*0.1);
for(i=0;i<getmaxx();i++)
z[i]=y2[2*(getmaxx()/2-50)-i];
moveto(x[0],getmaxy()/4-y1[i]);
for(i=1;i<N;i++)
lineto(x[i],getmaxy()/4-E*y1[i]);
moveto(x[0],getmaxy()/2-y2[0]);
for(i=1;i<N;i++)
lineto(x[i],getmaxy()/2-E*y2[i]);
getch();
backg2();
moveto(x[0],getmaxy()/2-z[0]);
for(i=1;i<N;i++)
lineto(x[i],getmaxy()/2-E*z[i]);
getch();
for(i=getmaxx()-1;i>=0;i--)
{
if(z[i]!=0)
break;
}
n=i;
for(j=0;j<getmaxx();j++)
{
if(y1[j]!=0)
break;
}
m=j;
point=m-n;
for(i=0;i<getmaxx();i++)
{
if(z[i]!=0)
break;
}
k=i;l=i,l0=i;
for(i=0;i<200;i++)
{
z[k+point+i]=z[k+i];
z[k+i]=0;
}
backg2();
moveto(x[0],getmaxy()/2-z[0]);
for(i=1;i<N;i++)
lineto(x[i],getmaxy()/2-E*z[i]);
getch();
for(i=0;i<350;i++)
{
for(j=0;j<200;j++)
{
y12[(int)(getmaxx()/2-50+point+i)]=y12[(int)(getmaxx()/2-50+point+i)]+0.01*z[k+point+j]*y1[l+point+j];
}
l=l+1;
moveto(x[0],getmaxy()*3/4-y12[0]);
for(j=0;j<getmaxx();j++)
lineto(x[j],getmaxy()*3/4-E*y12[j]);
bar(0,getmaxy()/4,getmaxx(),getmaxy()/2);
backg2();
sjx((int)(k+point+i),(int)(getmaxy()/2),(int)(k+point+i),(int)(getmaxy()/2-100),(int)(k+point+i+200),(int)(getmaxy()/2));
getch();
}
outtextxy(200,getmaxy()-20,"over");
for(i=0;i<10;i++)
getch();
closegraph();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -