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

bmesh_curvature.C File Reference

Contains the implementation of the curvature computation classes for the BMESH class. More...

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include "mlib/points.H"
#include "mlib/linear_sys.H"
#include "mesh/bvert.H"
#include "mesh/bface.H"
#include "mesh/bmesh.H"
#include "mesh/bmesh_curvature.H"

Include dependency graph for bmesh_curvature.C:

Go to the source code of this file.

Functions

void rot_coord_sys (const Wvec &old_u, const Wvec &old_v, const Wvec &new_norm, Wvec &new_u, Wvec &new_v)
 Rotate a coordinate system to be perpendicular to the given normal.
void proj_curv (const Wvec &old_u, const Wvec &old_v, double old_ku, double old_kuv, double old_kv, const Wvec &new_u, const Wvec &new_v, double &new_ku, double &new_kuv, double &new_kv)
 Reproject a curvature tensor from the basis spanned by old_u and old_v (which are assumed to be unit-length and perpendicular) to the new_u, new_v basis.
void proj_dcurv (const Wvec &old_u, const Wvec &old_v, const BMESHcurvature_data::dcurv_tensor_t &old_dcurv, const Wvec &new_u, const Wvec &new_v, BMESHcurvature_data::dcurv_tensor_t &new_dcurv)
 Like proj_curv(), but for the derivative of curvature.
void diagonalize_curv (const Wvec &old_u, const Wvec &old_v, double ku, double kuv, double kv, const Wvec &new_norm, Wvec &pdir1, Wvec &pdir2, double &k1, double &k2)
 Given a curvature tensor, find principal directions and curvatures.
void compute_edge_vectors (const BMESH *mesh, int face_idx, Wvec edges[3])
void compute_ntb_coord_sys (const Wvec edges[3], Wvec &n, Wvec &t, Wvec &b)
void compute_initial_vertex_coord_sys (const BMESH *mesh, vector< Wvec > &pdir1, vector< Wvec > &pdir2)


Detailed Description

Contains the implementation of the curvature computation classes for the BMESH class.

Note:
This code is taken almost verbatim from the TriMesh2 library written by Szymon Rusinkiewicz of Princeton University (http://www.cs.princeton.edu/gfx/proj/trimesh2/).

Definition in file bmesh_curvature.C.


Function Documentation

void compute_edge_vectors const BMESH mesh,
int  face_idx,
Wvec  edges[3]
[inline]
 

Definition at line 648 of file bmesh_curvature.C.

References BMESH::bf(), Bvert::loc(), Bface::v1(), Bface::v2(), and Bface::v3().

Referenced by BMESHcurvature_data::compute_corner_areas(), BMESHcurvature_data::compute_face_curvatures(), BMESHcurvature_data::compute_face_dcurv(), BMESHcurvature_data::compute_vertex_curvatures(), and BMESHcurvature_data::compute_vertex_dcurv().

void compute_initial_vertex_coord_sys const BMESH mesh,
vector< Wvec > &  pdir1,
vector< Wvec > &  pdir2
[inline]
 

Definition at line 672 of file bmesh_curvature.C.

References BMESH::bf(), BMESH::bv(), mlib::cross(), Bvert::index(), Bvert::loc(), BMESH::nfaces(), Bvert::norm(), mlib::Vec4::normalized(), BMESH::nverts(), Bface::v1(), Bface::v2(), and Bface::v3().

Referenced by BMESHcurvature_data::compute_vertex_curvatures(), and BMESHcurvature_data::diagonalize_vertex_curvatures().

void compute_ntb_coord_sys const Wvec  edges[3],
Wvec n,
Wvec t,
Wvec b
[inline]
 

Definition at line 660 of file bmesh_curvature.C.

References mlib::cross(), mlib::Vec4::normalized(), and mlib::Vec3< V >::normalized().

Referenced by BMESHcurvature_data::compute_face_curvatures(), BMESHcurvature_data::compute_face_dcurv(), BMESHcurvature_data::compute_vertex_curvatures(), and BMESHcurvature_data::compute_vertex_dcurv().

void diagonalize_curv const Wvec old_u,
const Wvec old_v,
double  ku,
double  kuv,
double  kv,
const Wvec new_norm,
Wvec pdir1,
Wvec pdir2,
double &  k1,
double &  k2
 

Given a curvature tensor, find principal directions and curvatures.

Makes sure that pdir1 and pdir2 are perpendicular to normal.

Definition at line 615 of file bmesh_curvature.C.

References mlib::cross(), rot_coord_sys(), and swap().

Referenced by BMESHcurvature_data::diagonalize_vertex_curvatures().

void proj_curv const Wvec old_u,
const Wvec old_v,
double  old_ku,
double  old_kuv,
double  old_kv,
const Wvec new_u,
const Wvec new_v,
double &  new_ku,
double &  new_kuv,
double &  new_kv
 

Reproject a curvature tensor from the basis spanned by old_u and old_v (which are assumed to be unit-length and perpendicular) to the new_u, new_v basis.

Definition at line 553 of file bmesh_curvature.C.

References mlib::cross(), and rot_coord_sys().

Referenced by BMESHcurvature_data::compute_face_dcurv(), and BMESHcurvature_data::compute_vertex_curvatures().

void proj_dcurv const Wvec old_u,
const Wvec old_v,
const BMESHcurvature_data::dcurv_tensor_t old_dcurv,
const Wvec new_u,
const Wvec new_v,
BMESHcurvature_data::dcurv_tensor_t new_dcurv
 

Like proj_curv(), but for the derivative of curvature.

Definition at line 576 of file bmesh_curvature.C.

References mlib::cross(), and rot_coord_sys().

Referenced by BMESHcurvature_data::compute_vertex_dcurv().

void rot_coord_sys const Wvec old_u,
const Wvec old_v,
const Wvec new_norm,
Wvec new_u,
Wvec new_v
 

Rotate a coordinate system to be perpendicular to the given normal.

Definition at line 527 of file bmesh_curvature.C.

References mlib::cross().

Referenced by diagonalize_curv(), proj_curv(), and proj_dcurv().


Generated on Mon Sep 18 11:39:52 2006 for jot by  doxygen 1.4.4