scimesh 0.3.4
Headless CPU-only 3D software renderer for scientific mesh visualization
Loading...
Searching...
No Matches
primitives.h
Go to the documentation of this file.
1
8
9#pragma once
10
11#include <scimesh/mesh.h>
12
13namespace scimesh {
14
15// ---------------------------------------------------------------------------
16// Single primitives
17// ---------------------------------------------------------------------------
18
39Mesh generate_sphere(const Vec3 &center, float radius, int segments, const Color &color);
40
69Mesh generate_cylinder(const Vec3 &start, const Vec3 &end, float radius,
70 int segments, const Color &color, bool caps = true);
71
107Mesh generate_tube(const std::vector<Vec3> &path, float radius, int segments,
108 const Color &color, bool cap_start = true,
109 bool cap_end = true);
110
130Mesh generate_cone(const Vec3 &base, const Vec3 &tip, float radius,
131 int segments, const Color &color);
132
156Mesh generate_arrow(const Vec3 &from, const Vec3 &to,
157 float shaft_radius, float head_radius, float head_length,
158 int segments, const Color &color);
159
177void merge_mesh(Mesh &dst, const Mesh &src);
178
196Mesh generate_cuboid(const Vec3 &center, const Vec3 &half_extents,
197 const Color &color);
198
217Mesh generate_pyramid(const Vec3 &base_center, const Vec3 &apex,
218 float half_width, const Color &color);
219
237Mesh generate_tetrahedron(const Vec3 &p0, const Vec3 &p1,
238 const Vec3 &p2, const Vec3 &p3,
239 const Color &color);
240
262Mesh generate_torus(const Vec3 &center, float major_radius, float minor_radius,
264 const Color &color);
265
285Mesh generate_plane(const Vec3 &center, const Vec3 &normal,
286 float half_size_x, float half_size_y,
287 const Color &color);
288
289// ---------------------------------------------------------------------------
290// Batch primitives (efficient for many small shapes)
291// ---------------------------------------------------------------------------
292
315Mesh generate_multi_spheres(const std::vector<Vec3> &centers,
316 const std::vector<float> &radii,
317 const std::vector<Color> &colors,
318 int segments = 16);
319
347Mesh generate_multi_cylinders(const std::vector<Vec3> &starts,
348 const std::vector<Vec3> &ends,
349 const std::vector<float> &radii,
350 const std::vector<Color> &colors,
351 int segments = 12, bool caps = true);
352
382Mesh generate_multi_tubes(const std::vector<std::vector<Vec3>> &paths,
383 const std::vector<float> &radii,
384 const std::vector<Color> &colors,
385 int segments = 12, bool caps = false);
386
387} // namespace scimesh
The Mesh — the central data structure for 3D geometry in scimesh.
Mesh generate_multi_tubes(const std::vector< std::vector< Vec3 > > &paths, const std::vector< float > &radii, const std::vector< Color > &colors, int segments, bool caps)
Generate multiple tubes in a single mesh (efficient batching).
Mesh generate_pyramid(const Vec3 &base_center, const Vec3 &apex, float hw, const Color &color)
Generate a square-based pyramid.
Mesh generate_tetrahedron(const Vec3 &p0, const Vec3 &p1, const Vec3 &p2, const Vec3 &p3, const Color &color)
Generate a tetrahedron (triangular pyramid) from four points.
Mesh generate_sphere(const Vec3 &center, float radius, int segments, const Color &color)
Generate a UV-sphere (latitude/longitude tessellation).
glm::vec3 Vec3
3-component floating-point vector (xyz).
Definition types.h:46
Mesh generate_cuboid(const Vec3 &center, const Vec3 &half, const Color &color)
Generate an axis-aligned cuboid (rectangular box).
void merge_mesh(Mesh &dst, const Mesh &src)
Merge one mesh into another (append geometry).
Mesh generate_arrow(const Vec3 &from, const Vec3 &to, float shaft_radius, float head_radius, float head_length, int segments, const Color &color)
Generate a 3D arrow from from to to.
Mesh generate_torus(const Vec3 &center, float R, float r, int seg_major, int seg_minor, const Color &color)
Generate a torus (donut shape).
Mesh generate_multi_spheres(const std::vector< Vec3 > &centers, const std::vector< float > &radii, const std::vector< Color > &colors, int segments)
Generate multiple spheres in a single mesh (efficient batching).
Mesh generate_cylinder(const Vec3 &start, const Vec3 &end, float radius, int segments, const Color &color, bool caps)
Generate a cylinder between two endpoints.
Mesh generate_multi_cylinders(const std::vector< Vec3 > &starts, const std::vector< Vec3 > &ends, const std::vector< float > &radii, const std::vector< Color > &colors, int segments, bool caps)
Generate multiple cylinders in a single mesh (efficient batching).
Mesh generate_plane(const Vec3 &center, const Vec3 &normal, float hx, float hy, const Color &color)
Generate a flat rectangular plane.
Mesh generate_cone(const Vec3 &base, const Vec3 &tip, float radius, int segments, const Color &color)
Generate a cone from a base circle to a tip point.
Mesh generate_tube(const std::vector< Vec3 > &path, float radius, int segments, const Color &color, bool cap_start, bool cap_end)
Generate a tube (generalized cylinder) along a polyline path.
int x
Left edge of the bitmap, in image pixels.
Definition text.cpp:223