update refman

This commit is contained in:
Sébastien Loriot 2013-08-08 19:07:24 +02:00
parent 0aecc320f4
commit c843d165c9
2 changed files with 23 additions and 25 deletions

View File

@ -14,9 +14,9 @@ class DeformationClosestRotationTraits_3{
public:
/// \name Types
/// @{
/// <I>3x3</I> matrix type with copy constructor and assignment operator
/// <I>3x3</I> matrix type having a copy constructor and an assignment operator
typedef Hidden_type Matrix;
/// <I>3x1</I> vector type with copy constructor
/// <I>3D</I> vector type having a copy constructor
typedef Hidden_type Vector;
/// @}
@ -44,18 +44,16 @@ public:
/// Returns an identity matrix
Matrix identity_matrix();
/// Returns a zero initialized matrix
/// Returns a matrix initialized with zero
Matrix zero_matrix();
/// Returns a vector initialized with parameters
/// Returns the vector (x,y,z)
Vector vector(double x, double y, double z);
/// Returns `i`th coefficient of a vector
double vector_coeff(const Vector& v, int i);
/// Computes a rotation matrix close to `m` and places it into `R`
/// \note It is expecting to provide the closest rotation in Frobenius norm, however not returning the closest rotation does not lead to a crash or non-convergence.
/// For example in the context of the deformation, always returning the identity matrix independently of `m` will result in a naive Laplacian deformation.
void compute_close_rotation(const Matrix& m, Matrix& R);
/// @}

View File

@ -105,7 +105,7 @@ class Deform_mesh
//Typedefs
public:
/// \name Template parameter types
/// \name Template parameters
/// @{
// typedefed template parameters, main reason is doxygen creates autolink to typedefs but not template parameters
typedef HG Halfedge_graph; /**< model of HalfedgeGraph */
@ -152,9 +152,9 @@ public:
#else
CR // no parameter provided, and Eigen is not enabled: so don't compile!
#endif
>::type CR_helper;
>::type Closest_rotation_helper;
#else
typedef CR CR_helper; /**< model of DeformationClosestRotationTraits_3 */
typedef CR Closest_rotation_helper; /**< model of DeformationClosestRotationTraits_3 */
#endif
// vertex point pmap
@ -184,8 +184,8 @@ private:
typedef std::list<vertex_descriptor> Handle_container;
typedef std::list<Handle_container> Handle_group_container;
typedef typename CR_helper::Matrix CR_matrix;
typedef typename CR_helper::Vector CR_vector;
typedef typename Closest_rotation_helper::Matrix CR_matrix;
typedef typename Closest_rotation_helper::Vector CR_vector;
public:
/** The type used as the representative of a group of handles*/
@ -250,7 +250,7 @@ private:
// Public methods
public:
/// \name Preprocess Section
/// \name Preprocessing
/// @{
/// \cond SKIP_FROM_MANUAL
@ -325,7 +325,7 @@ private:
public:
/**
* Puts the object in the same state as after the creation (except iterations and tolerance).
* Puts `*this` in the same state as after the creation (except iterations and tolerance).
*/
void reset()
{
@ -567,9 +567,9 @@ public:
assemble_laplacian_and_factorize();
return last_preprocess_successful; // which is set by assemble_laplacian_and_factorize()
}
/// @} Preprocess Section
/// @} Preprocessing
/// \name Deform Section
/// \name Deformation
/// @{
/**
* Sets the transformation to apply to all the vertices in a group of handles to be a translation by vector `t`.
@ -695,7 +695,7 @@ public:
// copy solution to target mesh
assign_solution();
}
/// @} Deform Section
/// @} Deformation
/// \name Utilities
/// @{
@ -788,7 +788,7 @@ public:
}
// also set rotation matrix to identity
std::fill(rot_mtr.begin(), rot_mtr.end(), CR_helper().identity_matrix());
std::fill(rot_mtr.begin(), rot_mtr.end(), Closest_rotation_helper().identity_matrix());
need_preprocess_both(); // now we need reprocess
}
@ -886,7 +886,7 @@ private:
rot_mtr[v_ros_id] = old_rot_mtr[ old_ros_id_map[v_id] ];
}
else {
rot_mtr[v_ros_id] = CR_helper().identity_matrix();
rot_mtr[v_ros_id] = Closest_rotation_helper().identity_matrix();
}
}
@ -1053,7 +1053,7 @@ private:
}
void optimal_rotations_arap()
{
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
CR_matrix cov = cr_helper.zero_matrix();
// only accumulate ros vertices
@ -1082,7 +1082,7 @@ private:
}
void optimal_rotations_spokes_and_rims()
{
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
CR_matrix cov =cr_helper.zero_matrix();
// only accumulate ros vertices
@ -1170,7 +1170,7 @@ private:
typename Sparse_linear_solver::Vector Y(ros.size()), By(ros.size());
typename Sparse_linear_solver::Vector Z(ros.size()), Bz(ros.size());
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
// assemble right columns of linear system
for ( std::size_t k = 0; k < ros.size(); k++ )
@ -1232,7 +1232,7 @@ private:
typename Sparse_linear_solver::Vector Y(ros.size()), By(ros.size());
typename Sparse_linear_solver::Vector Z(ros.size()), Bz(ros.size());
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
// assemble right columns of linear system
for ( std::size_t k = 0; k < ros.size(); k++ )
@ -1322,7 +1322,7 @@ private:
}
double energy_arap() const
{
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
double sum_of_energy = 0;
// only accumulate ros vertices
@ -1350,7 +1350,7 @@ private:
}
double energy_spokes_and_rims() const
{
CR_helper cr_helper;
Closest_rotation_helper cr_helper;
double sum_of_energy = 0;
// only accumulate ros vertices
@ -1393,7 +1393,7 @@ private:
/// p1 - p2, return CR_vector
CR_vector sub_to_CR_vector(const Point& p1, const Point& p2) const
{
return CR_helper().vector(p1.x() - p2.x(), p1.y() - p2.y(), p1.z() - p2.z());
return Closest_rotation_helper().vector(p1.x() - p2.x(), p1.y() - p2.y(), p1.z() - p2.z());
}
template<class Vect>