# Plotting a 2D crystal lattice from two primitive lattice vectors

171 views (last 30 days)
Jennifer Garrison on 7 Sep 2019
Answered: Yarlapati Akshay on 30 Apr 2020 at 18:10
I am trying generate a plot of a crystal lattice based on two prmitive lattice vectors:
v1= -0.5i + -sqrt(3)/2j
v2= 1i
where i and j are orhtogonal unit vecotors to represent the x and y directions.
I am not sure where to begin.

darova on 8 Sep 2019
That is what you want? Jennifer Garrison on 8 Sep 2019
It only needs to be 2D but yes. I basically need to define my own coordinate system that is not the standard cartesian one with those vectors and display the lattice points like you did.

John D'Errico on 8 Sep 2019
First, you need to understand that MATLAB does not understand what you intend by this notation:
v1= -0.5i + -sqrt(3)/2j
Both i and j are sqrt(-1) in MATLAB. They are not distinct. Instead, just write them as vectors:
v1= [-0.5, -sqrt(3)/2];
v2= [1 , 0];
[x,y] = meshgrid(0:10,0:5);
xy = [x(:),y(:)];
T = [v1;v2];
xyt = xy*T;
xt = reshape(xyt(:,1),size(x));
yt = reshape(xyt(:,2),size(y));
plot(xt,yt,'ro-')
hold on
plot(xt',yt','r-')
axis equal
axis square Nayem Mohammed Reza Shah on 28 Apr 2020
Hello,
I was trying to plot a 3D crystal lattice with vectors like following:
v1 = 0.5i + 0j + 0.5k;
v2 = 0i + 0.5j + 0.5k;
v3 = 0.5i + 0.5j + 0 k;
Can anyone please give some idea?
Thanks
Bjorn Gustavsson on 29 Apr 2020
Simply extend John's or my suggestion to 3-D. You can call meshgrid (or ndgrid) with 3 inputs and 3 outputs:
[i1,j2,k3] = meshgrid(0:3,0:4,0:2);
Then define your 3 lattice-vectors, and use plot3 to plot the grid.

Bjorn Gustavsson on 8 Sep 2019
If you do it stepwise it becomes "not too tricky":
e1 = [-0.5; -sqrt(3)/2]; % Your unit
e2 = [1; 0]; % vectors
[I1,I2] = meshgrid(-10:10,-8:8); % A 2-D set of points
r_crystal = [e1,e2]*[I1(:)';I2(:)']; % calculate r_c = n*e1 + m*e2 for all points
plot(r_crystal(1,:),r_crystal(2,:),'.')
You can dood.e with how big crystal you want or what shape, but this should give you something.
HTH

#### 1 Comment

Jennifer Garrison on 8 Sep 2019
Thank you so much that's exactly what I needed!

Yarlapati Akshay on 30 Apr 2020 at 18:10
r_1st=2
N_1st=