19 const glm::vec3& center,
22 const glm::vec3& normal = glm::vec3(0, 0, 1));
34 const glm::vec3& center,
38 const glm::vec3& normal = glm::vec3(0, 0, 1));
49 const glm::vec3& center,
52 const glm::vec3& normal = glm::vec3(0, 0, 1));
66 const glm::vec3& center,
69 const glm::vec3& normal = glm::vec3(0, 0, 1),
70 float phase_offset = 0.0F);
78 std::vector<glm::vec3>& vertices,
79 const glm::mat4& transform);
89 std::vector<glm::vec3>& vertices,
90 const glm::vec3& axis,
92 const glm::vec3& origin = glm::vec3(0));
100 std::vector<glm::vec3>& vertices,
101 const glm::vec3& displacement);
110 std::vector<glm::vec3>& vertices,
112 const glm::vec3& origin = glm::vec3(0));
121 std::vector<glm::vec3>& vertices,
122 const glm::vec3& scale,
123 const glm::vec3& origin = glm::vec3(0));
136 const std::vector<Nodes::LineVertex>& path_vertices,
151 const std::vector<Nodes::LineVertex>& path_vertices,
152 float tangent_length,
165 const std::vector<Nodes::LineVertex>& path_vertices,
166 float curvature_scale,
176 const std::function<glm::vec3(
float)>& curve,
189 const std::vector<Nodes::LineVertex>& path_vertices,
199 std::vector<glm::vec3>& vertices,
200 const glm::vec3& plane_point,
201 const glm::vec3& plane_normal);
212 const std::vector<glm::vec3>& vertices,
213 const glm::vec3& projection_normal = glm::vec3(0, 0, 1));
231 const std::vector<glm::vec3>& positions,
232 const std::vector<glm::vec3>& colors,
233 const std::vector<float>& color_positions = {},
234 float default_thickness = 1.0F);
240 const std::vector<glm::vec3>& positions,
241 const glm::vec3& color,
242 float default_thickness = 1.0F);
248 const std::vector<glm::vec3>& positions,
249 const std::vector<glm::vec3>& colors,
250 float default_thickness = 1.0F);
std::vector< Nodes::LineVertex > compute_path_normals(const std::vector< Nodes::LineVertex > &path_vertices, float normal_length, size_t stride)
Compute normal vectors along a piecewise-linear path.
std::vector< Nodes::LineVertex > reparameterize_by_arc_length(const std::vector< Nodes::LineVertex > &path_vertices, size_t num_samples)
Resample path vertices for arc-length parameterization.
void apply_transform(std::vector< glm::vec3 > &vertices, const glm::mat4 &transform)
Apply rigid transformation to vertex set.
void apply_translation(std::vector< glm::vec3 > &vertices, const glm::vec3 &displacement)
Apply translation to vertex set.
std::vector< Nodes::LineVertex > apply_color_gradient(const std::vector< glm::vec3 > &positions, const std::vector< glm::vec3 > &colors, const std::vector< float > &color_positions, float default_thickness)
Apply color interpolation to position vertices.
std::vector< Nodes::LineVertex > compute_path_tangents(const std::vector< Nodes::LineVertex > &path_vertices, float tangent_length, size_t stride)
Compute tangent vectors along a piecewise-linear path.
std::vector< Nodes::LineVertex > apply_vertex_colors(const std::vector< glm::vec3 > &positions, const std::vector< glm::vec3 > &colors, float default_thickness)
Convert positions to LineVertex with per-vertex colors.
std::vector< Nodes::LineVertex > apply_uniform_color(const std::vector< glm::vec3 > &positions, const glm::vec3 &color, float default_thickness)
Apply uniform color to position vertices.
std::vector< glm::vec3 > compute_convex_hull_2d(const std::vector< glm::vec3 > &vertices, const glm::vec3 &projection_normal)
Compute convex hull of vertex set (2D projection)
void project_onto_plane(std::vector< glm::vec3 > &vertices, const glm::vec3 &plane_point, const glm::vec3 &plane_normal)
Project vertices onto plane defined by normal.
std::vector< glm::vec3 > generate_ellipse(const glm::vec3 ¢er, float semi_major, float semi_minor, size_t segments, const glm::vec3 &normal)
Generate vertices along an elliptical path.
std::vector< glm::vec3 > sample_parametric_curve(const std::function< glm::vec3(float)> &curve, size_t samples)
Sample parametric curve uniformly in parameter space.
std::vector< glm::vec3 > generate_circle(const glm::vec3 ¢er, float radius, size_t segments, const glm::vec3 &normal)
Generate vertices along a circular path.
std::vector< glm::vec3 > generate_rectangle(const glm::vec3 ¢er, float width, float height, const glm::vec3 &normal)
Generate vertices of an axis-aligned rectangular path.
void apply_scale(std::vector< glm::vec3 > &vertices, const glm::vec3 &scale, const glm::vec3 &origin)
Apply non-uniform scaling to vertex set.
std::vector< glm::vec3 > generate_regular_polygon(const glm::vec3 ¢er, float radius, size_t sides, const glm::vec3 &normal, float phase_offset)
Generate vertices of a regular n-gon.
void apply_rotation(std::vector< glm::vec3 > &vertices, const glm::vec3 &axis, float angle, const glm::vec3 &origin)
Apply rotation to vertex set around arbitrary axis.
void apply_uniform_scale(std::vector< glm::vec3 > &vertices, float scale, const glm::vec3 &origin)
Apply uniform scaling to vertex set.
std::vector< Nodes::LineVertex > compute_path_curvature(const std::vector< Nodes::LineVertex > &path_vertices, float curvature_scale, size_t stride)
Compute curvature vectors along a path (2nd derivative approximation)