Definition at line 114 of file IPositionBuilder.h.
◆ RadialParacrystalPositionBuilder()
Definition at line 214 of file IPositionBuilder.cpp.
InterferenceFunctionRadialParaCrystal * clone() const final
Returns a clone of this ISampleNode object.
std::unique_ptr< InterferenceFunctionRadialParaCrystal > m_iff
◆ ~RadialParacrystalPositionBuilder()
RadialParacrystalPositionBuilder::~RadialParacrystalPositionBuilder |
( |
| ) |
|
|
overridedefault |
◆ generatePositions()
std::vector< std::vector< double > > IPositionBuilder::generatePositions |
( |
double |
layer_size, |
|
|
double |
density = 0.0 |
|
) |
| const |
|
inherited |
Definition at line 28 of file IPositionBuilder.cpp.
35 std::random_device rd;
36 std::mt19937 gen(rd());
37 std::normal_distribution<double> dis(0.0, std::sqrt(pos_var));
38 for (
auto& position : positions) {
39 for (
auto& coordinate : position)
40 coordinate += dis(gen);
virtual std::vector< std::vector< double > > generatePositionsImpl(double layer_size, double density=0.0) const =0
virtual double positionVariance() const =0
References IPositionBuilder::generatePositionsImpl(), and IPositionBuilder::positionVariance().
◆ generatePositionsImpl()
std::vector< std::vector< double > > RadialParacrystalPositionBuilder::generatePositionsImpl |
( |
double |
layer_size, |
|
|
double |
density = 0.0 |
|
) |
| const |
|
overrideprivatevirtual |
Implements IPositionBuilder.
Definition at line 223 of file IPositionBuilder.cpp.
225 std::vector<std::vector<double>> lattice_positions;
227 double distance =
m_iff->peakDistance();
231 int n = distance <= 0.0 ? 1 :
static_cast<int>(layer_size * std::sqrt(2.0) / distance);
233 lattice_positions.resize(
static_cast<size_t>(2 * n + 1));
234 for (
auto& it : lattice_positions) {
238 lattice_positions[0][0] = 0.0;
239 lattice_positions[0][1] = 0.0;
241 for (
int i = 1; i <= n; ++i) {
243 unsigned i_left =
static_cast<unsigned>(std::max(0, 2 * i - 3));
245 double offset =
m_iff->randomSample();
246 lattice_positions[
static_cast<size_t>(2 * i - 1)][0] =
247 lattice_positions[i_left][0] + distance + offset;
248 lattice_positions[
static_cast<size_t>(2 * i - 1)][1] = 0.0;
251 unsigned i_right =
static_cast<unsigned>(2 * (i - 1));
253 offset =
m_iff->randomSample();
254 lattice_positions[
static_cast<size_t>(2 * i)][0] =
255 lattice_positions[i_right][0] - distance + offset;
256 lattice_positions[
static_cast<size_t>(2 * i)][1] = 0.0;
258 return lattice_positions;
References m_iff.
◆ positionVariance()
double RadialParacrystalPositionBuilder::positionVariance |
( |
| ) |
const |
|
overrideprivatevirtual |
◆ m_iff
The documentation for this class was generated from the following files: