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