Lagrange
Loading...
Searching...
No Matches
RoundedCubeOptions Struct Reference

Options for generating a rounded cube mesh. More...

#include <lagrange/primitive/generate_rounded_cube.h>

Inheritance diagram for RoundedCubeOptions:
PrimitiveOptions

Public Types

using Scalar = PrimitiveOptions::Scalar
 
using Index = size_t
 
- Public Types inherited from PrimitiveOptions
using Scalar = float
 

Public Member Functions

void project_to_valid_range ()
 Clamps all parameters to valid ranges.
 

Public Attributes

Scalar width = 1
 Width of the cube along the X-axis.
 
Scalar height = 1
 Height of the cube along the Y-axis.
 
Scalar depth = 1
 Depth of the cube along the Z-axis.
 
Index width_segments = 1
 Number of segments along the width (X-axis)
 
Index height_segments = 1
 Number of segments along the height (Y-axis)
 
Index depth_segments = 1
 Number of segments along the depth (Z-axis)
 
Scalar bevel_radius = 0
 Radius of the bevel/rounding applied to cube edges A value of 0 creates a regular cube with sharp edges.
 
Index bevel_segments = 8
 Number of segments used to approximate each rounded edge Higher values create smoother rounded edges but increase vertex count.
 
- Public Attributes inherited from PrimitiveOptions
std::array< Scalar, 3 > center {0, 0, 0}
 Center of the primitive in 3D space.
 
bool with_top_cap = true
 Whether to generate top cap of the primitive (if applicable).
 
bool with_bottom_cap = true
 Whether to generate bottom cap of the primitive (if applicable).
 
bool with_cross_section = true
 Whether to generate cross section of the primitive (if applicable).
 
bool triangulate = false
 Whether to triangulate the generated surface mesh.
 
bool fixed_uv = false
 Whether to use fixed UV coordinates regardless of the primitive parameters.
 
std::string_view normal_attribute_name = "@normal"
 Name of the output indexed attribute storing the normal vectors.
 
std::string_view uv_attribute_name = "@uv"
 Name of the output indexed attribute storing the UV coordinates.
 
std::string_view semantic_label_attribute_name = "@semantic_label"
 Name of the output facet attribute storing the semantic labels.
 
Scalar dist_threshold = static_cast<Scalar>(1e-6)
 Two vertices are considered coinciding if the distance between them is smaller than dist_threshold.
 
Scalar angle_threshold = static_cast<Scalar>(30 * lagrange::internal::pi / 180)
 An edge is considered sharp if its dihedral angle is larger than angle_threshold.
 
Scalar epsilon = static_cast<Scalar>(1e-6)
 Numerical tolerance used for comparing Scalar values.
 
Scalar uv_padding = static_cast<Scalar>(0.005)
 Padding size for UV charts to avoid bleeding.
 

Detailed Description

Options for generating a rounded cube mesh.

This structure contains all the parameters needed to generate a rounded cube mesh, including dimensions, tessellation parameters, and beveling options. The rounded cube can have smooth rounded edges controlled by the bevel radius and number of bevel segments.

Member Function Documentation

◆ project_to_valid_range()

void project_to_valid_range ( )
inline

Clamps all parameters to valid ranges.

This method ensures that:

  • All dimensions (width, height, depth) are non-negative
  • All segment counts are at least 1
  • Bevel radius is non-negative and doesn't exceed half the smallest dimension
  • Bevel segments is at least 1 if beveling is enabled, or 0 if disabled

The documentation for this struct was generated from the following file: