00001
00002
00003
00004
00005
00006
00007
00008
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;
00027 double d;
00028 double l;
00029 CameraRecd left, right;
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
00071