Subversion Repositories gelsvn

Rev

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

Rev Author Line No. Line
514 s042372 1
/* ----------------------------------------------------------------------- *
572 jab 2
 * This file is part of GEL, http://www.imm.dtu.dk/GEL
3
 * Copyright (C) the authors and DTU Informatics
4
 * For license and list of authors, see ../../doc/intro.pdf
514 s042372 5
 * ----------------------------------------------------------------------- */
6
 
578 jab 7
/**
8
 * @file curvature.h
9
 * @brief Compute various curvature measures from meshes.
10
 */
11
 
514 s042372 12
#ifndef __MESHEDIT_CURVATURE_H__
13
#define __MESHEDIT_CURVATURE_H__
14
 
15
#include <vector>
586 jab 16
#include "Manifold.h"
514 s042372 17
 
18
namespace CGLA
19
{
20
    class Vec3d;
21
    class Mat2x2d;
22
    class Mat3x3d;
23
    class Ma4x4d;
24
}
25
 
26
namespace HMesh
27
{
518 s042372 28
    class Manifold;
29
    template<typename ITEM>
30
    class VertexAttributeVector;
31
 
514 s042372 32
    double voronoi_area(const Manifold& m, 
33
                        VertexID v);
34
 
35
    double barycentric_area(const Manifold& m, 
36
                            VertexID v);
37
 
38
    void unnormalized_mean_curvature_normal(const Manifold& m, 
39
                                            VertexID v, 
40
                                            CGLA::Vec3d& curv_normal, 
41
                                            double& w_sum);
42
 
43
    CGLA::Vec3d mean_curvature_normal(  const Manifold& m, 
44
                                        VertexID v);
45
 
46
    double sum_curvatures(  const Manifold& m, 
47
                            VertexAttributeVector<double>& curvature);
48
 
49
 
50
    double gaussian_curvature_angle_defect( const Manifold& m, 
51
                                            VertexID v);
52
 
53
    CGLA::Mat3x3d curvature_tensor( const Manifold& m, 
54
                                    HalfEdgeID h);
55
 
56
    CGLA::Mat3x3d curvature_tensor_from_edge( const Manifold& m, 
57
                                              HalfEdgeID h);
58
 
59
 
60
    void curvature_tensor_paraboloid(   const Manifold& m, 
61
                                        VertexID v,
62
                                        CGLA::Mat2x2d& curv_tensor, 
63
                                        CGLA::Mat3x3d& frame);
64
 
65
    void curvature_tensors_from_edges(  const Manifold& m, 
66
                                        VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors);
67
 
68
    void smooth_curvature_tensors(  const Manifold& m, 
69
                                    VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors);
70
 
71
    void gaussian_curvature_angle_defects(  const Manifold& m, 
72
                                            VertexAttributeVector<double>& curvature, 
73
                                            int smooth_steps=0);
74
 
75
    void mean_curvatures(   const Manifold& m, 
76
                            VertexAttributeVector<double>& curvature,
77
                            int smooth_steps=0);
78
 
79
 
80
    void curvature_paraboloids( const Manifold& m, 
81
                                VertexAttributeVector<CGLA::Vec3d>& min_curv_direction, 
82
                                VertexAttributeVector<CGLA::Vec3d>& max_curv_direction, 
83
                               VertexAttributeVector<double>& curvature);
84
 
85
 
86
    void curvature_from_tensors(const Manifold& m, 
87
                                const VertexAttributeVector<CGLA::Mat3x3d>& curvature_tensors,
88
                                VertexAttributeVector<CGLA::Vec3d>& min_curv_direction,
89
                                VertexAttributeVector<CGLA::Vec3d>& max_curv_direction,
90
                                VertexAttributeVector<double>& curvature);
91
 
92
 
93
}
94
 
95
#endif