Tatooine
autonomous_particle.h
Go to the documentation of this file.
1#ifndef TATOOINE_FLOWEXPLORER_NODES_AUTONOMOUS_PARTICLE_H
2#define TATOOINE_FLOWEXPLORER_NODES_AUTONOMOUS_PARTICLE_H
3//==============================================================================
8//==============================================================================
10//==============================================================================
12 renderable<autonomous_particle> {
19 //============================================================================
25
26
32 std::array<GLfloat, 4> m_ellipses_color{0.0f, 0.0f, 0.0f, 1.0f};
35 bool m_stop_thread = false;
36 int m_num_splits = 3;
37 std::vector<vec_t> m_points_on_initial_circle;
40 // phong_shader m_phong_shader;
41 // int m_integral_curve_width = 1;
42 // std::array<GLfloat, 4> m_integral_curve_color{0.0f, 0.0f, 0.0f, 1.0f};
44 // autonomous_particle(autonomous_particle const&) = default;
45 // autonomous_particle(autonomous_particle&&) noexcept = default;
47 // auto operator=(autonomous_particle const&)
48 // -> autonomous_particle& = default;
49 // auto operator=(autonomous_particle&&) noexcept
50 // -> autonomous_particle& = default;
51 //============================================================================
53 //============================================================================
54 void render(mat4f const& projection_matrix,
55 mat4f const& view_matrix) final;
56 //----------------------------------------------------------------------------
57 private:
58 void advect();
59
60 public:
61 //----------------------------------------------------------------------------
62 auto draw_properties() -> bool final;
63 //----------------------------------------------------------------------------
64 auto is_transparent() const -> bool final;
65 //----------------------------------------------------------------------------
66 auto on_pin_connected(ui::input_pin& this_pin, ui::output_pin& other_pin)
67 -> void final;
68 //----------------------------------------------------------------------------
69 auto update(std::chrono::duration<real_type> const& /*dt*/) -> void override {
71 advect();
72 }
73 }
74 auto update_initial_circle() -> void;
75 auto on_property_changed() -> void override;
76 auto generate_points_in_initial_circle(size_t const n) -> void;
79};
80//==============================================================================
81} // namespace tatooine::flowexplorer::nodes
82//==============================================================================
85 TATOOINE_REFLECTION_INSERT_METHOD(t0, m_t0),
86 TATOOINE_REFLECTION_INSERT_METHOD(radius, m_radius),
87 TATOOINE_REFLECTION_INSERT_METHOD(tau_step, m_taustep),
88 TATOOINE_REFLECTION_INSERT_METHOD(end_time, m_max_t),
89 TATOOINE_REFLECTION_INSERT_METHOD(ellipses_color, m_ellipses_color),
90 TATOOINE_REFLECTION_INSERT_METHOD(num_splits, m_num_splits))
91#endif
Definition: indexeddata.h:13
Definition: vertexbuffer.h:22
TATOOINE_FLOWEXPLORER_REGISTER_RENDERABLE(tatooine::flowexplorer::nodes::aabb2d, TATOOINE_REFLECTION_INSERT_GETTER(min), TATOOINE_REFLECTION_INSERT_GETTER(max), TATOOINE_REFLECTION_INSERT_GETTER(line_width), TATOOINE_REFLECTION_INSERT_GETTER(line_color))
Definition: abcflow.h:7
Definition: autonomous_particle.h:30
Real real_type
Definition: autonomous_particle.h:45
Definition: autonomous_particle.h:12
auto on_pin_connected(ui::input_pin &this_pin, ui::output_pin &other_pin) -> void final
auto update(std::chrono::duration< real_type > const &) -> void override
Definition: autonomous_particle.h:69
int m_num_splits
Definition: autonomous_particle.h:36
std::vector< vec_t > m_points_on_initial_circle
Definition: autonomous_particle.h:37
real_type m_taustep
Definition: autonomous_particle.h:20
gl::indexeddata< gpu_vec3 > m_pathlines
Definition: autonomous_particle.h:31
real_type m_t0
Definition: autonomous_particle.h:24
gl::indexeddata< gpu_vec3 > m_gpu_advected_points_on_initial_circle
Definition: autonomous_particle.h:39
void render(mat4f const &projection_matrix, mat4f const &view_matrix) final
vectorfield_t * m_v
Definition: autonomous_particle.h:27
vec< real_type, 2 > * m_x0
Definition: autonomous_particle.h:23
gl::indexeddata< gpu_vec3 > m_initial_circle
Definition: autonomous_particle.h:28
real_type m_radius
Definition: autonomous_particle.h:22
gl::indexeddata< gpu_vec3 > m_advected_ellipses
Definition: autonomous_particle.h:29
bool m_stop_thread
Definition: autonomous_particle.h:35
std::vector< vec_t > m_advected_points_on_initial_circle
Definition: autonomous_particle.h:38
real_type m_max_t
Definition: autonomous_particle.h:21
std::array< GLfloat, 4 > m_ellipses_color
Definition: autonomous_particle.h:32
bool m_needs_another_update
Definition: autonomous_particle.h:34
auto generate_points_in_initial_circle(size_t const n) -> void
gl::indexeddata< gpu_vec3 > m_initial_ellipses_back_calculation
Definition: autonomous_particle.h:30
bool m_currently_advecting
Definition: autonomous_particle.h:33
Definition: renderable.h:42
Definition: scene.h:17
Definition: mat.h:14
Definition: field.h:13
Definition: vec.h:12