Ruler

DESCRIPTION

This module allows the user to sample data from a lattice at a specified set of lookup points. The points are arranged in a straight line through the coordinate space of the input lattice, and the user only has to specify the first and last points, and the number of points along the line. Ruler then calculates the coordinates of the other points and performs the interpolation at them.

The interpolation method is based on the Iris Explorer lookup table API routines cxLookupCreate & cxLookupInterpV. The data values are generated using linear interpolation.

You can specify the end points of the interpolation line in two ways:

1) By 'picking'. Display the lattice (or a portion of it) with the Render module, and switch Render into 'user pick mode'. Then use the LEFT mouse button to specify the first point, and the MIDDLE mouse button to specify the last point.

2) By using the dial widgets to set the starting and ending X and Y points. There will be dials for Z coordinates too, if the input lattice is 3-D.

The output is a 1-D uniform lattice of the same primitive type as, and containing the same number of data channels as, the input lattice. This lattice contains the data values sampled from the input lattice along the interpolation line between the specified end points, and its coordinate is

Geometry is also output in the form of a line and two markers showing where the interpolation has taken place in the input lattice.

By default, when a new lattice is passed to the module, the endpoints are set to some suitable default values, based on the limits of the coordinates of the lattice. The module isn't very smart at choosing good values for curvilinear lattices, and so this first path may give it some problems (see below).

INPUTS

Port: Input Lattice
Type: Lattice
Constraints: 2..3-D.
The lattice from which you wish to sample data. It may be 2 or 3 dimensional and have data and coordinates of any type. There may, however, be problems with curvilinear lattices (see below).

Do not connect more than one input lattice to the module at one time.

Port: Pick Points
Type: Pick
Optional: This port is optional
Input pick data (e.g. from Render) which is used to define the start and end points of the interpolation. Although the module fires for all types of pick events, it only updates the end points for button down pick events. For each pick event, the module ignores any hits that originate from the ruler geometry itself.

WIDGETS

Port: Number Of Points
Type: Slider
The number of points in total that you wish to interpolate at. The minimum value is 3 - i.e., the start and end of the interpolation, and one point in between.

Port: X Start
Type: Dial
X coordinate of the first point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: Y Start
Type: Dial
Y coordinate of the first point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: Z Start
Type: Dial
Z coordinate of the first point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: X End
Type: Dial
X coordinate of the last point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: Y End
Type: Dial
Y coordinate of the last point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: Z End
Type: Dial
Z coordinate of the last point in the interpolation, measured in the same units as the coordinates of the input lattice.

Port: Radius
Type: Dial
This is used to set the radius of the endpoint markers. It is automatically set to a default value depending on the dimensions and coordinates of the lattice.

OUTPUTS

Port: Interpolated Data
Type: Lattice
Constraints: 1-D.
uniform.
Values from the input lattice at the specified interpolation points. Its coordinate is the distance along the interpolation path, measured from the starting point, in the same units as the coordinates of the input lattice.

Port: Ruler
Type: Geometry
Geometry of the interpolation path. The line connects the two points; the marker for the start point is a cylinder, and that for the end point is a cone. The direction of this arrow is that along which the coordinate of the output lattice increases. The length of each marker is always one tenth of the total length of the line; their radius can be controlled interactively (see above).

PROBLEMS

All of the points on the interpolation path must lie within the coordinate space of the input lattice. The module will detect any that don't and issue a warning message. This problem may arise more often with curvilinear lattices, since it can often be difficult to specify points within their coordinate space (particularly when using the dials). In particular, the default interpolation path chosen by the module when it receives a new lattice may be partially (or even wholly) outside the lattice. In these cases, the solution is simply to select the endpoints again (probably using picking).

If you have more than one object displayed in the Render window (or whatever you are using to extract the pick information), it is quite possible that you will pick on a point that does not actually come from the lattice that is connected to Ruler. Ruler will accept the pick, as it is a valid coordinate point, but if it or any of the other points lie outside of the input lattice's coordinate space, then domain misses will occur during the interpolation. Error messages will be sent to stderr.

SEE ALSO

Pointer Render
[ Documentation Home ]
© The Numerical Algorithms Group Ltd, Oxford UK. 1996