ObsAvoiAlgoPFM.h

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 //
00003 // $Id$
00004 //
00005 // Copyright 2008, 2009, 2010, 2011, 2012  Antonio Franchi and Paolo Stegagno    
00006 //
00007 // This file is part of MIP.
00008 //
00009 // MIP is free software: you can redistribute it and/or modify
00010 // it under the terms of the GNU General Public License as published by
00011 // the Free Software Foundation, either version 3 of the License, or
00012 // (at your option) any later version.
00013 //
00014 // MIP is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 // GNU General Public License for more details.
00018 //
00019 // You should have received a copy of the GNU General Public License
00020 // along with MIP. If not, see <http://www.gnu.org/licenses/>.
00021 //
00022 // Contact info: antonio.franchi@tuebingen.mpg.de stegagno@diag.uniroma1.it
00023 //
00024 // ----------------------------------------------------------------------------
00025 
00026 
00030 
00031 
00032 #ifndef __OBS_AVOI_ALGO_PFM_H
00033 #define __OBS_AVOI_ALGO_PFM_H
00034 
00035 #include <ObsAvoiAlgo.h>
00036 
00037 namespace MipAlgorithms{
00038  
00040 /* @{ */
00041 
00042 
00043 
00047 class ObsAvoiAlgoParPFM : public ObsAvoiAlgoPar {
00048  
00049  public:
00050   
00052   Decimal Kv;
00054   Decimal Kw;
00056   Decimal Kwe;
00058   Decimal outOfAxisDist;
00060   Decimal repDist;
00062   Decimal vortDist; 
00064   Decimal Kr; 
00066   Decimal Krv;
00067   
00069   ObsAvoiAlgoParPFM(){
00070    Kv = 0.3;
00071    Kw = 0.8;
00072    Kwe = 0.3;
00073    outOfAxisDist = 0.01;
00074    vortDist = 0.1;
00075    repDist = 0.2;
00076    Kr = 0.0002;
00077    Krv = 0.00004;
00078   }
00079   
00089   ObsAvoiAlgoParPFM(Decimal KvP, Decimal KwP, Decimal KweP, Decimal outOfAxisDistP, Decimal repDistP, Decimal vortDistP, Decimal KrP, Decimal KrvP){
00090    Kv = KvP;
00091    Kw = KwP;
00092    Kwe = KweP;
00093    outOfAxisDist = outOfAxisDistP;
00094    vortDist = vortDistP;
00095    repDist = repDistP;
00096    Kr = KrP;
00097    Krv = KrvP;
00098   }
00099 
00101   ObsAvoiAlgoParPFM(const ObsAvoiAlgoParPFM &A){
00102    Kv = A.Kv;
00103    Kw = A.Kw;
00104    Kwe = A.Kwe;
00105    outOfAxisDist = A.outOfAxisDist;
00106    vortDist = A.vortDist;
00107    repDist = A.repDist;
00108    Kr = A.Kr;
00109    Krv = A.Krv;
00110   }
00111   
00113   ObsAvoiAlgoParPFM operator= (ObsAvoiAlgoParPFM A){
00114    Kv = A.Kv;
00115    Kw = A.Kw;
00116    Kwe = A.Kwe;
00117    outOfAxisDist = A.outOfAxisDist;
00118    vortDist = A.vortDist;
00119    repDist = A.repDist;
00120    Kr = A.Kr;
00121    Krv = A.Krv;
00122   }
00123  
00124 };
00125 
00126 
00130 class ObsAvoiAlgoPFM : public ObsAvoiAlgo {
00131   
00132  protected:
00133   
00135   ObsAvoiAlgoParPFM par;
00136  
00137  private:
00138   
00140   Decimal Vr; 
00142   Decimal Wr; 
00144   Decimal Va; 
00146   Decimal Wa; 
00147   
00151   void repulsiveControl(ObsAvoiAlgoIn &in);
00152   
00156   void attractiveControl(ObsAvoiAlgoIn &in);
00157  
00158  public:
00159   
00161   ObsAvoiAlgoPFM(){
00162    par = ObsAvoiAlgoParPFM();
00163   }
00164   
00167   ObsAvoiAlgoPFM(ObsAvoiAlgoParPFM OAP){
00168    par = OAP;
00169   }
00170 
00174   void getControl(ObsAvoiAlgoIn &in, ObsAvoiAlgoOut *out);
00175   
00177   string getObjectName() const {
00178    return "ObsAvoiAlgoPFM";
00179   }
00180 };
00181 
00182 
00183 /* @} */
00184 
00185 }; // end namespace MipAlgorithms
00186 
00187 #endif
00188 
00189 
00190 
00191 

Generated on Mon Feb 20 07:01:06 2017 for MIP by  doxygen 1.5.6