Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Beta/3D/Object3d.hpp

Go to the documentation of this file.
00001 // 3D objects and derivates
00002 
00003 #ifndef __J2K__Object3D_hp_
00004 #define __J2K__Object3D_hp_
00005 
00006 // Les includes spécifiques BC++.
00007 #include <owl/dc.h>
00008 
00009 // Les includes non spécifiques.
00010 #include "maille.hpp"
00011 #include "vecteur.hpp"
00012 #include "vbdobj.hpp"
00013 
00014 struct Fenetre3D;
00015 struct BoiteLimite3D;
00016 struct SphereLimite3D;
00017 struct Objet3D;
00018 struct CapteurVisuel3D;
00019 struct Observateur3D;
00020 struct Scene3D;
00021 
00022 DefType(Fenetre3D)
00023 DefType(BoiteLimite3D)
00024 DefType(SphereLimite3D)
00025 DefType(Objet3D)
00026 DefType(CapteurVisuel3D)
00027 DefType(Observateur3D)
00028 DefType(Scene3D)
00029 
00030 ///////////////////////////////////////////////////////////////////////////////
00031 // La classe des fenêtres de projection.
00032 ///////////////////////////////////////////////////////////////////////////////
00033 struct Fenetre3D
00034  {
00035  Pixel _center,
00036        _halfsize;
00037 
00038  Fenetre3D() : _center(0,0),_halfsize(0,0){ }
00039  Fenetre3D(int x, int y, int dx, int dy ) : _center(x,y),
00040                                             _halfsize(dx, dy){ }
00041  };
00042 
00043 ///////////////////////////////////////////////////////////////////////////////
00044 // La classe des boites limites.
00045 ///////////////////////////////////////////////////////////////////////////////
00046 struct BoiteLimite3D
00047   {
00048   Sommet3DH _csg, _cid;
00049 
00050   BoiteLimite3D() { }
00051   BoiteLimite3D( Sommet3DH csg, Sommet3DH cid ) : _csg(csg),
00052                                                   _cid(csg) { }
00053   };
00054 
00055 ////////////////////////////////////////////////////////////////////////////
00056 // La classe des sphères limites.
00057 ////////////////////////////////////////////////////////////////////////////
00058 struct SphereLimite3D
00059   {
00060   Sommet3DH _center;
00061   realtype  _rayon;
00062 
00063   SphereLimite3D(): _rayon(0) { }
00064   SphereLimite3D( Sommet3DH& s, realtype r): _center(s), _rayon(r) { }
00065   };
00066 
00067 ////////////////////////////////////////////////////////////////////////////
00068 // Classe de base des objets tridimensionnels.
00069 ////////////////////////////////////////////////////////////////////////////
00070 struct Objet3D : public VBDObject
00071   {
00072   Maillage3DH    data; // le maillage.
00073   BoiteLimite3D  boite; // la boite limite.
00074   SphereLimite3D _sphere; // la sphère limite.
00075   PScene3D       _dans; // la scene dans laquelle se trouve l'objet.
00076 
00077   Objet3D(PScene3D scene = 0 )
00078      {
00079       _dans = scene;
00080      }
00081   };
00082 
00083 
00084 ///////////////////////////////////////////////////////////////////////////////
00085 // Classe des capteurs visuels tridimensionnels.
00086 ///////////////////////////////////////////////////////////////////////////////
00087 class CapteurVisuel3D : public Objet3D
00088   {
00089   realtype      _spin, // rolling initial.
00090                 _ouverture, // l'ouverture du capteur en degré.
00091                 _profondeur; // la profondeur du capteur.
00092   Fenetre3D     _fenetre; // la fenêtre de visualisation du capteur.
00093   Vector3DH    _direction; // le vecteur vision.
00094   Matrice44     _perspective; // la matrice de transformation perspective.
00095 
00096 
00097   CapteurVisuel3D( Scene3D* scene = NULL ) : Objet3D( scene ),
00098                                              _spin       ( 0 ),
00099                                              _ouverture  ( 0 ),
00100                                              _profondeur ( 0 ) { }
00101 
00102   // le calcul des matrices.
00103   void CalculPerspective ();
00104 
00105   // la visualisation d'un objet.
00106   void VisualisationFilaireObjet( HDC, const Objet3D& );
00107 
00108   // la visualisation de la scène.
00109   void VisualisationFilaireScene( HDC );
00110   };
00111 
00112 ////////////////////////////////////////////////////////////////////////////
00113 // Classe des scènes tridimensionnelles.
00114 // Dans cette première version la scène est une scène basique
00115 // avec un seul capteur visuel et un seul objet.
00116 ////////////////////////////////////////////////////////////////////////////
00117 class Scene3D
00118 {
00119   public:
00120   Objet3D* _obj;
00121 
00122   Scene3D( Objet3D* obj = NULL ) : _obj( obj ) { }
00123   ~Scene3D() { }
00124 
00125   void VisualisationFilaire( HDC, const CapteurVisuel3D& );
00126 };
00127 
00128 #endif
00129 
00130 
00131 

Generated on Sun Oct 14 18:46:08 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001