Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Conversion from cartesian to fractional coordinates

  1. Jun 4, 2010 #1
    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 -

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

    Thanks for your time.
    Last edited by a moderator: Apr 25, 2017
  2. jcsd
  3. Jun 4, 2010 #2
    It seems like you're doing a lot more work than necessary. You want something like:

    [tex]\vec{R} = x_1 \vec{a}_1 + x_2 \vec{a}_2 + x_3 \vec{a}_3[/tex]

    which can be written in matrix form as

    [tex]\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.
  4. Jun 7, 2010 #3
    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.

Share this great discussion with others via Reddit, Google+, Twitter, or Facebook