aboutsummaryrefslogtreecommitdiff
path: root/tests/transformation_check.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2012-09-12 17:57:38 +0200
committerThomas White <taw@physics.org>2012-10-02 15:02:12 +0200
commit5911a4b627e1c6676c5522a8ecd61a2a834f544e (patch)
tree42688436ac89c0f37b13d5bff97fb9e84b0a5e64 /tests/transformation_check.c
parentbf986af745b88ddd0c1309c3af03d06165a6c95f (diff)
More work on transformations
Diffstat (limited to 'tests/transformation_check.c')
-rw-r--r--tests/transformation_check.c75
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;
+}