Developer Documentation
Loading...
Searching...
No Matches
QuadNode.hh
1
/*===========================================================================*\
2
* *
3
* OpenFlipper *
4
* Copyright (c) 2001-2015, RWTH-Aachen University *
5
* Department of Computer Graphics and Multimedia *
6
* All rights reserved. *
7
* www.openflipper.org *
8
* *
9
*---------------------------------------------------------------------------*
10
* This file is part of OpenFlipper. *
11
*---------------------------------------------------------------------------*
12
* *
13
* Redistribution and use in source and binary forms, with or without *
14
* modification, are permitted provided that the following conditions *
15
* are met: *
16
* *
17
* 1. Redistributions of source code must retain the above copyright notice, *
18
* this list of conditions and the following disclaimer. *
19
* *
20
* 2. Redistributions in binary form must reproduce the above copyright *
21
* notice, this list of conditions and the following disclaimer in the *
22
* documentation and/or other materials provided with the distribution. *
23
* *
24
* 3. Neither the name of the copyright holder nor the names of its *
25
* contributors may be used to endorse or promote products derived from *
26
* this software without specific prior written permission. *
27
* *
28
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39
* *
40
\*===========================================================================*/
41
42
43
44
45
46
47
//=============================================================================
48
//
49
// CLASS QuadNode
50
//
51
//=============================================================================
52
53
#ifndef ACG_QUADNODE_HH
54
#define ACG_QUADNODE_HH
55
56
//=============================================================================
57
58
#include "BaseNode.hh"
59
#include <vector>
60
61
//=============================================================================
62
63
namespace
ACG
{
64
namespace
SceneGraph {
65
66
//=============================================================================
67
68
69
class
ACGDLLEXPORT
QuadNode
:
public
BaseNode
70
{
71
72
public
:
73
74
typedef
std::vector<ACG::Vec3f> PointVector;
75
76
QuadNode
(
BaseNode
* _parent=0,
77
const
std::string& _name=
"<QuadNode>"
);
78
virtual
~QuadNode
();
79
80
ACG_CLASSNAME(
QuadNode
);
81
82
83
DrawModes::DrawMode
availableDrawModes()
const override
;
84
85
void
boundingBox(
Vec3d
& _bbMin,
Vec3d
& _bbMax)
override
;
86
void
draw(
GLState
& _state,
const
DrawModes::DrawMode
& _drawMode)
override
;
87
void
pick(
GLState
& _state,
PickTarget
_target)
override
;
88
89
void
add_quad(
const
ACG::Vec3f
& _p0,
90
const
ACG::Vec3f
& _p1,
91
const
ACG::Vec3f
& _p2,
92
const
ACG::Vec3f
& _p3 )
93
{
94
point_.push_back( _p0 );
95
point_.push_back( _p1 );
96
point_.push_back( _p2 );
97
point_.push_back( _p3 );
98
99
ACG::Vec3f
n = ( _p1 - _p0 ) % ( _p2 - _p1 );
100
if
( n.
norm
() > 0.00001 )
101
n.
normalize
();
102
else
103
n =
Vec3f
( 0, 0, 0 );
104
normal_.push_back( n );
105
}
106
107
void
clear()
108
{
109
point_.clear();
110
normal_.clear();
111
}
112
113
protected
:
114
115
enum
FaceMode { FACE_NORMALS, FACE_COLORS, PER_VERTEX };
116
117
void
draw_vertices();
118
void
draw_faces();
119
void
draw_wireframe();
120
121
PointVector point_;
122
PointVector normal_;
123
124
};
125
126
127
//=============================================================================
128
}
// namespace SceneGraph
129
}
// namespace ACG
130
//=============================================================================
131
#endif
// ACG_QUADNODE_HH defined
132
//=============================================================================
ACG::GLState
Definition
GLState.hh:214
ACG::SceneGraph::BaseNode
Definition
BaseNode.hh:105
ACG::SceneGraph::DrawModes::DrawMode
Specifies a DrawMode.
Definition
DrawModes.hh:288
ACG::SceneGraph::QuadNode
Definition
QuadNode.hh:70
OpenMesh::VectorT
Definition
Vector11T.hh:83
OpenMesh::VectorT::normalize
auto normalize() -> decltype(*this/=std::declval< VectorT< S, DIM > >().norm())
Definition
Vector11T.hh:454
OpenMesh::VectorT::norm
auto norm() const -> decltype(std::sqrt(std::declval< VectorT< S, DIM > >().sqrnorm()))
compute euclidean norm
Definition
Vector11T.hh:434
ACG::SceneGraph::PickTarget
PickTarget
What target to use for picking.
Definition
PickTarget.hh:74
ACG
Namespace providing different geometric functions concerning angles.
Definition
BaseObjectData.hh:68
OpenFlipper
libs_required
ACG
Scenegraph
QuadNode.hh
Generated on Wed Jul 16 2025 14:44:32 for Developer Documentation by
1.9.8