计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格

问题描述:

计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格
1个回答 分类:综合 2014-12-13

问题解答:

我来补答
    理想六角密排晶格,其A层的任意三个相邻原子间排成正三角形(图中1、2、3号原子),设边长为a,易知原子半径r=a/2.同时,A、B层相邻的四个原子排成正四边形(图中1、2、3、4号原子),依次可以计算出各个位置的原子的坐标.    如图,首先设底层中心原子(2号原子)为坐标原点,以2、3号原子间连线为X轴,以两中心原子间连线为Z轴.则可以求出所有原子的笛卡尔坐标位置:
据此,matlab程序为:————————————————————————————a=1;  %将a归一化.x0=[0,a,a/2,-a/2,-a,-a/2,a/2,0,-a/2,a/2,0,a,a/2,-a/2,-a,-a/2,a/2];y0=[0,0,sqrt(3)*a/2,sqrt(3)*a/2,0,-sqrt(3)*a/2,-sqrt(3)*a/2,sqrt(3)*a/3,-sqrt(3)*a/6,-sqrt(3)*a/6,0,0,sqrt(3)*a/2,sqrt(3)*a/2,0,-sqrt(3)*a/2,-sqrt(3)*a/2];z0=[0,0,0,0,0,0,0,sqrt(6)*a/3,sqrt(6)*a/3,sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3];%(注意,在matlab中运行时,要将x0,y0,z0后面的三个表达式拉到1排里.)
%下面这句可以用来初步查看坐标位置      % plot3(x,y,z,'o')
%下面画原子图r=a/2;   %可自行调整半径  不同半径的画图效果差别蛮大的rho=0:0.05*pi:2*pi;phi=-pi:0.05*pi:pi;for i=1:17    x=x0(i)+r*(cos(phi))'*(cos(rho));    y=y0(i)+r*(cos(phi))'*(sin(rho));    z=z0(i)+r*(sin(phi))'*(ones(size(rho)));    surf (x,y,z);    shading interp   %使图形光滑,无边界阴影    hold onendaxis equal————————————————————————效果图如下:(可在matlab中三维旋转获得不同视觉效果)
 
 
展开全文阅读
剩余:2000
下一页:生物 酶