#include "interpolatedistances.h" #include "../workers/workerbase.h" #include "../workers/interpolation/distance.h" #include "../workers/interpolation/trustfactor.h" #include "../workers/interpolation/zaverage.h" InterpolateDistances::InterpolateDistances(std::vector& sets, Method method, Settings settings, lvox::Logger* logger) : _sets(sets), _method(method), _settings(settings), _logger(logger) { } void InterpolateDistances::compute() { std::vector workerPool; for (auto& set : _sets) { WorkerBase * worker; switch(_method) { case Method::Trust: worker = new TrustFactor(set.DensityIn, set.Nb, set.Nt, set.DensityOut, _settings.InterpolateRadius, _settings.TrustLowThreshold, _settings.TrustHighThreshold, _logger); break; case Method::Distance: worker = new Distance(set.DensityIn, set.DensityOut, _settings.InterpolateRadius, _settings.InterpolatePower, _settings.InterpolateDensityThreshold, _logger); break; case Method::ZAverage: worker = new ZAverage(set.DensityIn, set.DensityOut, _settings.EffectiveRayThresh, _settings.NumZCalculatedOn, _logger); break; } workerPool.push_back(worker); } // TODO parallel for(auto worker : workerPool) worker->run(); }