MeshLib Documentation
Loading...
Searching...
No Matches
MRMeshC/MRMesh.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRMeshFwd.h"
4#include "MRAffineXf.h"
5#include "MRBox.h"
6#include "MRId.h"
7#include "MRMeshTopology.h"
8
10
13
15MRMESHC_API MRMesh* mrMeshFromTriangles( const MRVector3f* vertexCoordinates, size_t vertexCoordinatesNum, const MRThreeVertIds* t, size_t tNum );
16
19MRMESHC_API MRMesh* mrMeshFromTrianglesDuplicatingNonManifoldVertices( const MRVector3f* vertexCoordinates, size_t vertexCoordinatesNum, const MRThreeVertIds* t, size_t tNum );
20
24MRMESHC_API MRMesh* mrMeshNewFromPointTriples( const MRTriangle3f* posTriangles, size_t posTrianglesNum, bool duplicateNonManifoldVertices );
25
28
31
33MRMESHC_API size_t mrMeshPointsNum( const MRMesh* mesh );
34
37
40
44
47MRMESHC_API void mrMeshTransform( MRMesh* mesh, const MRAffineXf3f* xf, const MRVertBitSet* region );
48
52
54MRMESHC_API double mrMeshArea( const MRMesh* mesh, const MRFaceBitSet* region );
55
60
62MRMESHC_API void mrMeshDeleteFaces( MRMesh* mesh, const MRFaceBitSet* fs, const MRUndirectedEdgeBitSet* keepEdges );
63
66{
70 const MREdgePath* thisContours;
73 const MREdgePath* fromContours;
75 // TODO: map
77
79MRMESHC_API void mrMeshAddPartByMask( MRMesh* mesh, const MRMesh* from, const MRFaceBitSet* fromFaces, const MRMeshAddPartByMaskParameters* params );
80
82MRMESHC_API void mrMeshPack( MRMesh* mesh, bool rearrangeTriangles );
83
86MRMESHC_API void mrMeshPackOptimally( MRMesh* mesh, bool preserveAABBTree );
87
90MRMESHC_API double mrMeshVolume( const MRMesh* mesh, const MRFaceBitSet* region );
91
94
98MRMESHC_API MRTriangulation* mrMeshGetTriangulation( const MRMesh* mesh );
99
103
MRVertId MRThreeVertIds[3]
a set of 3 vertices; useful for representing a face via its vertex indices
Definition MRMeshC/MRId.h:21
#define MR_EXTERN_C_BEGIN
Definition MRMeshC/MRMeshFwd.h:26
struct MRVertBitSet MRVertBitSet
Definition MRMeshC/MRMeshFwd.h:38
#define MR_EXTERN_C_END
Definition MRMeshC/MRMeshFwd.h:27
struct MRUndirectedEdgeBitSet MRUndirectedEdgeBitSet
Definition MRMeshC/MRMeshFwd.h:36
struct MRMesh MRMesh
Definition MRMeshC/MRMeshFwd.h:43
struct MRMeshTopology MRMeshTopology
Definition MRMeshC/MRMeshFwd.h:42
struct MRFaceBitSet MRFaceBitSet
Definition MRMeshC/MRMeshFwd.h:37
#define MRMESHC_API
Definition MRMeshC/MRMeshFwd.h:19
MRMESHC_API double mrMeshArea(const MRMesh *mesh, const MRFaceBitSet *region)
computes the area of given face-region (or whole mesh if region is null)
MRMESHC_API const MRVector3f * mrMeshPoints(const MRMesh *mesh)
gets read-only access to the mesh vertex coordinates
MRMESHC_API MRTriangulation * mrMeshGetTriangulation(const MRMesh *mesh)
MRMESHC_API MRVector3f mrMeshHoleDirArea(const MRMesh *mesh, MREdgeId e)
MRMESHC_API const MRMeshTopology * mrMeshTopology(const MRMesh *mesh)
gets read-only access to the mesh topology object
MRMESHC_API size_t mrMeshPointsNum(const MRMesh *mesh)
gets count of the mesh vertex coordinates
MRMESHC_API float mrMeshEdgeLength(const MRMesh *mesh, MRUndirectedEdgeId e)
returns Euclidean length of the edge
MRMESHC_API MREdgePath * mrMeshFindHoleRepresentiveEdges(const MRMesh *mesh)
MRMESHC_API MRMesh * mrMeshFromTrianglesDuplicatingNonManifoldVertices(const MRVector3f *vertexCoordinates, size_t vertexCoordinatesNum, const MRThreeVertIds *t, size_t tNum)
MRMESHC_API void mrMeshPackOptimally(MRMesh *mesh, bool preserveAABBTree)
MRMESHC_API MRMesh * mrMeshNewFromPointTriples(const MRTriangle3f *posTriangles, size_t posTrianglesNum, bool duplicateNonManifoldVertices)
MRMESHC_API MRMesh * mrMeshFromTriangles(const MRVector3f *vertexCoordinates, size_t vertexCoordinatesNum, const MRThreeVertIds *t, size_t tNum)
constructs a mesh from vertex coordinates and a set of triangles with given ids
MRMESHC_API float mrMeshEdgeLengthSq(const MRMesh *mesh, MRUndirectedEdgeId e)
returns squared Euclidean length of the edge (faster to compute than length)
MRMESHC_API double mrMeshVolume(const MRMesh *mesh, const MRFaceBitSet *region)
MRMESHC_API void mrMeshPack(MRMesh *mesh, bool rearrangeTriangles)
tightly packs all arrays eliminating lone edges and invalid face, verts and points
MRMESHC_API MRMeshTopology * mrMeshTopologyRef(MRMesh *mesh)
gets read-write access to the mesh topology object
MRMESHC_API void mrMeshTransform(MRMesh *mesh, const MRAffineXf3f *xf, const MRVertBitSet *region)
MRMESHC_API MRVector3f * mrMeshPointsRef(MRMesh *mesh)
gets read-write access to the mesh vertex coordinates
MRMESHC_API void mrMeshAddPartByMask(MRMesh *mesh, const MRMesh *from, const MRFaceBitSet *fromFaces, const MRMeshAddPartByMaskParameters *params)
appends mesh (from) in addition to this mesh: creates new edges, faces, verts and points
struct MRMeshAddPartByMaskParameters MRMeshAddPartByMaskParameters
optional parameters for mrMeshAddPartByMask
MRMESHC_API void mrMeshDeleteFaces(MRMesh *mesh, const MRFaceBitSet *fs, const MRUndirectedEdgeBitSet *keepEdges)
deletes multiple given faces, also deletes adjacent edges and vertices if they were not shared by rem...
MRMESHC_API MRBox3f mrMeshComputeBoundingBox(const MRMesh *mesh, const MRAffineXf3f *toWorld)
MR_EXTERN_C_BEGIN MRMESHC_API MRMesh * mrMeshCopy(const MRMesh *mesh)
creates a copy of a Mesh object
MRMESHC_API void mrMeshFree(MRMesh *mesh)
deallocates a Mesh object
MRVector3f MRTriangle3f[3]
a set of 3 vectors; useful for representing a face via its vertex coordinates
Definition MRMeshC/MRVector3.h:42
affine transformation: y = A*x + b, where A in VxV, and b in V
Definition MRMeshC/MRAffineXf.h:10
Definition MRMeshC/MRBox.h:9
edge index
Definition MRMeshC/MRId.h:8
optional parameters for mrMeshAddPartByMask
Definition MRMeshC/MRMesh.h:66
const MREdgePath * fromContours
contours on from mesh during addition
Definition MRMeshC/MRMesh.h:73
size_t thisContoursNum
Definition MRMeshC/MRMesh.h:71
size_t fromContoursNum
Definition MRMeshC/MRMesh.h:74
const MREdgePath * thisContours
contours on this mesh that have to be stitched with
Definition MRMeshC/MRMesh.h:70
bool flipOrientation
if flipOrientation then every from triangle is inverted before adding
Definition MRMeshC/MRMesh.h:68
edge index
Definition MRMeshC/MRId.h:10
three-dimensional vector
Definition MRMeshC/MRVector3.h:9