00001
00002
00003 #ifndef __J2K__Object3D_hp_
00004 #define __J2K__Object3D_hp_
00005
00006
00007 #include <owl/dc.h>
00008
00009
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
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
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
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
00069
00070 struct Objet3D : public VBDObject
00071 {
00072 Maillage3DH data;
00073 BoiteLimite3D boite;
00074 SphereLimite3D _sphere;
00075 PScene3D _dans;
00076
00077 Objet3D(PScene3D scene = 0 )
00078 {
00079 _dans = scene;
00080 }
00081 };
00082
00083
00084
00085
00086
00087 class CapteurVisuel3D : public Objet3D
00088 {
00089 realtype _spin,
00090 _ouverture,
00091 _profondeur;
00092 Fenetre3D _fenetre;
00093 Vector3DH _direction;
00094 Matrice44 _perspective;
00095
00096
00097 CapteurVisuel3D( Scene3D* scene = NULL ) : Objet3D( scene ),
00098 _spin ( 0 ),
00099 _ouverture ( 0 ),
00100 _profondeur ( 0 ) { }
00101
00102
00103 void CalculPerspective ();
00104
00105
00106 void VisualisationFilaireObjet( HDC, const Objet3D& );
00107
00108
00109 void VisualisationFilaireScene( HDC );
00110 };
00111
00112
00113
00114
00115
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