Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BMESHcurvature_data Class Reference

Computes curvature data for a BMESH object. More...

#include <bmesh_curvature.H>

Collaboration diagram for BMESHcurvature_data:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Constructors
 BMESHcurvature_data (const BMESH *mesh_in)
 Computes all curvature data for the given BMESH.
Curvature Data Queries
curv_tensor_t curv_tensor (const Bvert *v)
diag_curv_t diag_curv (const Bvert *v)
double k1 (const Bvert *v)
double k2 (const Bvert *v)
Wvec pdir1 (const Bvert *v)
Wvec pdir2 (const Bvert *v)
dcurv_tensor_t dcurv_tensor (const Bvert *v)
double feature_size ()

Private Member Functions

Curvature Computation Functions
void compute_corner_areas ()
void compute_vertex_areas ()
void compute_face_curvatures ()
void compute_vertex_curvatures ()
void diagonalize_vertex_curvatures ()
void compute_face_dcurv ()
void compute_vertex_dcurv ()
void compute_feature_size ()
 Compute a "feature size" for the mesh: computed as 1% of the reciprocal of the 10-th percentile curvature.

Private Attributes

const BMESHmesh
std::vector< corner_areas_tcorner_areas
 "Voronoi" corner areas for all faces.
std::vector< double > vertex_areas
 "Voronoi" areas for all vertices.
std::vector< curv_tensor_tface_curv
 Per-face curvature tensors.
std::vector< curv_tensor_tvertex_curv
 Per-vertex curvature tensors.
std::vector< diag_curv_tdiag_vertex_curv
 Diagonolized per-vertex curvature tensors.
std::vector< dcurv_tensor_tface_dcurv
 Per-face curvature derivative tensors.
std::vector< dcurv_tensor_tvertex_dcurv
 Per-vertex curvature derivative tensors.
double mesh_feature_size
 Feature size of the mesh.

Classes

struct  corner_areas_t
 Stores "Voronoi" corner area values for a single face in a mesh. More...
struct  curv_tensor_t
 Stores the three unique values of a 2x2 curvature tensor. More...
struct  dcurv_tensor_t
 Stores the four unique values of a 2x2x2 curvature derivative tensor. More...
struct  diag_curv_t
 Stores the results of diagonalizing a curvature tensor for a vertex. Specifically it stores the principal curvatures and directions for a vertex. More...

Detailed Description

Computes curvature data for a BMESH object.

Definition at line 23 of file bmesh_curvature.H.


Constructor & Destructor Documentation

BMESHcurvature_data::BMESHcurvature_data const BMESH mesh_in  ) 
 

Computes all curvature data for the given BMESH.

Computes curvature and curvature derivatives for the given BMESH.

Definition at line 58 of file bmesh_curvature.C.

References compute_corner_areas(), compute_face_curvatures(), compute_face_dcurv(), compute_feature_size(), compute_vertex_areas(), compute_vertex_curvatures(), compute_vertex_dcurv(), and diagonalize_vertex_curvatures().


Member Function Documentation

void BMESHcurvature_data::compute_corner_areas  )  [private]
 

Computes the corner areas for all faces in the given BMESH. These are used for weighting purposes when computing the curvatures for the BMESH's vertices.

Definition at line 139 of file bmesh_curvature.C.

References Bface::area(), BMESH::bf(), compute_edge_vectors(), corner_areas, j, mlib::Vec3< V >::length_sqrd(), mesh, and BMESH::nfaces().

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_face_curvatures  )  [private]
 

Computes the curvatures per face for all faces in the given BMESH. Each face's curvature is estimated based on the variation of normals along its edges.

Definition at line 220 of file bmesh_curvature.C.

References BMESH::bf(), compute_edge_vectors(), compute_ntb_coord_sys(), face_curv, j, mesh, BMESH::nfaces(), Bvert::norm(), and Bface::v().

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_face_dcurv  )  [private]
 

Computes the derivative of curvature per face for all faces in the given BMESH. Each face's curvature derivative is estimated based on the variation of the per vertex curvatures along its edges.

Definition at line 372 of file bmesh_curvature.C.

References BMESH::bf(), compute_edge_vectors(), compute_ntb_coord_sys(), diag_vertex_curv, face_dcurv, Bvert::index(), j, k1(), k2(), mesh, BMESH::nfaces(), pdir1(), pdir2(), proj_curv(), and Bface::v().

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_feature_size  )  [private]
 

Compute a "feature size" for the mesh: computed as 1% of the reciprocal of the 10-th percentile curvature.

Definition at line 490 of file bmesh_curvature.C.

References diag_vertex_curv, int(), k1(), k2(), mesh, mesh_feature_size, min(), and BMESH::nverts().

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_vertex_areas  )  [private]
 

Computes vertex areas for all vertices in the given BMESH. These are used for weighting purposes when computing the curvatures for the BMESH's vertices.

Definition at line 195 of file bmesh_curvature.C.

References BMESH::bf(), corner_areas, Bvert::index(), mesh, BMESH::nfaces(), BMESH::nverts(), Bface::v1(), Bface::v2(), Bface::v3(), and vertex_areas.

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_vertex_curvatures  )  [private]
 

Computes the curvatures per vertex for all vertices in the given BMESH. The curvature of each vertex is estimated based on the weighted average of curvatures for each face surrounding that vertex.

Definition at line 286 of file bmesh_curvature.C.

References BMESH::bf(), compute_edge_vectors(), compute_initial_vertex_coord_sys(), compute_ntb_coord_sys(), corner_areas, face_curv, Bvert::index(), j, mesh, BMESH::nfaces(), BMESH::nverts(), pdir1(), pdir2(), proj_curv(), Bface::v(), vertex_areas, and vertex_curv.

Referenced by BMESHcurvature_data().

void BMESHcurvature_data::compute_vertex_dcurv  )  [private]
 

Computes the derivative of curvature per vertex for all vertices in the given BMESH. The curvature derivative of each vertex is estimated based on the weighted average of curvature derivatives for each face surrounding that vertex.

Definition at line 450 of file bmesh_curvature.C.

References BMESH::bf(), compute_edge_vectors(), compute_ntb_coord_sys(), corner_areas, diag_vertex_curv, face_dcurv, Bvert::index(), j, mesh, BMESH::nfaces(), BMESH::nverts(), pdir1(), pdir2(), proj_dcurv(), Bface::v(), vertex_areas, and vertex_dcurv.

Referenced by BMESHcurvature_data().

BMESHcurvature_data::curv_tensor_t BMESHcurvature_data::curv_tensor const Bvert v  ) 
 

Definition at line 76 of file bmesh_curvature.C.

References Bvert::index(), and vertex_curv.

Referenced by Bvert::curv_tensor().

BMESHcurvature_data::dcurv_tensor_t BMESHcurvature_data::dcurv_tensor const Bvert v  ) 
 

Definition at line 124 of file bmesh_curvature.C.

References Bvert::index(), and vertex_dcurv.

Referenced by Bvert::dcurv_tensor().

BMESHcurvature_data::diag_curv_t BMESHcurvature_data::diag_curv const Bvert v  ) 
 

Definition at line 84 of file bmesh_curvature.C.

References diag_vertex_curv, and Bvert::index().

Referenced by Bvert::diag_curv().

void BMESHcurvature_data::diagonalize_vertex_curvatures  )  [private]
 

Computes the principal directions and curvatures per vertex for the given BMESH. These values are computed based on precomputed per vertex curvature tensors from the compute_vertex_curvature() function.

Definition at line 332 of file bmesh_curvature.C.

References BMESH::bv(), compute_initial_vertex_coord_sys(), diag_vertex_curv, diagonalize_curv(), k1(), k2(), mesh, Bvert::norm(), BMESH::nverts(), pdir1(), pdir2(), and vertex_curv.

Referenced by BMESHcurvature_data().

double BMESHcurvature_data::feature_size  )  [inline]
 

Definition at line 178 of file bmesh_curvature.H.

References mesh_feature_size.

Referenced by XToonTexture::update_cam().

double BMESHcurvature_data::k1 const Bvert v  ) 
 

Definition at line 92 of file bmesh_curvature.C.

References diag_vertex_curv, and Bvert::index().

Referenced by compute_face_dcurv(), compute_feature_size(), diagonalize_vertex_curvatures(), and Bvert::k1().

double BMESHcurvature_data::k2 const Bvert v  ) 
 

Definition at line 100 of file bmesh_curvature.C.

References diag_vertex_curv, and Bvert::index().

Referenced by compute_face_dcurv(), compute_feature_size(), diagonalize_vertex_curvatures(), and Bvert::k2().

Wvec BMESHcurvature_data::pdir1 const Bvert v  ) 
 

Definition at line 108 of file bmesh_curvature.C.

References diag_vertex_curv, and Bvert::index().

Referenced by compute_face_dcurv(), compute_vertex_curvatures(), compute_vertex_dcurv(), diagonalize_vertex_curvatures(), and Bvert::pdir1().

Wvec BMESHcurvature_data::pdir2 const Bvert v  ) 
 

Definition at line 116 of file bmesh_curvature.C.

References diag_vertex_curv, and Bvert::index().

Referenced by compute_face_dcurv(), compute_vertex_curvatures(), compute_vertex_dcurv(), diagonalize_vertex_curvatures(), and Bvert::pdir2().


Member Data Documentation

std::vector<corner_areas_t> BMESHcurvature_data::corner_areas [private]
 

"Voronoi" corner areas for all faces.

Definition at line 187 of file bmesh_curvature.H.

Referenced by compute_corner_areas(), compute_vertex_areas(), compute_vertex_curvatures(), and compute_vertex_dcurv().

std::vector<diag_curv_t> BMESHcurvature_data::diag_vertex_curv [private]
 

Diagonolized per-vertex curvature tensors.

Definition at line 191 of file bmesh_curvature.H.

Referenced by compute_face_dcurv(), compute_feature_size(), compute_vertex_dcurv(), diag_curv(), diagonalize_vertex_curvatures(), k1(), k2(), pdir1(), and pdir2().

std::vector<curv_tensor_t> BMESHcurvature_data::face_curv [private]
 

Per-face curvature tensors.

Definition at line 189 of file bmesh_curvature.H.

Referenced by compute_face_curvatures(), and compute_vertex_curvatures().

std::vector<dcurv_tensor_t> BMESHcurvature_data::face_dcurv [private]
 

Per-face curvature derivative tensors.

Definition at line 192 of file bmesh_curvature.H.

Referenced by compute_face_dcurv(), and compute_vertex_dcurv().

const BMESH* BMESHcurvature_data::mesh [private]
 

Definition at line 185 of file bmesh_curvature.H.

Referenced by compute_corner_areas(), compute_face_curvatures(), compute_face_dcurv(), compute_feature_size(), compute_vertex_areas(), compute_vertex_curvatures(), compute_vertex_dcurv(), and diagonalize_vertex_curvatures().

double BMESHcurvature_data::mesh_feature_size [private]
 

Feature size of the mesh.

Definition at line 194 of file bmesh_curvature.H.

Referenced by compute_feature_size(), and feature_size().

std::vector<double> BMESHcurvature_data::vertex_areas [private]
 

"Voronoi" areas for all vertices.

Definition at line 188 of file bmesh_curvature.H.

Referenced by compute_vertex_areas(), compute_vertex_curvatures(), and compute_vertex_dcurv().

std::vector<curv_tensor_t> BMESHcurvature_data::vertex_curv [private]
 

Per-vertex curvature tensors.

Definition at line 190 of file bmesh_curvature.H.

Referenced by compute_vertex_curvatures(), curv_tensor(), and diagonalize_vertex_curvatures().

std::vector<dcurv_tensor_t> BMESHcurvature_data::vertex_dcurv [private]
 

Per-vertex curvature derivative tensors.

Definition at line 193 of file bmesh_curvature.H.

Referenced by compute_vertex_dcurv(), and dcurv_tensor().


The documentation for this class was generated from the following files:
Generated on Mon Sep 18 11:44:33 2006 for jot by  doxygen 1.4.4