Site hosted by Angelfire.com: Build your free website today!

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.


Coordinates.gid points.gif

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 :

fracequation.gif


To carry out such transformation we have to multiply by :

matrixequation.gif


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:
volume.gif



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