CoordFrameNode.hh
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #ifndef ACG_COORDFRAMENODE_HH
00054 #define ACG_COORDFRAMENODE_HH
00055
00056
00057
00058
00059
00060 #include "MaterialNode.hh"
00061 #include <vector>
00062
00063
00064
00065
00066
00067 namespace ACG {
00068 namespace SceneGraph {
00069
00070
00071
00072
00073
00074
00081 class ACGDLLEXPORT CoordFrameNode : public MaterialNode
00082 {
00083 public:
00084
00086 CoordFrameNode(BaseNode* _parent=0,
00087 const std::string& _name="<CoordFrameNode>" );
00088
00090 ~CoordFrameNode() {}
00091
00092
00094 ACG_CLASSNAME(CoordFrameNode);
00096 unsigned int availableDrawModes() const;
00098 void boundingBox(Vec3f& _bbMin, Vec3f& _bbMax);
00100 void draw(GLState& _state, unsigned int _drawMode);
00101
00102
00104 void update_bounding_box();
00106 void set_bounding_box(const Vec3f& _bb_min, const Vec3f& _bb_max);
00108 const Vec3f& bb_min() const { return bb_min_; }
00110 const Vec3f& bb_max() const { return bb_max_; }
00111
00112
00114 const std::vector<float>& x_planes() const { return x_planes_; }
00116 const std::vector<float>& y_planes() const { return y_planes_; }
00118 const std::vector<float>& z_planes() const { return z_planes_; }
00119
00120
00122 void set_x_planes(const std::vector<float>& _planes) { x_planes_ = _planes; }
00124 void set_y_planes(const std::vector<float>& _planes) { y_planes_ = _planes; }
00126 void set_z_planes(const std::vector<float>& _planes) { z_planes_ = _planes; }
00127
00128
00130 void add_x_plane(float _x) { x_planes_.push_back(_x); }
00132 void add_y_plane(float _y) { y_planes_.push_back(_y); }
00134 void add_z_plane(float _z) { z_planes_.push_back(_z); }
00135
00136
00138 void del_x_plane(float _x) {
00139 x_planes_.erase(std::find(x_planes_.begin(), x_planes_.end(), _x));
00140 }
00142 void del_y_plane(float _y) {
00143 y_planes_.erase(std::find(y_planes_.begin(), y_planes_.end(), _y));
00144 }
00146 void del_z_plane(float _z) {
00147 z_planes_.erase(std::find(z_planes_.begin(), z_planes_.end(), _z));
00148 }
00149
00150
00151
00152
00153
00154 private:
00155
00157 CoordFrameNode(const CoordFrameNode& _rhs);
00159 CoordFrameNode& operator=(const CoordFrameNode& _rhs);
00160
00161
00162
00163 Vec3f bb_min_, bb_max_;
00164
00165
00166 std::vector<float> x_planes_, y_planes_, z_planes_;
00167 };
00168
00169
00170
00171 }
00172 }
00173
00174 #endif // ACG_COORDFRAMENODE_HH defined
00175
00176