VR-Forces 4.0.4 Class Documentation
include/vrvUtil/DtGreatCircleCurveGenerator.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2012 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrvUtil/vrvUtil.h>
00013 
00014 #include <matrix/vlVector.h>
00015 #include <vector>
00016 
00017 class DtReferenceEllipsoid;
00018 
00019 namespace makVrv
00020 {
00021    
00029    class DT_DLL_VRVUTIL DtGreatCircleCurveGenerator
00030    {
00031    public:
00035       typedef std::vector<DtVector> GreatCircleCurve;
00036 
00039       DtGreatCircleCurveGenerator( const DtVector& startGeod );
00040 
00042       DtGreatCircleCurveGenerator( const DtGreatCircleCurveGenerator& orig );
00043 
00045       DtGreatCircleCurveGenerator& operator=(const DtGreatCircleCurveGenerator&);
00046 
00048       virtual ~DtGreatCircleCurveGenerator();
00049 
00052       virtual void setRadius( double radius );
00053 
00055       virtual double radius() const;
00056 
00058       virtual const GreatCircleCurve& generateCurve( const DtVector& endGeod,
00059          double heightScale=0., int maxSegments=500., 
00060          double preferredSegmentSize=1000. );
00061 
00063       virtual const GreatCircleCurve& curve() const;
00064 
00067       virtual double arcLengthTo( const DtVector& endGeod ) const;
00068 
00070       virtual double initialBearingTo( const DtVector& endGeod ) const;
00071 
00075       virtual DtVector calcPercentAlongGreatCircle( const DtVector& endGeod, 
00076          double percentage, double heightScale=0. );
00077 
00083       virtual double altitudeForPoint( const DtVector& endGeod, 
00084          double percent, double heightScale ) const;
00085       
00088       virtual double radiusAtLatitude( const DtReferenceEllipsoid& ellipsoid, 
00089          double lat ) const;
00090 
00091    protected:
00092 
00095       virtual void generateMeridionalCurve( const DtVector& endGeod, 
00096          int numSegments, double heightScale );
00097 
00099       virtual void generateNonmeridionalCurve( const DtVector& endGeod, 
00100          int numSegments, double heightScale );
00101 
00102    private:
00103 
00105       DtGreatCircleCurveGenerator();
00106 
00107    protected:
00108 
00109       GreatCircleCurve myCurve;
00110       DtVector myStartGeod;
00111       double myRadius;
00112    };
00113 
00114 }
00115 
00116 

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)