19#include "cross_section.h"
51 throw std::out_of_range(
"mesh too large");
57 throw std::out_of_range(
"mesh too large");
164 Manifold(
const MeshGL&,
const std::vector<float>& propertyTolerance = {});
168 const std::vector<Smoothness>& sharpenedEdges = {});
170 const std::vector<Smoothness>& sharpenedEdges = {});
172 static Manifold Cube(glm::vec3 size = glm::vec3(1.0f),
bool center =
false);
174 float radiusHigh = -1.0f,
int circularSegments = 0,
175 bool center =
false);
178 int nDivisions = 0,
float twistDegrees = 0.0f,
179 glm::vec2 scaleTop = glm::vec2(1.0f));
181 int circularSegments = 0,
182 float revolveDegrees = 360.0f);
205 PropertiesWrongLength,
206 MissingPositionProperties,
207 MergeVectorsDifferentLengths,
208 MergeIndexOutOfBounds,
209 TransformWrongLength,
243 float zDegrees = 0.0f)
const;
249 int, std::function<
void(
float*, glm::vec3,
const float*)>)
const;
274 std::pair<Manifold, Manifold>
SplitByPlane(glm::vec3 normal,
275 float originOffset)
const;
290 static Manifold Hull(
const std::vector<Manifold>& manifolds);
291 static Manifold Hull(
const std::vector<glm::vec3>& pts);
306 Manifold(std::shared_ptr<CsgNode> pNode_);
307 Manifold(std::shared_ptr<Impl> pImpl_);
309 mutable std::shared_ptr<CsgNode> pNode_;
Definition cross_section.h:40
Definition manifold.h:151
float Precision() const
Definition manifold.cpp:404
int NumOverlaps(const Manifold &second) const
Definition manifold.cpp:483
int NumEdge() const
Definition manifold.cpp:374
Manifold CalculateCurvature(int gaussianIdx, int meanIdx) const
Definition manifold.cpp:653
Manifold SetProperties(int, std::function< void(float *, glm::vec3, const float *)>) const
Definition manifold.cpp:597
static Manifold BatchBoolean(const std::vector< Manifold > &manifolds, OpType op)
Definition manifold.cpp:784
Manifold TrimByPlane(glm::vec3 normal, float originOffset) const
Definition manifold.cpp:883
static uint32_t ReserveIDs(uint32_t)
Definition manifold.cpp:455
static Manifold Sphere(float radius, int circularSegments=0)
Definition constructors.cpp:203
Box BoundingBox() const
Definition manifold.cpp:395
Error Status() const
Definition manifold.cpp:364
static Manifold Cube(glm::vec3 size=glm::vec3(1.0f), bool center=false)
Definition constructors.cpp:151
int NumProp() const
Definition manifold.cpp:382
float MinGap(const Manifold &other, float searchLength) const
Definition manifold.cpp:961
int NumTri() const
Definition manifold.cpp:378
int Genus() const
Definition manifold.cpp:413
Manifold RefineToLength(float) const
Definition manifold.cpp:754
Manifold & operator+=(const Manifold &)
Definition manifold.cpp:806
Manifold Rotate(float xDegrees, float yDegrees=0.0f, float zDegrees=0.0f) const
Definition manifold.cpp:525
MeshGL GetMeshGL(glm::ivec3 normalIdx=glm::ivec3(0)) const
Definition manifold.cpp:193
Manifold Refine(int) const
Definition manifold.cpp:736
std::pair< Manifold, Manifold > Split(const Manifold &) const
Definition manifold.cpp:848
bool MatchesTriNormals() const
Definition manifold.cpp:464
int OriginalID() const
Definition manifold.cpp:430
Manifold CalculateNormals(int normalIdx, float minSharpAngle=60) const
Definition manifold.cpp:674
Manifold Transform(const glm::mat4x3 &) const
Definition manifold.cpp:537
Mesh GetMesh() const
Definition manifold.cpp:158
Manifold WarpBatch(std::function< void(VecView< glm::vec3 >)>) const
Definition manifold.cpp:580
std::vector< Manifold > Decompose() const
Definition constructors.cpp:466
CrossSection Project() const
Definition manifold.cpp:901
int NumVert() const
Definition manifold.cpp:370
Manifold & operator^=(const Manifold &)
Definition manifold.cpp:836
Manifold SmoothOut(float minSharpAngle=60, float minSmoothness=0) const
Definition manifold.cpp:717
bool IsEmpty() const
Definition manifold.cpp:355
CrossSection Slice(float height=0) const
Definition manifold.cpp:893
Manifold Mirror(glm::vec3) const
Definition manifold.cpp:549
static Manifold Compose(const std::vector< Manifold > &)
Definition constructors.cpp:453
Manifold Boolean(const Manifold &second, OpType op) const
Definition manifold.cpp:776
Manifold AsOriginal() const
Definition manifold.cpp:440
Manifold Hull() const
Definition manifold.cpp:943
Manifold SmoothByNormals(int normalIdx) const
Definition manifold.cpp:691
int NumPropVert() const
Definition manifold.cpp:388
static Manifold Revolve(const CrossSection &crossSection, int circularSegments=0, float revolveDegrees=360.0f)
Definition constructors.cpp:325
Manifold Translate(glm::vec3) const
Definition manifold.cpp:499
static Manifold Extrude(const CrossSection &crossSection, float height, int nDivisions=0, float twistDegrees=0.0f, glm::vec2 scaleTop=glm::vec2(1.0f))
Definition constructors.cpp:238
Properties GetProperties() const
Definition manifold.cpp:421
static Manifold Cylinder(float height, float radiusLow, float radiusHigh=-1.0f, int circularSegments=0, bool center=false)
Definition constructors.cpp:174
Manifold operator^(const Manifold &) const
Definition manifold.cpp:829
Manifold()
Definition manifold.cpp:84
Manifold operator-(const Manifold &) const
Definition manifold.cpp:814
std::pair< Manifold, Manifold > SplitByPlane(glm::vec3 normal, float originOffset) const
Definition manifold.cpp:869
Manifold Scale(glm::vec3) const
Definition manifold.cpp:509
Manifold & operator-=(const Manifold &)
Definition manifold.cpp:821
Manifold Warp(std::function< void(glm::vec3 &)>) const
Definition manifold.cpp:567
Manifold operator+(const Manifold &) const
Definition manifold.cpp:799
static Manifold Tetrahedron()
Definition constructors.cpp:139
int NumDegenerateTris() const
Definition manifold.cpp:473
static Manifold Smooth(const MeshGL &, const std::vector< Smoothness > &sharpenedEdges={})
Definition constructors.cpp:81
OpType
Definition public.h:493
ExecutionParams & ManifoldParams()
Definition manifold.cpp:905
std::vector< uint32_t > runIndex
Definition manifold.h:84
bool Merge()
Definition sort.cpp:520
uint32_t NumVert() const
Number of property vertices.
Definition manifold.h:49
std::vector< float > runTransform
Definition manifold.h:95
uint32_t NumTri() const
Number of triangles.
Definition manifold.h:55
std::vector< float > halfedgeTangent
Definition manifold.h:108
std::vector< uint32_t > mergeFromVert
Definition manifold.h:72
std::vector< float > vertProperties
Definition manifold.h:66
std::vector< uint32_t > runOriginalID
Definition manifold.h:90
std::vector< uint32_t > faceID
Definition manifold.h:103
float precision
Definition manifold.h:113
uint32_t numProp
Number of properties per vertex, always >= 3.
Definition manifold.h:62
std::vector< uint32_t > mergeToVert
Definition manifold.h:76
std::vector< uint32_t > triVerts
Definition manifold.h:69