Physics Stack Exchange is a question and answer site for active researchers, academics and students of physics. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a lattice with Lattice Vectors $(\vec{t}_1,\vec{t}_2,\vec{t}_3)$ which are NOT orthogonal in general.
How can I identify the atoms/unit cells that belong to a plane - that is normal to a given direction.
I do recognise that the lattice might not be periodic in ANY direction - only specific ones.

I worked out a way to calculate the periodicity of the lattice planes:
1. Given the direction $\vec{t}$, construct the corresponding reciprocal lattice vector G.
2. Project $\vec{G}$ in the direction of $\vec{t}$ and take the inverse of the length of the projected vector.
i.e. Distance between lattice planes normal to the direction $d = \vec{G}\cdot \frac{\vec{t}}{\vert\vec{t}\vert}$

My question, once again, is to find an algorithm that identifies the atoms in the crystal planes thus formed.

share|cite|improve this question

For "simple" planes that "fit" into one or a few unit cells of the lattice, the task is relatively simple, in that you just identify all atoms that belong to the plane in one such block and then use the periodicity of the crystal.

For the most general case, I'm not 100% sure what the best way would be. Here's an idea.

Let $T$ be the matrix whose columns are your lattice vectors. Let $P$ be the matrix whose columns are three vectors $\vec{u}, \vec{v}, \vec{d}$ where $\vec{u}$ and $\vec{v}$ lie in the plane you're interested in and $\vec{d}$ is perpendicular to that plane.

Then any point can be expressed as $$\begin{pmatrix}x\\ y\\ z\end{pmatrix} = P \cdot \begin{pmatrix}\alpha \\ \beta \\ \gamma \end{pmatrix} = T \cdot \begin{pmatrix}h\\ k\\ l\end{pmatrix}$$ Let's make the coordinate origin such that the plane goes through it. Then, a point that lies on the plane is characterized by $\gamma = 0$ in the above representation. On the other hand, lattice vectors are characterized by integer values of $h$, $k$, and $l$. Hence, we solve the above equation for $(h,k,l)$ and get $$\begin{pmatrix}h\\ k\\ l\end{pmatrix} = T^{-1} P \begin{pmatrix}\alpha\\ \beta \\ 0\end{pmatrix}$$

The lattice points that lie in the plane are then those points for which we can find values $\alpha$ and $\beta$ such that the resulting $h, k$ and $l$ are integers. Haven't thought much about how we could do that, though. I guess it depends on the particular plane, and some "inspection".

share|cite|improve this answer
Thank you. This answer is very helpful. It made me think of the following - when inverted the relation between the two looks thus: $$\begin{pmatrix}h\\ k\\ l\end{pmatrix} = T^{-1} P \begin{pmatrix}\alpha\\ \beta \\ 0\end{pmatrix}$$ One may restrict $\gamma$ to be integral if the $\vec{d}$ has the length $d = \vec{G}\cdot \frac{\vec{t}}{\vert\vec{t}\vert}$. What is left now is that we can search for all $\gamma\in [0,1)$ and identify the lattice points "in" a plane. While that is a satisfactory state of affairs, there is the problem that I also need to identify a unit cell in plane. – Debanjan Basu Mar 27 '13 at 12:37
As for inspection, I am trying to code this - and intuition doesn't aid in this regard. +1 for the nudge in the correct direction, but sorry for not marking as the correct answer. My problem still stays. – Debanjan Basu Mar 27 '13 at 12:41

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.