Fractional to Orthonormal Coordinates Conversion Tutorial
This problem often comes up in crystallography where a unit cell is defined by a non-orthogonal basis (called fractional coordinates). Conversions between orthonormal and fractional coordinates have to be frequently performed. This describes one particular case of such transformation, where a is taken along x-axis and b lies in x-y plane.
We want to transform point
in fractional coordinates into orthonormal coordinates, producing point
. Fractional coordinates are weights, linear combination of which with vectors
produces point
:
To carry out such transformation we have to multiply
by
:
It is clear that
and
First two coordinates of vector c are easily found using the dot product:
From which we find that:

The third coordinate of c is found using the cross product:




Where V is volume of the unit cell and is equal to:
Finally the transformation matrix from
to
is:

To carry out the inverse transformation from orthonormal to fractional coordinates we have to find the inverse of M:

Inverse of M can be obtained from Cramer's rule:

From which we get:

Source Code
C++ source: class FracOrth for conversion between fractional and orthonormal coordinates: FracOrth.h FracOrth.cpp
Here is a dos program which does fractional to orthonormal coordinates conversion using the above class: frac.cpp