Definition of a triangle mesh By convention the "center" of the shape is at the origin. For a mesh this implies that the AABB of the mesh is centered at the origin. Some methods may not work with arbitrary meshes whose AABB is not centered at the origin. Padding is not applied to vertices plainly coordinatewise, but instead the padding value is added to the length of the direction vector between centroid and each vertex.
More...
#include <shapes.h>

Mesh *  clone () const override 
 Create a copy of this shape. More...


void  computeTriangleNormals () 
 Compute the normals of each triangle from its vertices via cross product. More...


void  computeVertexNormals () 
 Compute vertex normals by averaging from adjacent triangle normals. More...


void  mergeVertices (double threshold) 
 Merge vertices that are very close to each other, up to a threshold. More...


 Mesh () 

 Mesh (unsigned int v_count, unsigned int t_count) 

void  padd (double paddX, double paddY, double paddZ) 
 Add nonuniform padding to this shape. More...


void  print (std::ostream &out=std::cout) const override 
 Print information about this shape. More...


void  scale (double scaleX, double scaleY, double scaleZ) 
 Scale this shape by a nonuniform factor. More...


void  scaleAndPadd (double scaleX, double scaleY, double scaleZ, double paddX, double paddY, double paddZ) 
 Scale this shape by a nonuniform factor and then add nonuniform padding. More...


void  scaleAndPadd (double scale, double padd) override 
 Uniformly scale and padd this shape. More...


 ~Mesh () override 

virtual bool  isFixed () const 
 Return a flag indicating whether this shape can be scaled and/or padded. More...


void  padd (double padding) 
 Add uniform padding to this shape. More...


void  scale (double scale) 
 Uniformly scale this shape by a factor. More...


 Shape () 

virtual  ~Shape () 


unsigned int  triangle_count 
 The number of triangles formed with the vertices. More...


double *  triangle_normals 
 The normal to each triangle; unit vector represented as (x,y,z); If missing from the mesh, these vectors can be computed using computeTriangleNormals() More...


unsigned int *  triangles 
 The vertex indices for each triangle triangle k has vertices at index (3k, 3k+1, 3k+2) = (v1, v2, v3) More...


unsigned int  vertex_count 
 The number of available vertices. More...


double *  vertex_normals 
 The normal to each vertex; unit vector represented as (x,y,z); If missing from the mesh, these vectors can be computed using computeVertexNormals() More...


double *  vertices 
 The position for each vertex vertex k has values at index (3k, 3k+1, 3k+2) = (x,y,z) More...


ShapeType  type 
 The type of the shape. More...


Definition of a triangle mesh By convention the "center" of the shape is at the origin. For a mesh this implies that the AABB of the mesh is centered at the origin. Some methods may not work with arbitrary meshes whose AABB is not centered at the origin. Padding is not applied to vertices plainly coordinatewise, but instead the padding value is added to the length of the direction vector between centroid and each vertex.
Definition at line 281 of file shapes.h.
◆ Mesh() [1/2]
◆ Mesh() [2/2]
shapes::Mesh::Mesh 
( 
unsigned int 
v_count, 


unsigned int 
t_count 

) 
 
◆ ~Mesh()
◆ clone()
Mesh * shapes::Mesh::clone 
( 
 ) 
const 

overridevirtual 
◆ computeTriangleNormals()
void shapes::Mesh::computeTriangleNormals 
( 
 ) 

Compute the normals of each triangle from its vertices via cross product.
Definition at line 503 of file shapes.cpp.
◆ computeVertexNormals()
void shapes::Mesh::computeVertexNormals 
( 
 ) 

◆ mergeVertices()
void shapes::Mesh::mergeVertices 
( 
double 
threshold  ) 

Merge vertices that are very close to each other, up to a threshold.
Definition at line 567 of file shapes.cpp.
◆ padd()
void shapes::Mesh::padd 
( 
double 
paddX, 


double 
paddY, 


double 
paddZ 

) 
 
Add nonuniform padding to this shape.
 Parameters

paddX  Padding in xdimension (in meters). 
paddY  Padding in ydimension (in meters). 
paddZ  Padding in zdimension (in meters). 
 Note
 Padding is not applied to vertices plainly coordinatewise, but instead the padding value is added to the length of the direction vector between centroid and each vertex.
Definition at line 428 of file shapes.cpp.
◆ print()
void shapes::Mesh::print 
( 
std::ostream & 
out = std::cout  ) 
const 

overridevirtual 
◆ scale()
void shapes::Mesh::scale 
( 
double 
scaleX, 


double 
scaleY, 


double 
scaleZ 

) 
 
Scale this shape by a nonuniform factor.
 Parameters

scaleX  Scale in xdimension. 
scaleY  Scale in ydimension. 
scaleZ  Scale in zdimension. 
Definition at line 423 of file shapes.cpp.
◆ scaleAndPadd() [1/2]
void shapes::Mesh::scaleAndPadd 
( 
double 
scaleX, 


double 
scaleY, 


double 
scaleZ, 


double 
paddX, 


double 
paddY, 


double 
paddZ 

) 
 
Scale this shape by a nonuniform factor and then add nonuniform padding.
 Parameters

scaleX  Scale in xdimension. 
scaleY  Scale in ydimension. 
scaleZ  Scale in zdimension. 
paddX  Padding in xdimension (in meters). 
paddY  Padding in ydimension (in meters). 
paddZ  Padding in zdimension (in meters). 
 Note
 Padding is not applied to vertices plainly coordinatewise, but instead the padding value is added to the length of the direction vector between centroid and each vertex.
Definition at line 378 of file shapes.cpp.
◆ scaleAndPadd() [2/2]
void shapes::Mesh::scaleAndPadd 
( 
double 
scale, 


double 
padd 

) 
 

overridevirtual 
◆ STRING_NAME
const std::string shapes::Mesh::STRING_NAME = "mesh" 

static 
The type of the shape, as a string.
Definition at line 292 of file shapes.h.
◆ triangle_count
unsigned int shapes::Mesh::triangle_count 
The number of triangles formed with the vertices.
Definition at line 350 of file shapes.h.
◆ triangle_normals
double* shapes::Mesh::triangle_normals 
The normal to each triangle; unit vector represented as (x,y,z); If missing from the mesh, these vectors can be computed using computeTriangleNormals()
Definition at line 358 of file shapes.h.
◆ triangles
unsigned int* shapes::Mesh::triangles 
The vertex indices for each triangle triangle k has vertices at index (3k, 3k+1, 3k+2) = (v1, v2, v3)
Definition at line 354 of file shapes.h.
◆ vertex_count
unsigned int shapes::Mesh::vertex_count 
The number of available vertices.
Definition at line 343 of file shapes.h.
◆ vertex_normals
double* shapes::Mesh::vertex_normals 
The normal to each vertex; unit vector represented as (x,y,z); If missing from the mesh, these vectors can be computed using computeVertexNormals()
Definition at line 362 of file shapes.h.
◆ vertices
double* shapes::Mesh::vertices 
The position for each vertex vertex k has values at index (3k, 3k+1, 3k+2) = (x,y,z)
Definition at line 347 of file shapes.h.
The documentation for this class was generated from the following files: