void cOriFromBundle::AnalyseSol(const ElMatrix<double> & aMat,const Pt3dr & aPA, const Pt3dr & aPB) const { Pt3dr aBRor = aMat*aPB; ElSeg3D aSA(Pt3dr(0,0,0),aPA); ElSeg3D aSB(mBase,mBase+aBRor); Pt3dr anI = aSA.PseudoInter(aSB); double aAbsA = aSA.AbscOfProj(anI); double aAbsB = aSB.AbscOfProj(anI); std::cout << " " << ((aAbsA >0) ? "+ " : "- ") << ((aAbsB >0) ? "+ " : "- ") << " Z " << aPA.z << " " << aBRor.z << " " << anI.z << "\n"; }
cPIF_Bilin::cPIF_Bilin(cCamStenopeBilin *aCSB,cSetEqFormelles & aSet): cParamIntrinsequeFormel (false,aCSB,aSet,true), mSet (aSet), mFiged (false), mDistInit (aCSB->DBL()), mDistCur (aCSB->DBL()), mCurPIF (0), mFVDist (1+mDistCur.Nb().y), mQuads (mDistCur.Nb().y), mLastCase (-1,-1) { AllowUnsortedVarIn_SetMappingCur = true; SetFocFree(true); SetPPFree(true); for (int aK=0 ; aK<4 ; aK++) { mCornF.push_back(cP2d_Etat_PhgrF(std::string("Pts")+ToString(aK))); } int aCpt=0; // Pour initier dans unr ordre ou le premri quadrangle passe d'abord for (int aKD8=0 ; aKD8<=ElMax(mDistCur.Nb().y,mDistCur.Nb().x) ; aKD8++) { for (int aKY=0; aKY<=mDistCur.Nb().y ; aKY++) { for (int aKX=0; aKX<=mDistCur.Nb().x ; aKX++) { if (ElMax(aKX,aKY)==aKD8) { if (aKY == (mDistCur.Nb().y/2)) { if (aKX==0) mIndFrozen0 = 2 * aCpt; if (aKX==mDistCur.Nb().x) mIndFrozen1 = 2 * aCpt; } cIncIntervale anInt(false,NameInterv(Pt2di(aKX,aKY)),aSet,2); // anInt.Close(); cSomBilin aSB(mSet,mDistCur.Dist(Pt2di(aKX,aKY)),anInt); // aSB.mPtF = mSet.Alloc().NewPt2(mDistCur.Dist(Pt2di(aKX,aKY))); mFVDist[aKY].push_back(aSB); aCpt++; // mFVDist.push_back(mSet.Alloc().NewPt2(mDistCur.Dist(Pt2di(aKX,aKY)))); } } } } Pt2di aC; for (aC.y=0; aC.y<mDistCur.Nb().y ; aC.y++) { for (aC.x=0; aC.x<mDistCur.Nb().x ; aC.x++) { cIncIntervale anI00(FDist(aC+CamBilinCorn[0]).mInterv,NameInterv(CamBilinCorn[0])); cIncIntervale anI10(FDist(aC+CamBilinCorn[1]).mInterv,NameInterv(CamBilinCorn[1])); cIncIntervale anI01(FDist(aC+CamBilinCorn[2]).mInterv,NameInterv(CamBilinCorn[2])); cIncIntervale anI11(FDist(aC+CamBilinCorn[3]).mInterv,NameInterv(CamBilinCorn[3])); mQuads[aC.y].push_back(cQuadrangle(anI00,anI10,anI01,anI11)); } } NV_UpdateCurPIF(); }