40 glm::vec3
min { -1.0F };
41 glm::vec3
max { 1.0F };
43 [[nodiscard]] glm::vec3
center() const noexcept {
return (
min +
max) * 0.5F; }
44 [[nodiscard]] glm::vec3
extent() const noexcept {
return max -
min; }
45 [[nodiscard]]
float max_radius() const noexcept {
return glm::length(
extent()) * 0.5F; }
75 const SamplerBounds& bounds,
93 const SamplerBounds& bounds,
110 glm::vec2 size_range = { 8.0F, 12.0F })
noexcept
115 .size = glm::mix(size_range.x, size_range.y, s.
scalar)
127 glm::vec2 thickness_range = { 1.0F, 2.0F })
noexcept
132 .thickness = glm::mix(thickness_range.x, thickness_range.y, s.
scalar)
143 std::span<const SampleResult> samples,
144 glm::vec2 size_range = { 8.0F, 12.0F });
153 std::span<const SampleResult> samples,
154 glm::vec2 thickness_range = { 1.0F, 2.0F });
Unified generative infrastructure for stochastic and procedural algorithms.
SampleResult generate_sample_at(SpatialDistribution dist, size_t index, size_t total, const SamplerBounds &bounds, Stochastic::Stochastic &rng)
Generate a single sample at a specific index (for indexed/sequential modes).
Nodes::PointVertex to_point_vertex(const SampleResult &s, glm::vec2 size_range={ 8.0F, 12.0F }) noexcept
Project SampleResult to PointVertex.
std::vector< Nodes::PointVertex > to_point_vertices(std::span< const SampleResult > samples, glm::vec2 size_range)
Batch-project SampleResult vector to PointVertex.
std::vector< Nodes::LineVertex > to_line_vertices(std::span< const SampleResult > samples, glm::vec2 thickness_range)
Batch-project SampleResult vector to LineVertex.
SpatialDistribution
Spatial distribution mode for point cloud and particle generation.
Nodes::LineVertex to_line_vertex(const SampleResult &s, glm::vec2 thickness_range={ 1.0F, 2.0F }) noexcept
Project SampleResult to LineVertex.
std::vector< SampleResult > generate_samples(SpatialDistribution dist, size_t count, const SamplerBounds &bounds, Stochastic::Stochastic &rng)
Generate a batch of spatially distributed samples.
float scalar
Normalised scalar; maps to size (PointVertex) or thickness (LineVertex)
Position and normalised color derived from spatial sampling.
float max_radius() const noexcept
glm::vec3 center() const noexcept
glm::vec3 extent() const noexcept
Spatial domain for vertex generation.