All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.dawnsci.nexus.NXtransformations Maven / Gradle / Ivy

/*-
 *******************************************************************************
 * Copyright (c) 2015 Diamond Light Source Ltd.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * This file was auto-generated from the NXDL XML definition.
 *******************************************************************************/

package org.eclipse.dawnsci.nexus;

import java.util.Map;

import org.eclipse.dawnsci.analysis.api.tree.DataNode;
import org.eclipse.january.dataset.IDataset;

/**
 * Collection of axis-based translations and rotations to describe a geometry.
 * May also contain axes that do not move and therefore do not have a transformation
 * type specified, but are useful in understanding coordinate frames within which
 * transformations are done, or in documenting important directions, such as the
 * direction of gravity.
 * A nested sequence of transformations lists the offset and rotation steps
 * needed to describe the position and orientation of any movable or fixed device.
 * There will be one or more transformations (axes) defined by one or more fields
 * for each transformation. The all-caps name ``AXISNAME`` designates the
 * particular axis generating a transformation (e.g. a rotation axis or a translation
 * axis or a general axis). The attribute ``units="NX_TRANSFORMATION"`` designates the
 * units will be appropriate to the ``transformation_type`` attribute:
 * * ``NX_LENGTH`` for ``translation``
 * * ``NX_ANGLE`` for ``rotation``
 * * ``NX_UNITLESS`` for axes for which no transformation type is specified
 * This class will usually contain all axes of a sample stage or goniometer or
 * a detector. The NeXus default McSTAS coordinate frame is assumed, but additional
 * useful coordinate axes may be defined by using axes for which no transformation
 * type has been specified.
 * The entry point (``depends_on``) will be outside of this class and point to a
 * field in here. Following the chain may also require following ``depends_on``
 * links to transformations outside, for example to a common base table. If
 * a relative path is given, it is relative to the group enclosing the ``depends_on``
 * specification.
 * For a chain of three transformations, where :math:`T_1` depends on :math:`T_2`
 * and that in turn depends on :math:`T_3`, the final transformation :math:`T_f` is
 * .. math:: T_f = T_3 T_2 T_1
 * In explicit terms, the transformations are a subset of affine transformations
 * expressed as 4x4 matrices that act on homogeneous coordinates, :math:`w=(x,y,z,1)^T`.
 * For rotation and translation,
 * .. math:: T_r &= \begin{pmatrix} R & o \\ 0_3 & 1 \end{pmatrix} \\ T_t &= \begin{pmatrix} I_3 & t + o \\ 0_3 & 1 \end{pmatrix}
 * where :math:`R` is the usual 3x3 rotation matrix, :math:`o` is an offset vector,
 * :math:`0_3` is a row of 3 zeros, :math:`I_3` is the 3x3 identity matrix and
 * :math:`t` is the translation vector.
 * :math:`o` is given the ``offset`` attribute, :math:`t` is given by the ``vector``
 * attribute multiplied by the field value, and :math:`R` is defined as a rotation
 * about an axis in the direction of ``vector``, of angle of the field value.
 * 
 */
public interface NXtransformations extends NXobject {

	public static final String NX_AXISNAME = "AXISNAME";
	public static final String NX_AXISNAME_ATTRIBUTE_TRANSFORMATION_TYPE = "transformation_type";
	public static final String NX_AXISNAME_ATTRIBUTE_VECTOR = "vector";
	public static final String NX_AXISNAME_ATTRIBUTE_OFFSET = "offset";
	public static final String NX_AXISNAME_ATTRIBUTE_OFFSET_UNITS = "offset_units";
	public static final String NX_AXISNAME_ATTRIBUTE_DEPENDS_ON = "depends_on";
	public static final String NX_AXISNAME_END = "AXISNAME_end";
	public static final String NX_AXISNAME_INCREMENT_SET = "AXISNAME_increment_set";
	/**
	 * Units need to be appropriate for translation or rotation
	 * The name of this field is not forced. The user is free to use any name
	 * that does not cause confusion. When using more than one ``AXISNAME`` field,
	 * make sure that each field name is unique in the same group, as required
	 * by HDF5.
	 * The values given should be the start points of exposures for the corresponding
	 * frames. The end points should be given in ``AXISNAME_end``.
	 * 

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public IDataset getAXISNAME(); /** * Units need to be appropriate for translation or rotation * The name of this field is not forced. The user is free to use any name * that does not cause confusion. When using more than one ``AXISNAME`` field, * make sure that each field name is unique in the same group, as required * by HDF5. * The values given should be the start points of exposures for the corresponding * frames. The end points should be given in ``AXISNAME_end``. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME the AXISNAME */ public DataNode setAXISNAME(IDataset AXISNAME); /** * Units need to be appropriate for translation or rotation * The name of this field is not forced. The user is free to use any name * that does not cause confusion. When using more than one ``AXISNAME`` field, * make sure that each field name is unique in the same group, as required * by HDF5. * The values given should be the start points of exposures for the corresponding * frames. The end points should be given in ``AXISNAME_end``. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public Number getAXISNAMEScalar(); /** * Units need to be appropriate for translation or rotation * The name of this field is not forced. The user is free to use any name * that does not cause confusion. When using more than one ``AXISNAME`` field, * make sure that each field name is unique in the same group, as required * by HDF5. * The values given should be the start points of exposures for the corresponding * frames. The end points should be given in ``AXISNAME_end``. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME the AXISNAME */ public DataNode setAXISNAMEScalar(Number AXISNAME); /** * Get all AXISNAME fields: * * Units need to be appropriate for translation or rotation * The name of this field is not forced. The user is free to use any name * that does not cause confusion. When using more than one ``AXISNAME`` field, * make sure that each field name is unique in the same group, as required * by HDF5. * The values given should be the start points of exposures for the corresponding * frames. The end points should be given in ``AXISNAME_end``. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return a map from node names to the ? extends IDataset for that node. */ public Map getAllAXISNAME(); /** * The transformation_type may be ``translation``, in which case the * values are linear displacements along the axis, ``rotation``, * in which case the values are angular rotations around the axis. * If this attribute is omitted, this is an axis for which there * is no motion to be specifies, such as the direction of gravity, * or the direction to the source, or a basis vector of a * coordinate frame. *

*

Enumeration:

    *
  • translation
  • *
  • rotation

*

* * @return the value. */ public String getAXISNAMEAttributeTransformation_type(); /** * The transformation_type may be ``translation``, in which case the * values are linear displacements along the axis, ``rotation``, * in which case the values are angular rotations around the axis. * If this attribute is omitted, this is an axis for which there * is no motion to be specifies, such as the direction of gravity, * or the direction to the source, or a basis vector of a * coordinate frame. *

*

Enumeration:

    *
  • translation
  • *
  • rotation

*

* * @param transformation_type the transformation_type */ public void setAXISNAMEAttributeTransformation_type(String transformation_type); /** * Three values that define the axis for this transformation. * The axis should be normalized to unit length, making it * dimensionless. For ``rotation`` axes, the direction should be * chosen for a right-handed rotation with increasing angle. * For ``translation`` axes the direction should be chosen for * increasing displacement. *

1: 3; *

* * @return the value. */ public Number getAXISNAMEAttributeVector(); /** * Three values that define the axis for this transformation. * The axis should be normalized to unit length, making it * dimensionless. For ``rotation`` axes, the direction should be * chosen for a right-handed rotation with increasing angle. * For ``translation`` axes the direction should be chosen for * increasing displacement. *

1: 3; *

* * @param vector the vector */ public void setAXISNAMEAttributeVector(Number vector); /** * A fixed offset applied before the transformation (three vector components). *

1: 3; *

* * @return the value. */ public Number getAXISNAMEAttributeOffset(); /** * A fixed offset applied before the transformation (three vector components). *

1: 3; *

* * @param offset the offset */ public void setAXISNAMEAttributeOffset(Number offset); /** * Units of the offset. Values should be consistent with NX_LENGTH. * * @return the value. */ public String getAXISNAMEAttributeOffset_units(); /** * Units of the offset. Values should be consistent with NX_LENGTH. * * @param offset_units the offset_units */ public void setAXISNAMEAttributeOffset_units(String offset_units); /** * Points to the path to a field defining the axis on which this * depends or the string ".". * * @return the value. */ public String getAXISNAMEAttributeDepends_on(); /** * Points to the path to a field defining the axis on which this * depends or the string ".". * * @param depends_on the depends_on */ public void setAXISNAMEAttributeDepends_on(String depends_on); /** * ``AXISNAME_end`` is a placeholder for a name constructed from the actual * name of an axis to which ``_end`` has been appended. * The values in this field are the end points of the motions that start * at the corresponding positions given in the ``AXISNAME`` field. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public IDataset getAXISNAME_end(); /** * ``AXISNAME_end`` is a placeholder for a name constructed from the actual * name of an axis to which ``_end`` has been appended. * The values in this field are the end points of the motions that start * at the corresponding positions given in the ``AXISNAME`` field. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME_end the AXISNAME_end */ public DataNode setAXISNAME_end(IDataset AXISNAME_end); /** * ``AXISNAME_end`` is a placeholder for a name constructed from the actual * name of an axis to which ``_end`` has been appended. * The values in this field are the end points of the motions that start * at the corresponding positions given in the ``AXISNAME`` field. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public Number getAXISNAME_endScalar(); /** * ``AXISNAME_end`` is a placeholder for a name constructed from the actual * name of an axis to which ``_end`` has been appended. * The values in this field are the end points of the motions that start * at the corresponding positions given in the ``AXISNAME`` field. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME_end the AXISNAME_end */ public DataNode setAXISNAME_endScalar(Number AXISNAME_end); /** * Get all AXISNAME_end fields: * * ``AXISNAME_end`` is a placeholder for a name constructed from the actual * name of an axis to which ``_end`` has been appended. * The values in this field are the end points of the motions that start * at the corresponding positions given in the ``AXISNAME`` field. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return a map from node names to the ? extends IDataset for that node. */ public Map getAllAXISNAME_end(); /** * ``AXISNAME_increment_set`` is a placeholder for a name constructed from the actual * name of an axis to which ``_increment_set`` has been appended. * The value of this optional field is the intended average range through which * the corresponding axis moves during the exposure of a frame. Ideally, the * value of this field added to each value of ``AXISNAME`` would agree with the * corresponding values of ``AXISNAME_end``, but there is a possibility of significant * differences. Use of ``AXISNAME_end`` is recommended. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public IDataset getAXISNAME_increment_set(); /** * ``AXISNAME_increment_set`` is a placeholder for a name constructed from the actual * name of an axis to which ``_increment_set`` has been appended. * The value of this optional field is the intended average range through which * the corresponding axis moves during the exposure of a frame. Ideally, the * value of this field added to each value of ``AXISNAME`` would agree with the * corresponding values of ``AXISNAME_end``, but there is a possibility of significant * differences. Use of ``AXISNAME_end`` is recommended. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME_increment_set the AXISNAME_increment_set */ public DataNode setAXISNAME_increment_set(IDataset AXISNAME_increment_set); /** * ``AXISNAME_increment_set`` is a placeholder for a name constructed from the actual * name of an axis to which ``_increment_set`` has been appended. * The value of this optional field is the intended average range through which * the corresponding axis moves during the exposure of a frame. Ideally, the * value of this field added to each value of ``AXISNAME`` would agree with the * corresponding values of ``AXISNAME_end``, but there is a possibility of significant * differences. Use of ``AXISNAME_end`` is recommended. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return the value. */ public Number getAXISNAME_increment_setScalar(); /** * ``AXISNAME_increment_set`` is a placeholder for a name constructed from the actual * name of an axis to which ``_increment_set`` has been appended. * The value of this optional field is the intended average range through which * the corresponding axis moves during the exposure of a frame. Ideally, the * value of this field added to each value of ``AXISNAME`` would agree with the * corresponding values of ``AXISNAME_end``, but there is a possibility of significant * differences. Use of ``AXISNAME_end`` is recommended. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @param AXISNAME_increment_set the AXISNAME_increment_set */ public DataNode setAXISNAME_increment_setScalar(Number AXISNAME_increment_set); /** * Get all AXISNAME_increment_set fields: * * ``AXISNAME_increment_set`` is a placeholder for a name constructed from the actual * name of an axis to which ``_increment_set`` has been appended. * The value of this optional field is the intended average range through which * the corresponding axis moves during the exposure of a frame. Ideally, the * value of this field added to each value of ``AXISNAME`` would agree with the * corresponding values of ``AXISNAME_end``, but there is a possibility of significant * differences. Use of ``AXISNAME_end`` is recommended. *

* Units: NX_TRANSFORMATION * Type: NX_NUMBER *

* * @return a map from node names to the ? extends IDataset for that node. */ public Map getAllAXISNAME_increment_set(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy