Subversion Repositories gelsvn

Rev

Rev 667 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 667 Rev 676
Line 25... Line 25...
25
 
25
 
26
namespace GLGraphics {
26
namespace GLGraphics {
27
 
27
 
28
class VisObj
28
class VisObj
29
{
29
{
30
    std::string file;
30
    std::string file = "";
31
    GLGraphics::GLViewController view_ctrl;
31
    GLGraphics::GLViewController view_ctrl;
32
    bool create_display_list;
32
    bool create_display_list = true;
33
    
33
    
34
    HMesh::Manifold mani;
34
    HMesh::Manifold mani;
35
    HMesh::Manifold old_mani;
35
    HMesh::Manifold old_mani;
36
    
36
    
37
    GLGraphics::ManifoldRenderer* renderer;
37
    GLGraphics::ManifoldRenderer* renderer = nullptr;
38
    
38
    
39
    bool active_selection;
39
    bool active_selection = false;
40
    HMesh::VertexAttributeVector<int> vertex_selection;
40
    HMesh::VertexAttributeVector<int> vertex_selection;
-
 
41
    HMesh::VertexAttributeVector<double> scalar_field;
-
 
42
    HMesh::VertexAttributeVector<CGLA::Vec3d> line_field;
41
    
43
    
42
    HMesh::Harmonics* harm;
44
    HMesh::Harmonics* harm;
43
    CGLA::Vec3d bsphere_center;
45
    CGLA::Vec3d bsphere_center;
44
    float bsphere_radius;
46
    float bsphere_radius;
45
    
47
    
46
    void produce_renderer(const std::string& display_method , Console& cs, bool smooth, float gamma);
48
    void produce_renderer(const std::string& display_method , Console& cs, bool smooth, float gamma);
47
    void draw_selection();
49
    void draw_selection();
48
public:
50
public:
49
    
51
    
50
    VisObj(): file(""), create_display_list(true), renderer(nullptr), active_selection(false), view_ctrl(WINX,WINY, CGLA::Vec3f(0), 1.0) {}
52
    VisObj(): view_ctrl(WINX,WINY, CGLA::Vec3f(0), 1.0) {}
51
    
53
    
52
    HMesh::VertexAttributeVector<int>& get_vertex_selection() {
54
    HMesh::VertexAttributeVector<int>& get_vertex_selection() {
53
        return vertex_selection;
55
        return vertex_selection;
54
    }
56
    }
55
    bool select_vertex(const CGLA::Vec2i& pos);
57
    bool select_vertex(const CGLA::Vec2i& pos);
56
    void clear_selection() {
58
    void clear_selection() {
57
        for(auto vid : mani.vertices()) vertex_selection[vid] = 0;
59
        for(auto vid : mani.vertices()) vertex_selection[vid] = 0;
58
        active_selection = false;
60
        active_selection = false;
59
    }
61
    }
60
    
62
    
-
 
63
    HMesh::VertexAttributeVector<double>& get_scalar_field_attrib_vector() {
-
 
64
        return scalar_field;
-
 
65
    }
-
 
66
 
-
 
67
    HMesh::VertexAttributeVector<CGLA::Vec3d>& get_line_field_attrib_vector() {
-
 
68
        return line_field;
-
 
69
    }
-
 
70
    
61
    const std::string& file_name() const {return file;}
71
    const std::string& file_name() const {return file;}
62
    
72
    
63
    float get_bsphere_radius() const { return bsphere_radius;}
73
    float get_bsphere_radius() const { return bsphere_radius;}
64
    
74
    
65
    HMesh::Manifold& mesh() {return mani;}
75
    HMesh::Manifold& mesh() {return mani;}
Line 84... Line 94...
84
    }
94
    }
85
    
95
    
86
    void harmonics_analyze() {
96
    void harmonics_analyze() {
87
        harm = new HMesh::Harmonics(mani);
97
        harm = new HMesh::Harmonics(mani);
88
    }
98
    }
-
 
99
 
-
 
100
    void harmonics_reset_shape() {
-
 
101
        harm->reset_shape();
89
    
102
    }
-
 
103
 
-
 
104
    void harmonics_partial_reconstruct(int E0, int E1, float scale) {
-
 
105
        harm->partial_reconstruct(E0,E1, scale);
-
 
106
    }
-
 
107
 
90
};
108
};
91
 
109
 
92
}
110
}
93
#endif
111
#endif