00001
00052 #include <math.h>
00053
00054 #define _EXPORT_CCL_
00055
00056 #include "CigiTrajectoryDefV3.h"
00057 #include "CigiSwapping.h"
00058 #include "CigiExceptions.h"
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069 CigiTrajectoryDefV3::CigiTrajectoryDefV3()
00070 {
00071
00072 PacketID = CIGI_TRAJECTORY_DEF_PACKET_ID_V3;
00073 PacketSize = CIGI_TRAJECTORY_DEF_PACKET_SIZE_V3;
00074 Version = 3;
00075 MinorVersion = 0;
00076
00077 EntityID = 0;
00078 Accel = 0.0;
00079 RetardationRate = 0.0;
00080 TermVel = 0.0;
00081 Xoff = 0.0;
00082 Yoff = 0.0;
00083 Zoff = 0.0;
00084 AccelX = 0.0f;
00085 AccelY = 0.0f;
00086 AccelZ = 0.0f;
00087
00088 }
00089
00090
00091
00092
00093 CigiTrajectoryDefV3::~CigiTrajectoryDefV3()
00094 {
00095
00096 }
00097
00098
00099
00100
00101
00102
00103
00104
00105 int CigiTrajectoryDefV3::Pack(CigiBasePacket * Base, Cigi_uint8 * Buff, void *Spec) const
00106 {
00107 PackPointer CDta;
00108
00109 CigiBaseTrajectoryDef * Data = ( CigiBaseTrajectoryDef *)Base;
00110
00111 CDta.c = Buff;
00112
00113 *CDta.c++ = PacketID;
00114 *CDta.c++ = PacketSize;
00115
00116 *CDta.s++ = Data->EntityID;
00117 *CDta.f++ = Data->AccelX;
00118 *CDta.f++ = Data->AccelY;
00119 *CDta.f++ = Data->AccelZ;
00120 *CDta.f++ = Data->RetardationRate;
00121 *CDta.f++ = Data->TermVel;
00122
00123 return(PacketSize);
00124
00125 }
00126
00127
00128
00129
00130 int CigiTrajectoryDefV3::Unpack(Cigi_uint8 * Buff, bool Swap, void *Spec)
00131 {
00132 PackPointer CDta;
00133
00134 CDta.c = Buff;
00135
00136 CDta.c += 2;
00137
00138 if(!Swap)
00139 {
00140 EntityID = *CDta.s++;
00141 AccelX = *CDta.f++;
00142 AccelY = *CDta.f++;
00143 AccelZ = *CDta.f++;
00144 RetardationRate = *CDta.f++;
00145 TermVel = *CDta.f++;
00146 }
00147 else
00148 {
00149 CigiSwap2(&EntityID, CDta.s++);
00150 CigiSwap4(&AccelX, CDta.f++);
00151 CigiSwap4(&AccelY, CDta.f++);
00152 CigiSwap4(&AccelZ, CDta.f++);
00153 CigiSwap4(&RetardationRate, CDta.f++);
00154 CigiSwap4(&TermVel, CDta.f++);
00155 }
00156
00157 Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00158
00159 Xoff = 0.0;
00160 Yoff = 0.0;
00161 Zoff = 0.0;
00162
00163 return(PacketSize);
00164
00165 }
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177 int CigiTrajectoryDefV3::SetAccelX(const float AccelIn, bool bndchk)
00178 {
00179 AccelX = AccelIn;
00180 Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00181
00182 return(CIGI_SUCCESS);
00183 }
00184
00185
00186
00187
00188
00189 int CigiTrajectoryDefV3::SetAccelY(const float AccelIn, bool bndchk)
00190 {
00191 AccelY = AccelIn;
00192 Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00193
00194 return(CIGI_SUCCESS);
00195 }
00196
00197
00198
00199
00200
00201 int CigiTrajectoryDefV3::SetAccelZ(const float AccelIn, bool bndchk)
00202 {
00203 AccelZ = AccelIn;
00204 Accel = (float)sqrt((double)((AccelX*AccelX) + (AccelY*AccelY) + (AccelZ*AccelZ)));
00205
00206 return(CIGI_SUCCESS);
00207 }