BRL-CAD
trimesh.h File Reference
#include "common.h"
#include "vmath.h"
#include "bg/defines.h"
Include dependency graph for trimesh.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  bg_trimesh_halfedge
 Algorithms related to 3D meshes built from triangles. More...
 
struct  bg_trimesh_edges
 
struct  bg_trimesh_faces
 
struct  bg_trimesh_solid_errors
 
struct  bg_trimesh_decimation_settings
 
struct  bg_trimesh_optimization_settings
 

Macros

#define BG_TRIMESH_EDGES_INIT_NULL   {0, NULL}
 
#define BG_TRIMESH_FACES_INIT_NULL   {0, NULL}
 
#define BG_TRIMESH_SOLID_ERRORS_INIT_NULL   {BG_TRIMESH_FACES_INIT_NULL, BG_TRIMESH_EDGES_INIT_NULL, BG_TRIMESH_EDGES_INIT_NULL, BG_TRIMESH_EDGES_INIT_NULL}
 
#define BG_TRIMESH_DECIMATION_METHOD_DEFAULT   0
 
#define BG_TRIMESH_DECIMATION_SETTINGS_INIT   {BG_TRIMESH_DECIMATION_METHOD_DEFAULT, 0.0, 0.0, 0}
 
#define BG_TRIMESH_OPTIMIZATION_SETTINGS_INIT   {0, 0.0, 0.0, 0}
 

Typedefs

typedef int(* bg_face_error_func_t) (int face_idx, void *data)
 
typedef int(* bg_edge_error_funct_t) (struct bg_trimesh_halfedge *edge, void *data)
 

Functions

void bg_free_trimesh_edges (struct bg_trimesh_edges *edges)
 
void bg_free_trimesh_faces (struct bg_trimesh_faces *faces)
 
void bg_free_trimesh_solid_errors (struct bg_trimesh_solid_errors *errors)
 
int bg_trimesh_manifold_closed (int vcnt, int fcnt, fastf_t *v, int *f)
 
int bg_trimesh_oriented (int vcnt, int fcnt, fastf_t *v, int *f)
 
int bg_trimesh_solid (int vcnt, int fcnt, fastf_t *v, int *f, int **bedges)
 
int bg_trimesh_face_exit (int face_idx, void *data)
 
int bg_trimesh_face_continue (int face_idx, void *data)
 
int bg_trimesh_face_gather (int face_idx, void *data)
 
int bg_trimesh_edge_exit (struct bg_trimesh_halfedge *edge, void *data)
 
int bg_trimesh_edge_continue (struct bg_trimesh_halfedge *edge, void *data)
 
int bg_trimesh_edge_gather (struct bg_trimesh_halfedge *edge, void *data)
 
int bg_trimesh_degenerate_faces (int num_faces, int *fpoints, bg_face_error_func_t degenerate_func, void *data)
 
int bg_trimesh_unmatched_edges (int num_edges, struct bg_trimesh_halfedge *edge_list, bg_edge_error_funct_t error_edge_func, void *data)
 
int bg_trimesh_misoriented_edges (int num_edges, struct bg_trimesh_halfedge *edge_list, bg_edge_error_funct_t error_edge_func, void *data)
 
int bg_trimesh_excess_edges (int num_edges, struct bg_trimesh_halfedge *edge_list, bg_edge_error_funct_t error_edge_func, void *data)
 
int bg_trimesh_solid2 (int vcnt, int fcnt, fastf_t *v, int *f, struct bg_trimesh_solid_errors *errors)
 
int bg_trimesh_hanging_nodes (int num_vertices, int num_faces, fastf_t *vertices, int *faces, struct bg_trimesh_solid_errors *errors)
 
struct bg_trimesh_halfedgebg_trimesh_generate_edge_list (int fcnt, int *f)
 
int bg_trimesh_aabb (point_t *min, point_t *max, const int *faces, size_t num_faces, const point_t *p, size_t num_pnts)
 Calculate an axis aligned bounding box (RPP) for a triangle mesh. More...
 
int bg_trimesh_decimate (int **ofaces, int *n_ofaces, int *ifaces, int n_ifaces, point_t *p, int n_p, struct bg_trimesh_decimation_settings *s)
 Decimate a mesh and return the decimated faces. More...
 
int bg_trimesh_isect (int **faces_inside_1, int *num_faces_inside_1, int **faces_inside_2, int *num_faces_inside_2, int **faces_isect_1, int *num_faces_isect_1, int **faces_isect_2, int *num_faces_isect_2, int *faces_1, int num_faces_1, point_t *vertices_1, int num_vertices_1, int *faces_2, int num_faces_2, point_t *vertices_2, int num_vertices_2)
 
int bg_trimesh_normals (vect_t **onorms, int *ifaces, int n_ifaces, point_t *p, int n_p)
 Compute vertex normals for a mesh based on the connected faces. More...
 
int bg_trimesh_optimize (int **ofaces, int *n_ofaces, point_t **opnts, vect_t **onorms, int *n_opnts, const int *ifaces, int n_ifaces, const point_t *ipnts, const vect_t *inorms, struct bg_trimesh_optimization_settings *s)
 Return trimesh information for a 3D mesh that contains just the date needed to represent in the mesh. Used to finalize intermediate processing meshes to generate a compact mesh for export or storage. More...
 
int bg_trimesh_2d_gc (int **ofaces, int *n_ofaces, point2d_t **opnts, int *n_opnts, const int *ifaces, int n_ifaces, const point2d_t *ipnts)
 Return trimesh information for a planar (2D) mesh that contains just the set of points active in the mesh. More...
 
int bg_trimesh_3d_gc (int **ofaces, point_t **opnts, int *n_opnts, const int *faces, int num_faces, const point_t *in_pts)
 Return trimesh information for a 3D mesh that contains just the set of points active in the mesh. More...
 
int bg_trimesh_sync (int *of, int *f, int fcnt)
 Return a face set where all topologically connected faces are oriented consistently relative to their neighbors. More...
 
int bg_trimesh_split (int ***ofs, int **ofc, int *f, int fcnt)
 Return a set of face sets where all topologically connected faces are grouped into common sets. More...
 
int bg_trimesh_2d_plot3 (const char *fname, const int *faces, size_t num_faces, const point2d_t *pnts, size_t num_pnts)
 Return a set of face sets where all topologically connected faces are grouped into common sets. More...