# Conversion from cartesian to fractional coordinates

1. Jun 4, 2010

### pushkalcodes

Hi all,

I have been trying to write code to convert from cartesian to fractional coordinates. I think everything is correct in my code (i have used wikipedia as reference - http://en.wikipedia.org/wiki/Fractional_coordinates), but still, the code doesn't work for some test values. The code is here http://codepad.org/sOV5ws5R. The code has the test data in there, if you want to check.

Could there be something wrong with the orientation of the axes? In wikipedia it has been assumed that cartesian coordinate axes X is in line with the lattice vector 'a'. It might be that the data I have doesn't correspond to this scheme (that the lattice vector 'a' is taken along x-axis). How to check if this the data which I have adheres to this scheme or is some other axis is directional along x-axis?

Other references that might be helpful -
http://www.angelfire.com/linux/myp/FracCor/fraccor.html
http://cci.lbl.gov/cctbx/frac_cart.html

I have really tried hard to find a solution for this, but couldn't find out where I am going wrong.

Last edited by a moderator: Apr 25, 2017
2. Jun 4, 2010

### kanato

It seems like you're doing a lot more work than necessary. You want something like:

$$\vec{R} = x_1 \vec{a}_1 + x_2 \vec{a}_2 + x_3 \vec{a}_3$$

which can be written in matrix form as

$$\vec{R} = A \cdot \left( \begin{array}{c} x_1 \\ x_2 \\ x_3 \end{array}\right)$$

where the matrix A is formed with the vectors a_i as its columns. Then you just need to invert the matrix to find the x's.

3. Jun 7, 2010

### pushkalcodes

Hi,
Thanks for your reply. I have done the conversion exactly as you have described, using the inverse transformation matrix for conversion from cartesian to fractional coordinates.
The problem is with the axes I am choosing. In the conversion, one has to choose one of the lattice vectors being parallel to either of the x,y or z axis (x,y,z axis of cartesian or orthonormal coordinates). I might be going wrong there.

If anyone else can kindly validate the code with any other data they have, or can post data here, it'd be great.

Thanks