Subversion Repositories gelsvn

Rev

Rev 578 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* ----------------------------------------------------------------------- *
 * This file is part of GEL, http://www.imm.dtu.dk/GEL
 * Copyright (C) the authors and DTU Informatics
 * For license and list of authors, see ../../doc/intro.pdf
 * ----------------------------------------------------------------------- */

/**
 * @file curvature.h
 * @brief Compute various curvature measures from meshes.
 */

#ifndef __MESHEDIT_CURVATURE_H__
#define __MESHEDIT_CURVATURE_H__

#include <vector>
#include "Manifold.h"

namespace CGLA
{
    class Vec3d;
    class Mat2x2d;
    class Mat3x3d;
    class Ma4x4d;
}

namespace HMesh
{
    class Manifold;
    template<typename ITEM>
    class VertexAttributeVector;

    double voronoi_area(const Manifold& m, 
                        VertexID v);

    double barycentric_area(const Manifold& m, 
                            VertexID v);

    void unnormalized_mean_curvature_normal(const Manifold& m, 
                                            VertexID v, 
                                            CGLA::Vec3d& curv_normal, 
                                            double& w_sum);

    CGLA::Vec3d mean_curvature_normal(  const Manifold& m, 
                                        VertexID v);

    double sum_curvatures(  const Manifold& m, 
                            VertexAttributeVector<double>& curvature);


    double gaussian_curvature_angle_defect( const Manifold& m, 
                                            VertexID v);

    CGLA::Mat3x3d curvature_tensor( const Manifold& m, 
                                    HalfEdgeID h);

    CGLA::Mat3x3d curvature_tensor_from_edge( const Manifold& m, 
                                              HalfEdgeID h);


    void curvature_tensor_paraboloid(   const Manifold& m, 
                                        VertexID v,
                                        CGLA::Mat2x2d& curv_tensor, 
                                        CGLA::Mat3x3d& frame);

    void curvature_tensors_from_edges(  const Manifold& m, 
                                        VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors);

    void smooth_curvature_tensors(  const Manifold& m, 
                                    VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors);

    void gaussian_curvature_angle_defects(  const Manifold& m, 
                                            VertexAttributeVector<double>& curvature, 
                                            int smooth_steps=0);

    void mean_curvatures(   const Manifold& m, 
                            VertexAttributeVector<double>& curvature,
                            int smooth_steps=0);


    void curvature_paraboloids( const Manifold& m, 
                                VertexAttributeVector<CGLA::Vec3d>& min_curv_direction, 
                                VertexAttributeVector<CGLA::Vec3d>& max_curv_direction, 
                               VertexAttributeVector<double>& curvature);


    void curvature_from_tensors(const Manifold& m, 
                                const VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors,
                                VertexAttributeVector<CGLA::Vec3d>& min_curv_direction,
                                VertexAttributeVector<CGLA::Vec3d>& max_curv_direction,
                                VertexAttributeVector<double>& curvature);


}

#endif

Generated by GNU Enscript 1.6.6.