From 5b80956a2e456f445d2811b27a167908dbc812bd Mon Sep 17 00:00:00 2001
From: Nicola Vigano <nicola.vigano@esrf.fr>
Date: Tue, 8 Nov 2016 15:46:49 +0100
Subject: [PATCH] 6D-Reconstruction: added code path to specify
 ospace-resolution on single grain reconstructions

Signed-off-by: Nicola Vigano <nicola.vigano@esrf.fr>
---
 .../gtReconstructGrainOrientation.m             | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/5_reconstruction/gtReconstructGrainOrientation.m b/5_reconstruction/gtReconstructGrainOrientation.m
index 36a327d5..e1a18209 100644
--- a/5_reconstruction/gtReconstructGrainOrientation.m
+++ b/5_reconstruction/gtReconstructGrainOrientation.m
@@ -1,4 +1,4 @@
-function gtReconstructGrainOrientation(grain_id, phase_id, parameters, rel_ospace_bb)
+function gtReconstructGrainOrientation(grain_id, phase_id, parameters, varargin)
 % gtReconstructGrainOrientation  6D reconstructions on a GPU machine
 %     gtAstraReconstructGrain(grainID, phaseID, [parameters])
 %     -------------------------------------------------------
@@ -6,6 +6,11 @@ function gtReconstructGrainOrientation(grain_id, phase_id, parameters, rel_ospac
         parameters = gtLoadParameters();
     end
 
+    conf = struct( ...
+        'ospace_resolution', [], ...
+        'ospace_lims', [] );
+    [conf, ~] = parse_pv_pairs(conf, varargin);
+
     rec_opts = gtReconstruct6DGetParamenters(parameters);
 
     sample = GtSample.loadFromFile();
@@ -31,15 +36,19 @@ function gtReconstructGrainOrientation(grain_id, phase_id, parameters, rel_ospac
     if (is_extended)
         bb_ors = gr.bb_ors;
         ospace_bb = cat(1, bb_ors(:).R_vector);
-    elseif (exist('rel_ospace_bb', 'var') && ~isempty(rel_ospace_bb))
-        diff_r_vecs = tand(rel_ospace_bb / 2);
+    elseif (~isempty(conf.ospace_lims))
+        diff_r_vecs = tand(conf.ospace_lims / 2);
         ospace_bb = [gr.R_vector + diff_r_vecs(1:3); gr.R_vector + diff_r_vecs(4:6)];
     end
 
     sampler = GtOrientationSampling(parameters, gr);
     if (exist('ospace_bb', 'var') && ~isempty(ospace_bb))
 %         sampler.make_simple_grid('cubic', rec_opts.grid_edge, ospace_bb', 1)
-        sampler.make_even_simple_grid('cubic', rec_opts.grid_edge, ospace_bb', 1)
+        if (~isempty(conf.ospace_resolution))
+            sampler.make_res_simple_grid('cubic', conf.ospace_resolution, ospace_bb', rec_opts.ospace_oversize);
+        else
+            sampler.make_even_simple_grid('cubic', rec_opts.grid_edge, ospace_bb', 1)
+        end
     else
         sampler.make_simple_grid_estim_ODF('cubic', rec_opts.grid_edge, false, rec_opts.ospace_oversize);
     end
-- 
GitLab