00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef INC_GRE_3DPATH_H
00033 #define INC_GRE_3DPATH_H
00034
00035 #ifndef INC_GRE_BASE_H
00036 #include <gre/base.h>
00037 #endif
00038
00039 #ifndef INC_MI32_POINT_H
00040 #include <mi32/point.h>
00041 #endif
00042
00043 #ifndef INC_MI32_SPATREF_H
00044 #include <mi32/spatref.h>
00045 #endif
00046
00047
00048 #ifndef GENERATING_DOXYGEN_OUTPUT
00049 struct MDISP3DPATHANGLE {
00050 double Roll;
00051 double Pitch;
00052 double Yaw;
00053 };
00054
00055 struct MDISP3DPATHPOINT {
00056 double Time;
00057 double TurnTime;
00058 DPOINT3D ViewPos;
00059 DPOINT3D ViewDir;
00060 DPOINT3D ViewUp;
00061 DPOINT3D LinearVel;
00062 DPOINT3D LinearAcc;
00063 MDISP3DPATHANGLE AngularVel;
00064 MDISP3DPATHANGLE AngularAcc;
00065 };
00066
00067 struct MDISP3DPATHSEGMENT {
00068 UINT32 NumPoints;
00069 UINT32 flags;
00070 UINT8 ZMode;
00071 UINT8 SpeedMode;
00072 UINT8 ViewElevationMode;
00073 double ZValue;
00074 double SpeedValue;
00075 double ViewElevationAngle;
00076 double StartAngle;
00077 double EndAngle;
00078 DPOINT3D Center;
00079 };
00080
00081 struct MDISP3DPATHVIEW {
00082 double StereoDistance0;
00083 double StereoDepthScale;
00084 double ZScale;
00085 double BaseElevation;
00086
00087 };
00088
00089 struct _MDISP3DPATH {
00090 UINT32 NumSegments;
00091 UINT32 MaxSegments;
00092 MDISP3DPATHSEGMENT *Segment;
00093 UINT32 NumPoints;
00094 UINT32 MaxPoints;
00095 MDISP3DPATHPOINT *Point;
00096 double MaxLinearVel;
00097 double MaxLinearAcc;
00098 double MaxLinearDec;
00099 MDISP3DPATHANGLE MaxAngularAcc;
00100 MDISP3DPATHANGLE MaxAngularVel;
00101 SPATREF::COORDREFSYS PointCoordRefSys;
00102 MDISP3DPATHVIEW View;
00103
00104 _MDISP3DPATH (
00105 ) :
00106 NumSegments(0),
00107 MaxSegments(0),
00108 Segment(0),
00109 NumPoints(0),
00110 MaxPoints(0),
00111 Point(0),
00112 MaxLinearVel(0.0),
00113 MaxLinearAcc(0.0),
00114 MaxLinearDec(0.0)
00115 {
00116 };
00117 };
00118 typedef _MDISP3DPATH *MDISP3DPATH;
00119
00120 #define PATH3D_SEGMENTFLAG_TimeSet 0x00000001
00121 #define PATH3D_SEGMENTFLAG_ViewToPoint 0x00000002
00122 #define PATH3D_SEGMENTFLAG_Panoramic 0x00000004
00123 #define PATH3D_SEGMENTFLAG_Orbit 0x00000008
00124 #define PATH3D_SEGMENTFLAG_DualSweep 0x00000020
00125
00126 #define PATH3D_ZMODE_Variable 0
00127 #define PATH3D_ZMODE_FixedAboveSurface 1
00128 #define PATH3D_ZMODE_FixedAbsolute 2
00129
00130 #define PATH3D_SPEEDMODE_Variable 0
00131 #define PATH3D_SPEEDMODE_Constant 1
00132
00133 #define PATH3D_VIEWELEVATIONMODE_Variable 0
00134 #define PATH3D_VIEWELEVATIONMODE_Constant 1
00135 #define PATH3D_VIEWELEVATIONMODE_PathRelative 2
00136
00137 extern "C" {
00138
00139 int Mdisp3dPathClear (MDISP3DPATH);
00140 int Mdisp3dPathCompute (MDISP3DPATH);
00141 double Mdisp3dPathComputeSegmentLength (MDISP3DPATH, UINT32);
00142 double Mdisp3dPathComputeSegmentTime (MDISP3DPATH, UINT32);
00143 double Mdisp3dPathComputeSegmentSweepAngle (MDISP3DPATH, UINT32);
00144 double Mdisp3dPathComputeTotalLength (MDISP3DPATH);
00145 double Mdisp3dPathComputeTotalTime (MDISP3DPATH);
00146 int Mdisp3dPathCreate (MDISP3DPATH*, GRE::GROUP*);
00147 void Mdisp3dPathDestroy (MDISP3DPATH);
00148 int Mdisp3dPathPointAppend (MDISP3DPATH, MDISP3DPATHPOINT*);
00149
00150 int Mdisp3dSimPlayCreate (void**, MDISP3DPATH, GRE::VIEW*);
00151 void Mdisp3dSimPlayDestroy (void*);
00152 int Mdisp3dSimPlayDrawFrame (void*, int);
00153 int Mdisp3dSimPlayIncrement (void*, double);
00154 void Mdisp3dSimPlayGetPositionOverall (void*, UINT32*, double*);
00155 void Mdisp3dSimPlayGetPositionSegment (void*, UINT32*, UINT32*, double*);
00156 void Mdisp3dSimPlayOpenObjects (void*);
00157 int Mdisp3dSimPlaySetPositionSegment (void*, UINT32, UINT32);
00158 void Mdisp3dSimPlaySetReduceSpeckle (void*, UINT8);
00159 int Mdisp3dSimPlaySetSurfaceLayer (void*, GRE::LAYER_SURFACE*);
00160 void Mdisp3dSimPlayGetSurfTrans (void*, void**);
00161 void Mdisp3dSimPlayGetPositionDirection (void*, DPOINT3D*, DPOINT3D*);
00162 void Mdisp3dSimPlayGetOrbitRadius (void*, DOUBLE*);
00163
00164 }
00165
00166 #endif // GENERATING_DOXYGEN_OUTPUT
00167
00168
00169 #endif // INC_GRE_3DPATH_H