计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/25 15:38:22
![计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格](/uploads/image/z/516751-7-1.jpg?t=%E8%AE%A1%E7%AE%97%E5%87%BA%E5%85%AD%E8%A7%92%E5%AF%86%E6%8E%92%E6%99%B6%E6%A0%BC%E4%B8%AD%E5%90%84%E5%8E%9F%E5%AD%90%E7%9A%84%E7%A9%BA%E9%97%B4%E7%9B%B8%E5%AF%B9%E4%BD%8D%E7%BD%AE%2C%E7%84%B6%E5%90%8E%E5%9C%A8Matlab%E4%B8%AD%E5%86%99%E7%A8%8B%E5%BA%8F%E7%94%BB%E5%87%BA%E5%85%AD%E8%A7%92%E5%AF%86%E6%8E%92%E6%99%B6%E6%A0%BC)
计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格
计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格
计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格
理想六角密排晶格,其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 on
end
axis equal
————————————————————————
效果图如下:(可在matlab中三维旋转获得不同视觉效果)