128 const glm::vec3& bounds_min = glm::vec3(-1.0F),
129 const glm::vec3& bounds_max = glm::vec3(1.0F),
133 void reset()
override;
134 void process_batch(
unsigned int num_samples)
override;
135 void set_topology(
Topology topology)
override;
146 const glm::vec3& bounds_min,
147 const glm::vec3& bounds_max,
150 [[nodiscard]]
size_t get_node_count()
const override;
151 [[nodiscard]] std::optional<double> get_node_output(
size_t index)
const override;
152 [[nodiscard]] std::unordered_map<std::string, std::string> get_metadata()
const override;
158 void set_vertices(
const std::vector<LineVertex>& vertices);
171 void apply_color_gradient(
const glm::vec3& start_color,
const glm::vec3& end_color);
179 void apply_radial_gradient(
180 const glm::vec3& center_color,
181 const glm::vec3& edge_color,
182 const glm::vec3& center = glm::vec3(0.0F));
187 [[nodiscard]] std::vector<LineVertex> get_vertices()
const;
200 void set_line_color(
const glm::vec3& color);
206 void set_connection_radius(
float radius);
212 void set_k_neighbors(
size_t k);
218 void set_line_thickness(
float thickness);
224 void set_samples_per_segment(
size_t samples);
230 void set_tension(
double tension);
242 template <
typename OpType,
typename... Args>
245 auto op = std::make_unique<OpType>(std::forward<Args>(args)...);
246 auto*
ptr = op.get();
247 set_operator(std::move(op));
251 void set_operator(std::unique_ptr<NetworkOperator> op);
254 size_t m_num_points {};
263 [[nodiscard]] std::vector<LineVertex> generate_initial_positions();
268 void update_mapped_parameters();
Unified generative infrastructure for stochastic and procedural algorithms.
Domain-agnostic interpretive lens for network processing.
Abstract base class for structured collections of nodes with defined relationships.
bool has_operator() const override
Kinesis::SamplerBounds get_bounds() const
Bounds the points were distributed within, as passed at construction.
std::unique_ptr< NetworkOperator > m_operator
OpType * create_operator(Args &&... args)
Create and set operator in one call.
NetworkOperator * get_operator() override
Kinesis::SamplerBounds m_bounds
Kinesis::Stochastic::Stochastic m_random_gen
const NetworkOperator * get_operator() const override
std::vector< LineVertex > m_cached_vertices
Spatial relational network operating on unordered point sets.
SpatialDistribution
Spatial distribution mode for point cloud and particle generation.
Topology
Defines the structural relationships between nodes in the network.
Vertex type for line primitives (LINE_LIST / LINE_STRIP topology)
Spatial domain for vertex generation.