MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
GeometryPrimitives.cpp File Reference
#include "GeometryPrimitives.hpp"
#include "MayaFlux/Kakshya/NDData/MeshInsertion.hpp"
#include <glm/gtc/matrix_transform.hpp>
+ Include dependency graph for GeometryPrimitives.cpp:

Go to the source code of this file.

Namespaces

namespace  MayaFlux
 Main namespace for the Maya Flux audio engine.
 
namespace  MayaFlux::Kinesis
 

Functions

std::vector< Kakshya::VertexMayaFlux::Kinesis::apply_color_gradient (const std::vector< glm::vec3 > &positions, const std::vector< glm::vec3 > &colors, const std::vector< float > &color_positions={}, float scalar=1.0F)
 Apply color interpolation to position vertices.
 
void MayaFlux::Kinesis::apply_rotation (std::vector< glm::vec3 > &vertices, const glm::vec3 &axis, float angle, const glm::vec3 &origin=glm::vec3(0))
 Apply rotation to vertex set around arbitrary axis.
 
void MayaFlux::Kinesis::apply_scale (std::vector< glm::vec3 > &vertices, const glm::vec3 &scale, const glm::vec3 &origin=glm::vec3(0))
 Apply non-uniform scaling to vertex set.
 
void MayaFlux::Kinesis::apply_transform (std::vector< glm::vec3 > &vertices, const glm::mat4 &transform)
 Apply rigid transformation to vertex set.
 
void MayaFlux::Kinesis::apply_translation (std::vector< glm::vec3 > &vertices, const glm::vec3 &displacement)
 Apply translation to vertex set.
 
std::vector< Kakshya::VertexMayaFlux::Kinesis::apply_uniform_color (const std::vector< glm::vec3 > &positions, const glm::vec3 &color, float scalar=1.0F)
 Apply uniform color to position vertices.
 
void MayaFlux::Kinesis::apply_uniform_scale (std::vector< glm::vec3 > &vertices, float scale, const glm::vec3 &origin=glm::vec3(0))
 Apply uniform scaling to vertex set.
 
std::vector< Kakshya::VertexMayaFlux::Kinesis::apply_vertex_colors (const std::vector< glm::vec3 > &positions, const std::vector< glm::vec3 > &colors, float scalar=1.0F)
 Convert positions to LineVertex with per-vertex colors.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::compute_convex_hull_2d (const std::vector< glm::vec3 > &vertices, const glm::vec3 &projection_normal=glm::vec3(0, 0, 1))
 Compute convex hull of vertex set (2D projection)
 
std::vector< Kakshya::LineVertexMayaFlux::Kinesis::compute_path_curvature (const std::vector< Kakshya::LineVertex > &path_vertices, float curvature_scale, size_t stride=1)
 Compute curvature vectors along a path (2nd derivative approximation)
 
std::vector< Kakshya::LineVertexMayaFlux::Kinesis::compute_path_normals (const std::vector< Kakshya::LineVertex > &path_vertices, float normal_length, size_t stride=1)
 Compute normal vectors along a piecewise-linear path.
 
std::vector< Kakshya::LineVertexMayaFlux::Kinesis::compute_path_tangents (const std::vector< Kakshya::LineVertex > &path_vertices, float tangent_length, size_t stride=1)
 Compute tangent vectors along a piecewise-linear path.
 
std::vector< Kakshya::VertexMayaFlux::Kinesis::cuboid_wireframe (const glm::vec3 &center, const glm::vec3 &half, const glm::vec3 &color=glm::vec3(1.F))
 Generate a cuboid wireframe as LINE_LIST pairs.
 
std::array< Kakshya::Vertex, 4 > MayaFlux::Kinesis::filled_rect (Kinesis::AABB2D region, glm::vec3 color=glm::vec3(1.F))
 Generate a filled TRIANGLE_STRIP quad from an AABB2D.
 
Kakshya::MeshData MayaFlux::Kinesis::generate_box (const glm::vec3 &center, const glm::vec3 &half_extents, uint32_t subdivisions=1)
 Generate a solid box as an indexed TRIANGLE_LIST mesh.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::generate_circle (const glm::vec3 &center, float radius, size_t segments, const glm::vec3 &normal=glm::vec3(0, 0, 1))
 Generate vertices along a circular path.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::generate_ellipse (const glm::vec3 &center, float semi_major, float semi_minor, size_t segments, const glm::vec3 &normal=glm::vec3(0, 0, 1))
 Generate vertices along an elliptical path.
 
Kakshya::MeshData MayaFlux::Kinesis::generate_grid (const glm::vec3 &center, float extent_x, float extent_z, uint32_t cols, uint32_t rows, const glm::vec3 &normal=glm::vec3(0.0F, 1.0F, 0.0F))
 Generate a subdivided flat grid in the XZ plane.
 
Kakshya::MeshData MayaFlux::Kinesis::generate_parametric_surface (const std::function< glm::vec3(float, float)> &fn, uint32_t u_segs, uint32_t v_segs)
 
QuadGeometry MayaFlux::Kinesis::generate_quad (glm::vec2 position=glm::vec2(0.0F), glm::vec2 scale=glm::vec2(1.0F), float rotation=0.0F)
 Generate a textured quad centred on the origin.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::generate_rectangle (const glm::vec3 &center, float width, float height, const glm::vec3 &normal=glm::vec3(0, 0, 1))
 Generate vertices of an axis-aligned rectangular path.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::generate_regular_polygon (const glm::vec3 &center, float radius, size_t sides, const glm::vec3 &normal=glm::vec3(0, 0, 1), float phase_offset=0.0F)
 Generate vertices of a regular n-gon.
 
Kakshya::MeshData MayaFlux::Kinesis::generate_revolution (const std::function< glm::vec2(float)> &profile_fn, uint32_t profile_segs, uint32_t radial_segs, float sweep_radians)
 
Kakshya::MeshData MayaFlux::Kinesis::generate_tube (std::span< const glm::vec3 > path, const std::function< float(float)> &radius_fn, uint32_t radial_segments, bool capped)
 
void MayaFlux::Kinesis::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< Kakshya::LineVertexMayaFlux::Kinesis::reparameterize_by_arc_length (const std::vector< Kakshya::LineVertex > &path_vertices, size_t num_samples)
 Resample path vertices for arc-length parameterization.
 
std::vector< glm::vec3 > MayaFlux::Kinesis::sample_parametric_curve (const std::function< glm::vec3(float)> &curve, size_t samples)
 Sample parametric curve uniformly in parameter space.
 
std::array< Kakshya::TextureQuadVertex, 4 > MayaFlux::Kinesis::textured_rect (Kinesis::AABB2D region)
 Generate a UV-mapped TRIANGLE_STRIP quad from an AABB2D.