Subversion Repositories gelsvn

Rev

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

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