[NeXus-tech] CIF axes
freddie.akeroyd at stfc.ac.uk
freddie.akeroyd at stfc.ac.uk
Wed Aug 4 12:37:05 BST 2010
Hi Mark,
I'm still a little confused by some bits of the new proposal for the
coordinate system - I'll work through my thinking and refer to your
slides at http://lns00.psi.ch/nexus2010/NexusRules.pdf
The current NeXus scheme is depicted in slide 5 where in the "distance,
polar, azimuthal" system the Z axis changes direction so it is always
along the beam direction; for any particular component the Z axis is
along the beam incident onto it. The nexus "distance, polar, azimuthal"
for a component refer to (r,theta,phi) in spherical polar coordinates
with the (x,y,z) axes of this polar coordinate system taken from the
PREVIOUS component (note: r is not usually exactly equal to "distance"
as distance is a flight path value back to the origin (sample) - usually
"r = distance (this component) - distance (previous component)". Aside:
in slide 4 the azimuthal angle is shown measured from Y - shouldn't it
be measured from the positive X axis?
In representing this in the NeXus CIF scheme the transform formula is:
Pcurr = op1 * op2 * P0
And for the NeXus simple coordinate system this gives "azimuthal_angle,
polar_angle" which means apply polar_angle rotation first, then
azimuthal_angle. Polar_angle is a rotation about Y vector [0,1,0] but
at offset (0,0,-distance) as it is relative to the previous component -
this seems OK. The azimuthal angle is then applied as a rotation about Z
vector [0,0,1] - but which Z? Has the Z axis of the current component
being moved at this point by the polar_angle rotation? In which case the
rotation needs to be in the (x,y,z) axis frame of the previous
component. At some point the Z axis of the component will change to be
along the beam component to component path, but i'm not clear at what
point this happens. Also do the rotations change the component local x
and y axis too? In the simple scheme I believe the nexus global X and Y
axis never changed, just Z, but if we are chaining operations to define
different axes then we need to be clear when we are referring to "nexus
global x,y,z" and "local potentially rotated x,y,z of this or the
previous component".
With regard to the transform scheme, it appears to be mixing both the
specification of an axis with how much you want to rotate about this
axis e.g. "polar_angle, azimuthal_angle" means rotate by
"azimuthal_angle" about the "azimuthal_axis", which in this case is an
axis defined by convention and does not need to be specified. If we want
to rotate about some user defined axis e.g. "polar_angle, my_axis" my
reading is that you create a field containing the value of the rotation
with the axis direction specified as attributes e.g.
<my_axis type="rotation" vector="0 0 1" offset="0 0 20"> 10.0 </my_axis>
While this works fine, you cannot re-use the specification of this axis
elsewhere unless you rotate by 10.0 too - have I misunderstood how to do
it? Do we need to separate the axis definition into an NXaxis or
similar?
Regards,
Freddie
--
Scanned by iCritical.
More information about the NeXus-tech
mailing list