Dynamic Neural Field Composer 0.0.0
A C++20 library and interactive application for building and simulating Dynamic Neural Field (DNF) architectures.
Loading...
Searching...
No Matches
gauss_stimulus_2d.h
Go to the documentation of this file.
1#pragma once
2
3#include <cmath>
4#include <sstream>
5#include <iomanip>
6
7#include "tools/math.h"
8#include "element.h"
9
11{
13 {
14 double width; // isotropic sigma
15 double amplitude;
16 double position_x;
17 double position_y;
20
21 explicit GaussStimulus2DParameters(double width = 5.0, double amplitude = 15.0,
22 double position_x = 50.0, double position_y = 50.0,
23 bool circular = true, bool normalized = false)
27 {}
28
29 bool operator==(const GaussStimulus2DParameters& other) const
30 {
31 constexpr double epsilon = 1e-6;
32 return std::abs(width - other.width) < epsilon &&
33 std::abs(amplitude - other.amplitude) < epsilon &&
34 std::abs(position_x - other.position_x) < epsilon &&
35 std::abs(position_y - other.position_y) < epsilon &&
36 circular == other.circular &&
37 normalized == other.normalized;
38 }
39
40 [[nodiscard]] std::string toString() const override
41 {
42 std::ostringstream result;
43 result << std::fixed << std::setprecision(2);
44 result << "Parameters: ["
45 << "Width: " << width << ", "
46 << "Amplitude: " << amplitude << ", "
47 << "Position x: " << position_x << ", "
48 << "Position y: " << position_y << ", "
49 << "Circular: " << (circular ? "true" : "false") << ", "
50 << "Normalized: " << (normalized ? "true" : "false") << "]";
51 return result.str();
52 }
53 };
54
55 class GaussStimulus2D final : public Element
56 {
57 private:
59 public:
60 GaussStimulus2D(const ElementCommonParameters& elementCommonParameters,
61 const GaussStimulus2DParameters& parameters);
62
63 void init() override;
64 void step(double t, double deltaT) override;
65 std::string toString() const override;
66 std::shared_ptr<Element> clone() const override;
67
68 void setParameters(const GaussStimulus2DParameters& parameters);
70 };
71}
Abstract base class for all simulation elements.
Definition element.h:28
Definition gauss_stimulus_2d.h:56
void setParameters(const GaussStimulus2DParameters &parameters)
Definition gauss_stimulus_2d.cpp:98
void step(double t, double deltaT) override
Advance the element by one time step.
Definition gauss_stimulus_2d.cpp:81
void init() override
Initialize the element (called once before the simulation loop).
Definition gauss_stimulus_2d.cpp:25
std::shared_ptr< Element > clone() const override
Definition gauss_stimulus_2d.cpp:93
std::string toString() const override
Definition gauss_stimulus_2d.cpp:85
GaussStimulus2DParameters getParameters() const
Definition gauss_stimulus_2d.cpp:104
Definition element_parameters.h:10
Definition element_parameters.h:188
Definition element_parameters.h:206
Definition gauss_stimulus_2d.h:13
bool operator==(const GaussStimulus2DParameters &other) const
Definition gauss_stimulus_2d.h:29
double position_y
Definition gauss_stimulus_2d.h:17
bool circular
Definition gauss_stimulus_2d.h:18
bool normalized
Definition gauss_stimulus_2d.h:19
double position_x
Definition gauss_stimulus_2d.h:16
double amplitude
Definition gauss_stimulus_2d.h:15
double width
Definition gauss_stimulus_2d.h:14
std::string toString() const override
Definition gauss_stimulus_2d.h:40
GaussStimulus2DParameters(double width=5.0, double amplitude=15.0, double position_x=50.0, double position_y=50.0, bool circular=true, bool normalized=false)
Definition gauss_stimulus_2d.h:21