@@ -142,6 +142,9 @@ class cIrbCal_CamSet : public cMemCheck
142142 std::vector<cIrbCal_Cam1> & VCams ();
143143 cIrbCal_Cam1 & MasterCam ();
144144
145+ void SetNumPoseInstr (const std::vector<int > & aVNums);
146+ // Correct -1 => master
147+ std::vector<int > NumPoseInstr () const ;
145148 private :
146149 void AddCam
147150 (
@@ -152,6 +155,8 @@ class cIrbCal_CamSet : public cMemCheck
152155 );
153156
154157 int mNumMaster ; // < num of "master" image
158+ // special case [] -> all [-1] master
159+ std::vector<int > mNumsPoseInstr ;
155160 std::vector<cIrbCal_Cam1> mVCams ; // < set of camerascIrbCal_Block
156161 cIrbCal_Block * mCalBlock ;
157162};
@@ -168,11 +173,18 @@ class cIrbCal_Clino1 : public cMemCheck
168173 cIrbCal_Clino1 (const std::string & aName); // < "Real" constructor
169174 const std::string & Name () const ; // < accessor
170175 void AddData (const cAuxAr2007 & anAux); // < serializer
176+
177+ void SetPNorm (const cPt3dr & aTr);
178+
179+ cP3dNormWithUK& CurPNorm ();
180+ bool IsInit () const ;
181+ void UnInit ();
171182 private :
172- std::string mName ; // < name of the clino
173- bool mIsInit ; // < was values computed ?
174- tRotR mOrientInBloc ; // < Position in the block
175- tREAL8 mSigmaR ; // < sigma on orientation
183+ std::string mName ; // < name of the clino
184+ bool mIsInit ; // < was values computed ?
185+ cP3dNormWithUK * mTrInBlock ; // < Position in the block
186+ std::vector<tREAL8> mPolCorr ; // < Polynomial correction 2 angles, def [0,1,0]
187+ // tREAL8 mSigmaR; //< sigma a priori on orientation
176188};
177189void AddData (const cAuxAr2007 & anAux,cIrbCal_Clino1 & aClino);
178190
@@ -186,9 +198,14 @@ class cIrbCal_ClinoSet : public cMemCheck
186198 cIrbCal_ClinoSet ();
187199 void AddData (const cAuxAr2007 & anAux);
188200 std::vector<std::string> VNames () const ;
201+ size_t NbClino () const ;
202+
203+ int IndexClinoFromName (const std::string& aName) const ;
204+ cIrbCal_Clino1 & KthClino (int aK);
205+
189206 private :
190207 cIrbCal_Clino1 * ClinoFromName (const std::string& aName);
191- void AddClino (const std::string &,bool SVP=false );
208+ void AddClino (const std::string &,tREAL8 aSigma, bool SVP=false );
192209
193210 std::vector<cIrbCal_Clino1> mVClinos ; // < set of clinos
194211 cIrbCal_Block * mCalBlock ;
@@ -212,6 +229,17 @@ class cIrb_CstrRelRot
212229
213230void AddData (const cAuxAr2007 & anAux,cIrb_CstrRelRot & aSigma);
214231
232+ class cIrb_CstrOrthog
233+ {
234+ public :
235+ cIrb_CstrOrthog (const tREAL8 & aSigma);
236+ cIrb_CstrOrthog ();
237+ void AddData (const cAuxAr2007 & anAux);
238+ private :
239+ tREAL8 mSigma ;
240+ };
241+ void AddData (const cAuxAr2007 & anAux,cIrb_CstrOrthog & aSigma);
242+
215243
216244/*
217245class cIrb_ConstrInstr
@@ -302,7 +330,11 @@ class cIrbCal_Block : public cMemCheck
302330 void AvgIndivSigma (); // < Set all sigma of object ir global average
303331 void AvgSigma ();
304332 cIrb_Desc1Intsr & AddSigma_Indiv (std::string aN1,eTyInstr aType1);
333+
305334 void AddCstrRelRot (std::string aN1,std::string aN2,tREAL8 aSigma,tRotR aRot);
335+ void AddCstrRelOrthog (std::string aN1,std::string aN2,tREAL8 aSigma);
336+
337+ const std::map<tNamePair,cIrb_CstrOrthog> & CstrOrthog () const ;
306338
307339 private :
308340
@@ -318,9 +350,15 @@ class cIrbCal_Block : public cMemCheck
318350 cIrbCal_CamSet mSetCams ; // < Cameras used in the bloc
319351 cIrbCal_ClinoSet mSetClinos ; // < Clinos used in the bloc
320352
353+ // A priori external constraint
321354 std::map<tNamePair,cIrb_SigmaInstr> mSigmaPair ; // < Sigmas between pair of instr
322355 std::map<std::string,cIrb_Desc1Intsr> mDescrIndiv ; // < Sigmas of each instrument
356+
357+ // A priori external constraint
323358 std::map<tNamePair,cIrb_CstrRelRot> mCstrRelRot ;
359+ std::map<tNamePair,cIrb_CstrOrthog> mCstrOrthog ;
360+
361+
324362
325363};
326364void AddData (const cAuxAr2007 & anAux,cIrbCal_Block & aRBoI);
@@ -382,6 +420,7 @@ class cIrbComp_Clino1 : public cMemCheck
382420{
383421 public :
384422 cIrbComp_Clino1 (tREAL8 anAngle);
423+ tREAL8 Angle () const ;
385424 private :
386425 tREAL8 mAngle ;
387426};
@@ -391,6 +430,8 @@ class cIrbComp_ClinoSet : public cMemCheck
391430 public :
392431 cIrbComp_ClinoSet ();
393432 void SetClinoValues (const cOneMesureClino&);
433+ const cIrbComp_Clino1 & KthMeasure (int aK) const ;
434+ size_t NbMeasure () const ;
394435
395436 private :
396437 std::vector<cIrbComp_Clino1> mVCompClinos ;
@@ -405,15 +446,19 @@ class cIrbComp_TimeS : public cMemCheck
405446 cIrbComp_TimeS (const cIrbComp_Block &);
406447 const cIrbComp_CamSet & SetCams () const ; // < Accessor
407448 cIrbComp_CamSet & SetCams (); // < Accessor
449+ const cIrbComp_ClinoSet & SetClino () const ;
408450
409451 const cIrbComp_Block & CompBlock () const ; // < Accessor
410452 const cIrbCal_Block & CalBlock () const ; // < Accessor or Accessor
411453 // cIrbComp_Block & CompBlock() ; //< Accessor
412454
413455 // if not SVP and cannot compute : error
414- void ComputePoseInstrument (bool SVP = false );
456+ void ComputePoseInstrument (const std::vector< int > & aVNumCam, bool SVP = false );
415457 void SetClinoValues (const cOneMesureClino&);
416458
459+ tREAL8 ScoreDirClino (const cPt3dr& aDir,size_t aKClino) const ;
460+
461+
417462 private :
418463 cIrbComp_TimeS (const cIrbComp_TimeS&) = delete ;
419464 const cIrbComp_Block & mCompBlock ;
@@ -468,6 +513,9 @@ class cIrbComp_Block : public cMemCheck
468513 void SetClinoValues (const cSetMeasureClino&,bool OkNewTimeS=false );
469514 // / call previous by using std measure on phproj
470515 void SetClinoValues (bool OkNewTimeS=false );
516+
517+ tREAL8 ScoreDirClino (const cPt3dr& aDir,size_t aKClino) const ;
518+
471519 private :
472520 // / non copiable, too "dangerous"
473521 cIrbComp_Block (const cIrbComp_Block & ) = delete ;
0 commit comments