VR-Forces 4.0.4 Class Documentation
include/vrvUtil/DtUnitConverterCollection.h
Go to the documentation of this file.
00001 /********************************************************************
00002  * Copyright (c) 2011 MaK Technologies, Inc.
00003  * All rights reserved.
00004  ********************************************************************/
00005 /********************************************************************
00006  * $RCSfile: DtUnitConverterCollection.h,v $ $Revision: 1.8 $ $State: Exp $
00007  ********************************************************************/
00008 
00012 
00013 #pragma once
00014 #include <vrvUtil/vrvUtil.h>
00015 #include <vrvUtil/DtUnitConverter.h>
00016 #include <vrvUtil/DtUnicode.h>
00017 #include <boost/unordered_map.hpp>
00018 
00019 class DtVector;
00020 class DtTaitBryan;
00021 
00022 namespace makVrv
00023 {
00024 
00029    class DT_DLL_VRVUTIL DtUnitConverterCollection
00030    {
00031    public:
00032 
00037       enum DisplayUnitType
00038       {
00039          Time,
00040          Distance,
00041          Altitude,
00042          Velocity,
00043          Acceleration,
00044          RotVelocity,
00045          Orientation,
00046          End_DisplayUnitTypes
00047       };
00048 
00050       DtUnitConverterCollection();
00051 
00053       DtUnitConverterCollection(const DtUnitConverterCollection&);
00054 
00056       ~DtUnitConverterCollection();
00057 
00060 
00062       double convertDistance(
00063          makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits distUnits,
00064          double distance ) const;
00065 
00067       double convertSpeed(
00068          makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits speedUnits,
00069          double speed ) const;
00070 
00072       DtVector convertVelocity(
00073          makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits velUnits,
00074          const DtVector& velocity ) const;
00075 
00077       double convertAcceleration(
00078          makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits accelUnits,
00079          double accel ) const;
00080 
00082       DtVector convertAcceleration(
00083          makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits accelUnits,
00084          const DtVector& accel ) const;
00085 
00087       DtTaitBryan convertOrientation(
00088          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits oriUnits,
00089          const DtTaitBryan& orientation ) const;
00090 
00092       double convertAngle(
00093          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits oriUnits,
00094          double angle ) const;
00095 
00097       DtVector convertRotationalVelocity(
00098          makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits wUnits,
00099          const DtVector& rotVel ) const;
00100 
00102 
00105 
00107       double revertDistance(
00108          makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits distUnits,
00109          double distance ) const;
00110 
00112       double revertSpeed(
00113          makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits velUnits,
00114          double speed ) const;
00115 
00117       DtVector revertVelocity(
00118          makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits velUnits,
00119          const DtVector& velocity ) const;
00120 
00122       DtVector revertAcceleration(
00123          makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits accelUnits,
00124          DtVector accel ) const;
00125 
00127       double revertAcceleration(
00128          makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits accelUnits,
00129          double accel ) const;
00130 
00132       DtTaitBryan revertOrientation(
00133          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits oriUnits,
00134          const DtTaitBryan& ori ) const;
00135 
00137       double revertAngle(
00138          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits oriUnits,
00139          double angle ) const;
00140 
00142       DtVector revertRotationalVelocity(
00143          makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits wUnits,
00144          const DtVector& rotVel ) const;
00145 
00147 
00151       void addUnitConverter(DisplayUnitType type, 
00152          unsigned int unit, const DtUnitConverter* converter );
00153 
00154 
00157 
00159       const DtTimeUnitConverter* timeConverterFor(
00160          makArchives::DtDisplayUnitsSettingsRecord::TimeUnits unit ) const;
00161 
00163       const DtDistanceUnitConverter* distanceConverterFor(
00164          makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits unit ) const;
00165 
00167       const DtOrientationUnitConverter* orientationConverterFor(
00168          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits unit ) const;
00169 
00171 
00172    protected:
00173 
00175       void addDefaultConverters();
00176 
00179 
00181       double distanceConversionFactor(
00182          makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits units ) const;
00183 
00185       double velocityConversionFactor(
00186          makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits units ) const;
00187 
00189       double accelerationConversionFactor(
00190          makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits units ) const;
00191 
00193       double angleConversionFactor(
00194          makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits units ) const;
00195 
00197       double rotationalVelocityConversionFactor(
00198          makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits units ) const;
00199 
00201 
00202    protected:
00203 
00204       typedef boost::unordered_map<unsigned int,const DtUnitConverter*> 
00205          UnitConverterMap;
00206       typedef boost::unordered_map<unsigned int,UnitConverterMap> 
00207          UnitConverterTypeMap;
00208 
00209       UnitConverterTypeMap myConverters;
00210 
00211    private:
00212       
00214       DtUnitConverterCollection& operator=(const DtUnitConverterCollection&);
00215 
00216    };
00217 
00218 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)