stereod.h

Go to the documentation of this file.
00001 
00002 /* ///////////////////////////////////////////////////////////////////////// */
00003 /* This file is a part of the BSTools package                                */
00004 /* written by Przemyslaw Kiciak                                              */
00005 /* ///////////////////////////////////////////////////////////////////////// */
00006 /* (C) Copyright by Przemyslaw Kiciak, 2005, 2008                            */
00007 /* this package is distributed under the terms of the                        */
00008 /* Lesser GNU Public License, see the file COPYING.LIB                       */
00009 /* ///////////////////////////////////////////////////////////////////////// */
00010 
00011 #include <string.h>
00012 #include <math.h>
00013 
00014 #ifndef STEREOD_H
00015 #define STEREOD_H
00016 
00017 #ifndef CAMERAD_H
00018 #include "camerad.h"
00019 #endif
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00025 typedef struct StereoRecd {
00026   point3d    position;         /* position of the observer        */
00027   double      d;               /* distance between the eyes       */
00028   double      l;               /* distance from the object centre */
00029   CameraRecd left, right;      /* cameras of the eyes             */
00030   trans3d    STr, STrInv;
00031 } StereoRecd;
00032 
00033 
00034 void StereoInitFramed ( StereoRecd *Stereo, boolean upside,
00035                         short width, short height, short xmin, short ymin,
00036                         double aspect, int ncplanes );
00037 void StereoSetDimd ( StereoRecd *Stereo, double f, double d, double l );
00038 void StereoSetMagd ( StereoRecd *Stereo, char mag );
00039 void StereoSetDepthRanged ( StereoRecd *Stereo, double zmin, double zmax );
00040 void StereoSetMappingd ( StereoRecd *Stereo );
00041 void StereoInitPosd ( StereoRecd *Stereo );
00042 void StereoSetRotCentred ( StereoRecd *Stereo,
00043                            point3d *centre,
00044                            boolean global_coord, boolean global_fixed );
00045 void StereoUpdateRotCentred ( StereoRecd *Stereo );
00046 void StereoMoveGd ( StereoRecd *Stereo, vector3d *v );
00047 void StereoMoveCd ( StereoRecd *Stereo, vector3d *v );
00048 void StereoRotGd ( StereoRecd *Stereo, double _psi, double _theta, double _phi );
00049 #define StereoRotXGd(Stereo,angle) \
00050   StereoRotGd ( Stereo, 0.0, angle, 0.0 )
00051 #define StereoRotYGd(Stereo,angle) \
00052   StereoRotGd ( Stereo, 0.5*PI, angle, -0.5*PI )
00053 #define StereoRotZGd(Stereo,angle) \
00054   StereoRotGd ( Stereo, angle, 0.0, 0.0 )
00055 void StereoRotVGd ( StereoRecd *Stereo, vector3d *v, double angle );
00056 void StereoRotCd ( StereoRecd *Stereo, double _psi, double _theta, double _phi );
00057 #define StereoRotXCd(Stereo,angle) \
00058   StereoRotCd ( Stereo, 0.0, angle, 0.0 )
00059 #define StereoRotYCd(Stereo,angle) \
00060   StereoRotCd ( Stereo, 0.5*PI, angle, -0.5*PI )
00061 #define StereoRotZCd(Stereo,angle) \
00062   StereoRotCd ( Stereo, angle, 0.0, 0.0 )
00063 void StereoRotVCd ( StereoRecd *Stereo, vector3d *v, double angle );
00064 void StereoZoomd ( StereoRecd *Stereo, double fchange );
00065 
00066 #ifdef __cplusplus
00067 }
00068 #endif
00069 
00070 #endif /*STEREOD_H*/
00071