General transforms can represent linear transforms, non-linear (via thin-plate splines) transforms, user defined transforms, and concatenations of these. All functions dealing with general transforms involve objects of type General_transform.
public void create_linear_transform(
General_transform *transform,
Transform *linear_transform )
public void create_thin_plate_transform(
General_transform *transform,
int n_dimensions,
int n_points,
float **points,
float **displacements )
public void get_nonlinear_warp(
float **transformed_points,
float **original_points,
float **displacements,
int n_points,
int n_dimensions )
typedef void (*User_transform_function)( void *user_data,
Real x,
Real y,
Real z,
Real *x_trans,
Real *y_trans,
Real *z_trans );
public void create_user_transform(
General_transform *transform,
void *user_data,
size_t size_user_data,
User_transform_function transform_function,
User_transform_function inverse_transform_function )
public void delete_general_transform(
General_transform *transform )
public Transform_types get_transform_type(
General_transform *transform )
public Transform *get_linear_transform_ptr(
General_transform *transform )
public void concat_general_transforms(
General_transform *first,
General_transform *second,
General_transform *result )
public int get_n_concated_transforms(
General_transform *transform )
public General_transform *get_nth_general_transform(
General_transform *transform,
int n )