Wave2.cpp
上传用户:shhfmail
上传日期:2007-01-11
资源大小:7k
文件大小:1k
- #include<stdio.h>
- #include<stdlib.h>
- #include<conio.h>
- #include<complex.h>
- #include<dos.h>
- #include<string.h>
- #include<graphics.h>
- #define PI 3.1415926535
- #define L 30
- #define E 2
- #define ELS 1
- #define MAS 10
- #define FR 1.01
- typedef unsigned char byte;
- float CX=640/PI,CY=480/PI;int MED=L*(L+1)/2;
- struct punto{float v,p;};
- punto*m=(punto*)malloc(L*L*sizeof(punto));
- void draw(int n,int c){
- float
- x=E*(L/2-n%L+.5),
- y=E*(L/2-n/L-.5),
- z=m[n].v;
- putpixel(320+x*2,37-z,15*c);
- z+=30;if(z>0)putpixel(320+atan(x/z)*CX,240-atan(y/z)*CY,z*c);
- }
- main()
- {
- int gmode=VGAHI,gdriver=VGA;initgraph(&gdriver,&gmode,"");
- int n,k;
- REGS mouse;
- for(n=0;n<L*L;n++){m[n].v=7;m[n].p=0;}
- while(1)
- {
- mouse.x.ax=0x0B;int86(0x33,&mouse,&mouse);k=mouse.x.dx;
- if(k)
- {
- //m[MED].p+=(float)k/10;m[MED-L].p+=(float)k/10;m[MED+L].p+=(float)k/10;m[MED-1].p+=(float)k/10;m[MED+1].p+=(float)k/10;
- for(n=0;n<L;n++)
- {
- m[n*L].p+=(float)k/10;
- m[n*L-1].p-=(float)k/10;
- m[n].p+=(float)k/10;
- m[n+(L-1)*L].p-=(float)k/10;
- }
- }
- for(n=0;n<L*L;n++){if((n+1)%L)m[n].p+=(m[n+1].v-m[n].v)/ELS;if(n%L)m[n].p+=(m[n-1].v-m[n].v)/ELS;if(n<(L-1)*L)m[n].p+=(m[n+L].v-m[n].v)/ELS;if(n>L)m[n].p+=(m[n-L].v-m[n].v)/ELS;}
- for(n=0;n<L*L;n++){draw(n,0);m[n].v+=m[n].p/MAS;draw(n,1);m[n].p/=FR;}
- }
- }