<<<<<<<<<<<<<<<<<

register_display_data(display)Displayregister_display_data(display)

NAME

register_display_data - register points in a source display data with a target display data

DESCRIPTION

Performs a rigid body registration of a source display data to a target display data. The resulting transformation is applied to a specified actor. Only orientation and translation are calculated. Corresponding points in the source and target display datas are registered. This means the order of points in the display datas is critical. If the number of points in the source and target are not the same, the minimum of the two is used for registration.

NOTE: currently, only the first 100 points in the display data are used for the registration.

SUPERCLASS

display_filter

INSTANCE VARIABLES

source is a display data containing points to be registered to the target.

target is a display data containing target points.

actor is an actor that will receive the transformation.

threshold is an absolute measure used to control the iterative loop. The loop will continue until the root mean square error is less than this value, or, the number of iterations is exceeded.

precision is an absolute measure on the difference between the last iteration's solution and the current iteration. If this difference is less than precision, a saddle point is detected in in the minimization.

iterations is an upper bound on the number of iterations.

MESSAGES

register!tick! do! calculates the rotation and translation that will register the source display data and the target display data. Applies the transformation to the actor.

EXAMPLE

/* Illustrate registration */ /* In: scripts/display/register_display_data.scr */

/* create some points */

display_data new: data1 points=( 0,0,0, 0,1,0, 0,0,1, 0,1,1);

/* data2 will contain transformed points from data1 */ display_data new: data2;

/* a transformation filter to test the process */ transform_filter new: trans1 data_in=data1 data_out=data2 ;

/* setup a registration */ register_display_data new: rdd source=data1 target=trans1 actor=bill threshold=0 precision=0 ;

/* a guy to transform */ actor new: bill;

/* register data1 with data2 */ trans1 position+ (5, 10, 15) rotate_z:30 rotate_x: 10 rotate_y: 20 ;

/* do the registration */ rdd tick!;

/* check the position and orientation */ trans1 print: (orientation, position); bill print: (orientation, position);

SEE ALSO

actor, display_data


Please send comments and suggestions to
consult@rpi.edu