diff options
author | Thomas White <taw@physics.org> | 2012-09-12 17:57:38 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-10-02 15:02:12 +0200 |
commit | 5911a4b627e1c6676c5522a8ecd61a2a834f544e (patch) | |
tree | 42688436ac89c0f37b13d5bff97fb9e84b0a5e64 /tests/transformation_check.c | |
parent | bf986af745b88ddd0c1309c3af03d06165a6c95f (diff) |
More work on transformations
Diffstat (limited to 'tests/transformation_check.c')
-rw-r--r-- | tests/transformation_check.c | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/transformation_check.c b/tests/transformation_check.c new file mode 100644 index 00000000..771e44fe --- /dev/null +++ b/tests/transformation_check.c @@ -0,0 +1,75 @@ +/* + * transformation_check.c + * + * Check that unit cell transformations work + * + * Copyright © 2012 Thomas White <taw@physics.org> + * + * This file is part of CrystFEL. + * + * CrystFEL is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * CrystFEL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with CrystFEL. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + + +#include <stdlib.h> +#include <stdio.h> +#include <stdarg.h> + +#include <cell.h> +#include <cell-utils.h> + + +int main(int argc, char *argv[]) +{ + int fail = 0; + UnitCell *cell, *cnew, *cback; + UnitCellTransformation *tfn, *inv; + + cell = cell_new_from_parameters(50e-10, 55e-10, 70e-10, + deg2rad(67.0), + deg2rad(70.0), + deg2rad(77.0)); + if ( cell == NULL ) return 1; + + tfn = tfn_identity(); + if ( tfn == NULL ) return 1; + + tfn_combine(tfn, tfn_vector(0,1,0), + tfn_vector(1,0,0), + tfn_vector(0,0,1)); + + + cell_print(cell); + tfn_print(tfn); + + cnew = cell_transform(cell, tfn); + cell_print(cnew); + + cback = cell_transform_inverse(cnew, tfn); + inv = tfn_inverse(tfn); + tfn_print(inv); + cell_print(cback); + + cell_get_cartesian(cell, &ax1, &ay1, &az1, + &by1, &by1, &bz1, + &cx1, &cy1, &cz1); + cell_get_cartesian(cback, &ax, &ay, &az, &by, &by, &bz, &cx, &cy, &cz); + + return fail; +} |