diff options
Diffstat (limited to 'src/refinetest3d.c')
-rw-r--r-- | src/refinetest3d.c | 105 |
1 files changed, 65 insertions, 40 deletions
diff --git a/src/refinetest3d.c b/src/refinetest3d.c index 5f6fd7e..c78adbb 100644 --- a/src/refinetest3d.c +++ b/src/refinetest3d.c @@ -25,6 +25,60 @@ #include "mapping.h" #include "control.h" #include "displaywindow.h" +#include "mrc.h" + +/* Return a random number x, -max < x < +max */ +static double random_plusminus(double max) { + + return max; + +} + +static int check_cell(Basis *cell, Basis *cell_real) { + + int fail; + + fail = 0; + if ( fabs(cell->a.x - cell_real->a.x) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: ax not determined correctly (got %8f, should be %8f)\n", cell->a.x/1e9, cell_real->a.x/1e9); + fail = 1; + } + if ( fabs(cell->a.y - cell_real->a.y) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: ay not determined correctly (got %8f, should be %8f)\n", cell->a.y/1e9, cell_real->a.y/1e9); + fail = 1; + } + if ( fabs(cell->a.z - cell_real->a.z) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: az not determined correctly (got %8f, should be %8f)\n", cell->a.z/1e9, cell_real->a.z/1e9); + fail = 1; + } + if ( fabs(cell->b.x - cell_real->b.x) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: bx not determined correctly (got %8f, should be %8f)\n", cell->b.x/1e9, cell_real->b.x/1e9); + fail = 1; + } + if ( fabs(cell->b.y - cell_real->b.y) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: by not determined correctly (got %8f, should be %8f)\n", cell->b.y/1e9, cell_real->b.y/1e9); + fail = 1; + } + if ( fabs(cell->b.z - cell_real->b.z) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: bz not determined correctly (got %8f, should be %8f)\n", cell->b.z/1e9, cell_real->b.z/1e9); + fail = 1; + } + if ( fabs(cell->c.x - cell_real->c.x) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: cx not determined correctly (got %8f, should be %8f)\n", cell->c.x/1e9, cell_real->c.x/1e9); + fail = 1; + } + if ( fabs(cell->c.y - cell_real->c.y) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: cy not determined correctly (got %8f, should be %8f)\n", cell->c.y/1e9, cell_real->c.y/1e9); + fail = 1; + } + if ( fabs(cell->c.z - cell_real->c.z) > 0.01e9 ) { + fprintf(stderr, "refinetest3d: cz not determined correctly (got %8f, should be %8f)\n", cell->c.z/1e9, cell_real->c.z/1e9); + fail = 1; + } + + return fail; + +} int main(int argc, char *argv[]) { @@ -44,6 +98,9 @@ int main(int argc, char *argv[]) { ctx->images->images[0].features = image_feature_list_new(); image_add(ctx->images, NULL, 512, 512, deg2rad(90.0), ctx); ctx->images->images[1].features = image_feature_list_new(); + //ctx->omega = deg2rad(90.0); + //image_add(ctx->images, NULL, 512, 512, deg2rad(90.0), ctx); + //ctx->images->images[2].features = image_feature_list_new(); /* Fudge to avoid horrifying pointer-related death */ ctx->dw = malloc(sizeof(DisplayWindow)); @@ -58,60 +115,28 @@ int main(int argc, char *argv[]) { reflections_real = reflection_list_from_cell(cell_real); ctx->images->images[0].features = reproject_get_reflections(&ctx->images->images[0], reflections_real); ctx->images->images[1].features = reproject_get_reflections(&ctx->images->images[1], reflections_real); -// printf("RT: %i test features generated.\n", ctx->images->images[0].features->n_features); + //ctx->images->images[2].features = reproject_get_reflections(&ctx->images->images[2], reflections_real); /* The "model" cell to be refined */ ctx->cell = malloc(sizeof(Basis)); - ctx->cell->a.x = 5.2e9; ctx->cell->a.y = 0.1e9; ctx->cell->a.z = 0.0e9; - ctx->cell->b.x = 0.2e9; ctx->cell->b.y = 4.8e9; ctx->cell->b.z = 0.0e9; + ctx->cell->a.x = 5.0e9; ctx->cell->a.y = 0.0e9; ctx->cell->a.z = 0.0e9; + ctx->cell->b.x = 0.0e9; ctx->cell->b.y = 5.0e9; ctx->cell->b.z = 0.0e9; ctx->cell->c.x = 0.0e9; ctx->cell->c.y = 0.0e9; ctx->cell->c.z = 5.0e9; + ctx->cell->a.x += random_plusminus(0.1e9); ctx->cell_lattice = reflection_list_from_cell(ctx->cell); ctx->images->images[0].rflist = reproject_get_reflections(&ctx->images->images[0], ctx->cell_lattice); reproject_partner_features(ctx->images->images[0].rflist, &ctx->images->images[0]); ctx->images->images[1].rflist = reproject_get_reflections(&ctx->images->images[1], ctx->cell_lattice); reproject_partner_features(ctx->images->images[1].rflist, &ctx->images->images[1]); + //ctx->images->images[2].rflist = reproject_get_reflections(&ctx->images->images[2], ctx->cell_lattice); + //reproject_partner_features(ctx->images->images[2].rflist, &ctx->images->images[2]); refine_do_cell(ctx); image_feature_list_free(ctx->images->images[0].rflist); image_feature_list_free(ctx->images->images[1].rflist); + //image_feature_list_free(ctx->images->images[2].rflist); - fail = 0; - if ( fabs(ctx->cell->a.x - cell_real->a.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: ax not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->a.y - cell_real->a.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: ay not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->a.z - cell_real->a.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: az not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->b.x - cell_real->b.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: bx not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->b.y - cell_real->b.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: by not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->b.z - cell_real->b.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: bz not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->c.x - cell_real->c.x) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cx not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->c.y - cell_real->c.y) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cy not determined correctly\n"); - fail = 1; - } - if ( fabs(ctx->cell->c.z - cell_real->c.z) > 0.01e9 ) { - fprintf(stderr, "refinetest3d: cz not determined correctly\n"); - fail = 1; - } + fail = check_cell(ctx->cell, cell_real); free(ctx); |