Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

glutm/shape.h

Go to the documentation of this file.
00001 #ifndef GLUTM_SHAPE_H
00002 #define GLUTM_SHAPE_H
00003 
00004 /*
00005 
00006   GLT OpenGL C++ Toolkit (LGPL)
00007   Copyright (C) 2000-2002 Nigel Stewart  
00008 
00009   Email: nigels.com@gmail.com   
00010   WWW:   http://www.nigels.com/glt/
00011 
00012   This library is free software; you can redistribute it and/or
00013   modify it under the terms of the GNU Lesser General Public
00014   License as published by the Free Software Foundation; either
00015   version 2.1 of the License, or (at your option) any later version.
00016 
00017   This library is distributed in the hope that it will be useful,
00018   but WITHOUT ANY WARRANTY; without even the implied warranty of
00019   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020   Lesser General Public License for more details.
00021 
00022   You should have received a copy of the GNU Lesser General Public
00023   License along with this library; if not, write to the Free Software
00024   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00025 
00026 */
00027 
00033 #include <glutm/config.h>
00034 
00035 #include <node/shape.h>
00036 
00038 
00045 class GlutSphere : public GltShape
00046 {
00047 public:
00055     GlutSphere(const bool solid = true,const GLdouble radius = 1.0,const GLint slices = 15,const GLint stacks = 15);
00057     ~GlutSphere();
00058 
00059     //
00060 
00061     virtual void     draw() const;
00062     virtual GLdouble volume() const;
00063     virtual bool     inside(const Vector &pos) const;
00064     virtual void     boundingBox(BoundingBox &box) const;
00065     virtual bool     povrayExport(std::ostream &os) const;
00066 
00067     //
00068     // Position
00069     //
00070 
00076     void position(const Vector &pos,const double radius);
00077 
00078     //
00079     // Get/set
00080     //
00081 
00083     GLdouble &radius();
00085     GLint    &slices();
00087     GLint    &stacks();
00088 
00090     const GLdouble &radius() const;
00092     const GLint    &slices() const;
00094     const GLint    &stacks() const;
00095 
00096 private:
00097 
00098     GLdouble _radius;
00099     GLint    _slices;
00100     GLint    _stacks;
00101 };
00102 
00104 
00111 class GlutCube : public GltShape
00112 {
00113 public:
00119     GlutCube(const bool solid = true,const GLdouble size = 2.0);
00126     GlutCube(const bool solid       ,const Vector &min,const Vector &max);
00128     ~GlutCube();
00129 
00130     virtual void     draw() const;
00131     virtual GLdouble volume() const;
00132     virtual void     boundingBox(BoundingBox &box) const;
00133     virtual bool     povrayExport(std::ostream &os) const;
00134 
00135     //
00136     // Position
00137     //
00138 
00144     void position(const Vector &min,const Vector &max);
00152     void position(const Vector &pos,const real width,const real height,const real depth);
00153 
00154     //
00155     // Get/set
00156     //
00157 
00159           GLdouble &size();
00161     const GLdouble &size() const;
00162 
00163 private:
00164 
00165     GLdouble    _size;
00166 };
00167 
00169 
00176 class GlutCylinder : public GltShape
00177 {
00178 public:
00188     GlutCylinder(const bool solid = true,const GLdouble radius = 1.0,const GLdouble height = 1.0,const GLint slices = 15,const GLint stacks = 10,const GLint loops = 5);
00190     ~GlutCylinder();
00191 
00192     virtual void     draw() const;
00193     virtual GLdouble volume() const;
00194     virtual void     boundingBox(BoundingBox &box) const;
00195     virtual bool     povrayExport(std::ostream &os) const;
00196 
00197     //
00198     // Position
00199     //
00200 
00207     void position(const Vector &begin,const Vector &end,const double radius);
00208 
00209     //
00210     // Get/Set
00211     //
00212 
00214     GLdouble &radius();
00216     GLdouble &height();
00218     GLint    &slices();
00220     GLint    &stacks();
00222     GLint    &loops();
00223 
00225     const GLdouble &radius() const;
00227     const GLdouble &height() const;
00229     const GLint    &slices() const;
00231     const GLint    &stacks() const;
00233     const GLint    &loops()  const;
00234 
00235 private:
00236 
00237     GLdouble _radius;
00238     GLdouble _height;
00239     GLint    _slices;
00240     GLint    _stacks;
00241     GLint    _loops;
00242 };
00243 
00245 
00252 class GlutCone : public GltShape
00253 {
00254 public:
00263     GlutCone(const bool solid = true,const GLdouble base = 1.0,const GLdouble height = 1.0,const GLint slices = 15,const GLint stacks = 10);
00265     ~GlutCone();
00266 
00267     virtual void     draw() const;
00268     virtual GLdouble volume() const;
00269     virtual void     boundingBox(BoundingBox &box) const;
00270 
00272     GLdouble &base();
00274     GLdouble &height();
00276     GLint    &slices();
00278     GLint    &stacks();
00279 
00281     const GLdouble &base() const;
00283     const GLdouble &height() const;
00285     const GLint    &slices() const;
00287     const GLint    &stacks() const;
00288 
00289 private:
00290 
00291     GLdouble _base;
00292     GLdouble _height;
00293     GLint    _slices;
00294     GLint    _stacks;
00295 };
00296 
00298 
00305 class GlutTorus : public GltShape
00306 {
00307 public:
00316     GlutTorus(const bool solid = true,const GLdouble innerRadius = 0.5,const GLdouble outerRadius = 1.0,const GLint nsides = 10,const GLint rings = 16);
00318     ~GlutTorus();
00319 
00320     virtual void draw() const;
00321 
00323     GLdouble &innerRadius();
00325     GLdouble &outerRadius();
00327     GLint    &nsides();
00329     GLint    &rings();
00330 
00332     const GLdouble &innerRadius() const;
00334     const GLdouble &outerRadius() const;
00336     const GLint    &nsides() const;
00338     const GLint    &rings() const;
00339 
00340 private:
00341 
00342     GLdouble _innerRadius;
00343     GLdouble _outerRadius;
00344     GLint    _nsides;
00345     GLint    _rings;
00346 };
00347 
00349 
00356 class GlutDodecahedron : public GltShape
00357 {
00358 public:
00363     GlutDodecahedron(const bool solid = true);
00365     ~GlutDodecahedron();
00366 
00367     virtual void draw() const;
00368 };
00369 
00371 
00378 class GlutOctahedron : public GltShape
00379 {
00380 public:
00385     GlutOctahedron(const bool solid = true);
00387     ~GlutOctahedron();
00388 
00389     virtual void draw() const;
00390 };
00391 
00393 
00400 class GlutTetrahedron : public GltShape
00401 {
00402 public:
00407     GlutTetrahedron(const bool solid = true);
00409     ~GlutTetrahedron();
00410 
00411     virtual void draw() const;
00412 };
00413 
00415 
00422 class GlutIcosahedron : public GltShape
00423 {
00424 public:
00429     GlutIcosahedron(const bool solid = true);
00431     ~GlutIcosahedron();
00432 
00433     virtual void draw() const;
00434 };
00435 
00437 
00444 class GlutTeapot : public GltShape
00445 {
00446 public:
00452     GlutTeapot(const bool solid = true,const GLdouble size = 1.0);
00454     ~GlutTeapot();
00455 
00456     virtual void draw() const;
00457 
00459           GLdouble &size();
00461     const GLdouble &size() const;
00462 
00463 private:
00464 
00465     GLdouble    _size;
00466 };
00467 
00468 #endif

Generated on Tue Nov 5 11:11:04 2002 for GLT by doxygen1.2.18