From 3de68f4c20ce5204a0959e0b1a52d5dfe9e192e8 Mon Sep 17 00:00:00 2001
From: Nicola Vigano <nicola.vigano@esrf.fr>
Date: Wed, 8 Apr 2015 17:31:10 +0200
Subject: [PATCH] 6D-Reconstruction: add possibility to manually restrict
 orientation space

Signed-off-by: Nicola Vigano <nicola.vigano@esrf.fr>
---
 5_reconstruction/gtReconstructGrainOrientation.m | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/5_reconstruction/gtReconstructGrainOrientation.m b/5_reconstruction/gtReconstructGrainOrientation.m
index 9f1db7a0..b21a9e8c 100644
--- a/5_reconstruction/gtReconstructGrainOrientation.m
+++ b/5_reconstruction/gtReconstructGrainOrientation.m
@@ -1,4 +1,4 @@
-function gtReconstructGrainOrientation(grainID, phaseID, parameters)
+function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_bb)
 % gtReconstructGrainOrientation  6D reconstructions on a GPU machine
 %     gtAstraReconstructGrain(grainID, phaseID, [parameters])
 %     -------------------------------------------------------
@@ -24,7 +24,13 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters)
     rec_opts = gtReconstruct6DGetParamenters(parameters);
 
     sampler = GtOrientationSampling(parameters, gr);
-    sampler.make_simple_grid_estim_ODF('cubic', rec_opts.grid_edge, false, rec_opts.ospace_oversize);
+    if (~exist('rel_ospace_bb', 'var') || isempty(rel_ospace_bb))
+        sampler.make_simple_grid_estim_ODF('cubic', rec_opts.grid_edge, false, rec_opts.ospace_oversize);
+    else
+        diff_r_vecs = tand(rel_ospace_bb / 2);
+        ospace_bb = [gr.R_vector + diff_r_vecs(1:3); gr.R_vector + diff_r_vecs(4:6)];
+        sampler.make_even_simple_grid('cubic', rec_opts.grid_edge, ospace_bb', 1)
+    end
     if (rec_opts.super_sampling > 1)
         sampler.make_supersampling_simple_grid([1 2 3], rec_opts.super_sampling);
     end
@@ -41,9 +47,11 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters)
         fprintf('\b\b: Done (%f seconds).\n', toc(c))
     end
 
+    or_sizes = sampler.get_orientation_sampling_size();
+
     [avg_R_vecs, avg_R_vecs_int] = sampler.getAverageOrientations(vols, good_or);
     avg_R_vec = sampler.getAverageOrientation(vols, good_or);
-    s_g_odf = reshape(sampler.getODF(vols, good_or), rec_opts.grid_edge([1 1 1]));
+    s_g_odf = reshape(sampler.getODF(vols, good_or), or_sizes{1});
 
     vol_size = size(avg_R_vecs_int);
     shift = gtFwdSimComputeVolumeShifts(gr.proj, parameters, vol_size);
-- 
GitLab