From 5911a4b627e1c6676c5522a8ecd61a2a834f544e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Wed, 12 Sep 2012 17:57:38 +0200 Subject: More work on transformations --- tests/centering_check.c | 3 +- tests/transformation_check.c | 75 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 tests/transformation_check.c (limited to 'tests') diff --git a/tests/centering_check.c b/tests/centering_check.c index bfee2806..eca67c85 100644 --- a/tests/centering_check.c +++ b/tests/centering_check.c @@ -70,7 +70,8 @@ static int check_centering(double a, double b, double c, UnitCellTransformation *t; int fail = 0; - STATUS("Checking %s %c (ua %c) %5.2e %5.2e %5.2e %5.2f %5.2f %5.2f\n", + STATUS(" ---------------> " + "Checking %s %c (ua %c) %5.2e %5.2e %5.2e %5.2f %5.2f %5.2f\n", str_lattice(latt), cen, ua, a, b, c, al, be, ga); cell = cell_new_from_parameters(a, b, c, 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 + * + * 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 . + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include +#include +#include + +#include +#include + + +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; +} -- cgit v1.2.3