庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>C语言>编程实例>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

氢原子电子云模拟显示

 作者:陈欣    日期:2005-8-4 14:12:07
字号选择〖 〗/ 双击滚屏 单击停止   

模拟了各种氢原子电子云的状态,希望对大家有所帮助!!

# include "graphics.h"
# include "math.h"
# include "conio.h"
# include "stdio.h"
# define PI 3.14159
# define THETA PI/8
# define PHI PI*2/5
# define L 800
# define RR 80
# define SQR(X,Y,Z) sqrt(X*X+Y*Y+Z*Z)

int x1,y1;
float n1(x,y,z) /*1s*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(16.0*exp(-r));
}

float n2(x,y,z) /*2s*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(16*(2-r)*exp(-r/2));
}

float n3(x,y,z) /*2pz*/
float x,y,z;

 double r;
 r=SQR(x,y,z);
 return(16*z*exp(-r/2));
}

float n4(x,y,z) /*2px*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(20*x*exp(-r/2));
}

float n5(x,y,z) /*2py*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(20*y*exp(-r/2));
}

float n6(x,y,z) /*3s*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(4*(27-18*r+2*r*r)*exp(-r/3));
}

float n7(x,y,z) /*3pz*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(4*(6-r)*z*exp(-r/3));
}

float n8(x,y,z) /*3px*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(4.0*(6-r)*x*exp(-r/3));
}

float n9(x,y,z) /*3py*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(8.0*(6-r)*y*exp(-r/3));
}

float n10(x,y,z) /*3dz^2*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(6*(3*z*z-r*r)*exp(-r/3));
}

float n11(x,y,z) /*3dxz*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(16*x*z*exp(-r/3));
}

float n12(x,y,z) /*3dyz*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(16*y*z*exp(-r/3));
}

float n13(x,y,z) /*3dxy*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(8*x*y*exp(-r/3));
}

float n14(x,y,z) /*3dx^2-y^2*/
float x,y,z;
{
 double r;
 r=SQR(x,y,z);
 return(4*(x*x-y*y)*exp(-r/3));
}

static int m;
void draw(tria,x,y,z0,max,min,p)
float tria[ ],x,y,z0;
int max[ ],min[ ];
float (*p)();
{
 float z,xx,yy,zz;
 int nx,ny;
 z=(*p)(x,y,z0);
 if(z>24) z=24.0;
 else if(z<-24.0) z=-24.0;
 xx=-x*tria[0]+y*tria[2];
 yy=-x*tria[2]*tria[3]-y*tria[0]*tria[3]+z*tria[1];
 zz=-x*tria[1]*tria[2]-y*tria[1]*tria[0]-z*tria[3]+RR;
 nx=L*xx/zz+320;
 ny=-L*yy/zz+230;
 if(ny>min[nx]&&ny<max[nx]) m=1;
 else
 {
  if(ny<min[nx]&&ny>max[nx])
        {
   min[nx]=ny;max[nx]=ny;
  }
        else if(ny<min[nx]) {min[nx]=ny;}
        else if(ny>=max[nx]){max[nx]=ny;}
  if(m==1)
  {
   m=2;
   x1=nx;
   y1=ny;
  }
        else
  {
   line(x1,y1,nx,ny);
   x1=nx;
   y1=ny;
  } 
 }
}

main()
{
 float n1();float n2();float n3();float n4();float n5();
 float n6();float n7();float n8();float n8();float n9();
 float n10();float n11();float n12();float n13();float n14();
 char select,answer;
 int max[640],min[640];
 float trif[4], x,y,z0;
 static char show[10];
 float (*point)();
 char *p;
 int gdriver=VGA,gmode=VGAHI;
 initgraph(&gdriver,&gmode," ");
 setviewport(15,15,635,475,1);
 setbkcolor(BLACK); clearviewport();
 setcolor(GREEN); p=show;
 trif[0]=sin(THETA);trif[1]=sin(PHI);
 trif[2]=cos(THETA);trif[3]=cos(PHI);
repeat:  gotoxy(5,3);printf("1---------------1s");
            gotoxy(50,3);printf("2---------------2s");
   gotoxy(5,5);printf("3---------------2pz");
   gotoxy(50,5);printf("4---------------2px");
   gotoxy(5,7);printf("5---------------2py");
   gotoxy(50,7);printf("6---------------3s");
   gotoxy(5,9);printf("7---------------3pz");
   gotoxy(50,9);printf("8---------------3px");
            gotoxy(5,11);printf("9---------------3py");
   gotoxy(50,11);printf("a---------------3dz^2");
   gotoxy(5,13);printf("b---------------3dxz");
   gotoxy(50,13);printf("c---------------3dyz");
   gotoxy(5,15);printf("d---------------3dxy");
   gotoxy(50,15);printf("e---------------3dx^2-y^2");
   gotoxy(5,17);printf("0---------------Quit");
   gotoxy(50,17);printf("Input your select(0-9,a-e)");
   select=getch();
   printf("%c",select);
   x=0,y=0,z0=0;
   switch(select)
   {
    case '1':{p="1s";point=n1;break;}
    case '2':{p="2s";point=n2;break;}
    case '3':{p="2pz";point=n3;z0=1;break;}
    case '4':{p="2px";point=n4;break;}
    case '5':{p="2py";point=n5;break;}
    case '6':{p="3s";point=n6;break;}
    case '7':{p="3pz";point=n7;z0=1;break;}
    case '8':{p="3px";point=n8;break;}
    case '9':{p="3py";point=n9;break;}
    case 'a':{p="3dz^2";point=n10;z0=2.3;break;}
    case 'b':{p="3dxz";point=n11;z0=1;break;}
    case 'c':{p="3dyz";point=n12;z0=1;break;}
    case 'd':{p="3dxy";point=n13;break;}
    case 'e':{p="3dx^2-y^2";point=n14;break;}
    case '0' :{ closegraph();exit();break;}
    default  :
     {
      printf("Input error!Please input gain!");
      clearviewport();
      goto repeat;
     } 
   }
   gotoxy(7,23);printf("Are you sure?(Y or N)\n");
   answer=getch();
   if(answer=='n'||answer=='N')  goto repeat;
   {
    int i;
    cleardevice();
    settextstyle(DEFAULT_FONT,0,1);
    outtextxy(500,430,p);
    for(i=0;i<=639;i++)
    { 
     max[i]=0;
     min[i]=480;
    }
    x=20.0;
    while(x>-20)
    {
     m=1;
     y=-20;
     i++;
     while(y<=20)
     {
      draw(trif,x,y,z0,max,min,point);
      y+=0.15;
     }
     x+=-0.3;
    }
    for(y=20.0;y>=-20.0;y+=-40.0)
    {
     m=1;
     for(x=20.0;x>=-20.0;x-=0.1)
     draw(trif,x,y,z0,max,min,point);
    }
    getch();
    clearviewport();
   }
   goto repeat;  
}

上一篇:没有了    下一篇:非常漂亮的4-瓣花型图案  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 陈欣
信息来源: 网络 录入时间: 2005-8-4 14:12:07
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿