17#ifndef __dwi_tractography_algorithms_nulldist_h__
18#define __dwi_tractography_algorithms_nulldist_h__
31 namespace Tractography
51 sin_max_angle_1o = std::sin (max_angle_1o);
52 properties[
"method"] =
"Nulldist1";
54 float sin_max_angle_1o;
63 bool init()
override {
75 pos +=
S.step_size * dir;
79 float get_metric (
const Eigen::Vector3f&,
const Eigen::Vector3f&)
override {
return uniform(
rng); }
93 class Shared :
public iFOD2::Shared {
MEMALIGN(Shared)
96 iFOD2::Shared (diff_path, property_set)
99 properties[
"method"] =
"Nulldist2";
119 bool init()
override {
137 if (!act().fetch_tissue_data (
positions[
S.num_samples - 1]))
147 void reverse_track()
override
150 MethodBase::reverse_track();
153 void truncate_track (
GeneratedTrack& tck,
const size_t length_to_revert_from,
const size_t revert_step)
override
155 iFOD2::truncate_track (tck, length_to_revert_from, revert_step);
159 float get_metric (
const Eigen::Vector3f&,
const Eigen::Vector3f&)
override {
return uniform(
rng); }
Eigen::Vector3f rand_dir(const Eigen::Vector3f &d)
Interpolator< Image< float > >::type source
Interpolator< Image< float > >::type source
vector< Eigen::Vector3f > tangents
vector< Eigen::Vector3f > positions
FORCE_INLINE Eigen::Vector3f rand_dir(const Eigen::Vector3f &d)
void get_path(vector< Eigen::Vector3f > &positions, vector< Eigen::Vector3f > &tangents, const Eigen::Vector3f &end_dir) const
std::uniform_real_distribution< float > uniform
Eigen::Vector3f random_direction()
constexpr float angle_ifod1
constexpr float stepsize_voxels_firstorder
constexpr float stepsize_voxels_rk4
thread_local Math::RNG rng
thread-local, but globally accessible RNG to vastly simplify multi-threading