cPolynFormelXY::cPolynFormelXY
(
      const Polynome2dReal &    aPol,
      cSetEqFormelles &   aSet,
      bool                isX
)   :
    cElemEqFormelle(aSet,false),
    mPolInit (aPol),
    mPolCur (aPol),
    mIsX    (isX),
    mPolXYTol    (cContrainteEQF::theContrStricte)
{
     for (INT aK = 0  ; aK<mPolCur.NbMonome() ; aK++)
     {
        vCOeffs.push_back(aSet.Alloc().NewF(&mPolCur.Coeff(aK)));
	mFige.push_back(true);
     }
     CloseEEF();
}
Beispiel #2
0
cHomogFormelle::cHomogFormelle
(
     const cElHomographie & anHomog,
     cSetEqFormelles &         aSet,
     eModeContrHom                   aModeContr
)  :
     cElemEqFormelle(aSet,false),
     mHomInit     (anHomog),
     mCurHom      (anHomog),
     mCX          (mCurHom.HX(),aSet,false),
     mCY          (mCurHom.HY(),aSet,false),
     mCZ          (mCurHom.HZ(),aSet,true),
     mModeContr   (aModeContr),
     mHomFTol     (cContrainteEQF::theContrStricte)
{
   CloseEEF();

   for (int aK=0 ; aK<0 ; aK++)
   {
       cElComposHomographie aHX = mHomInit.HX();
       cElComposHomographie aHY = mHomInit.HY();
       cElComposHomographie aHZ = mHomInit.HZ();

        Pt2dr aP(NRrandom3()*100,NRrandom3()*100);
        Pt2dr aQ =  mHomInit.Direct(aP);

        Pt2dr aR = InvHom(
                         aHX.CoeffX(), aHX.CoeffY(), aHX.Coeff1(),
                         aHY.CoeffX(), aHY.CoeffY(), aHY.Coeff1(),
                         aHZ.CoeffX(), aHZ.CoeffY(),
                         aQ.x,aQ.y
                   );
        double aDist =  euclid(aP,aR);
        std::cout << "TESINV HOM " << aP << aR << aDist  << " B=" <<  aHX.CoeffY() << "\n";
        ELISE_ASSERT(aDist<1e-5,"TESINV HOM ");
   }

}
cDistRadialeFormelle::cDistRadialeFormelle
(
     bool asIntervBlock,
     bool isCFige,
     int aDegFig,
     const ElDistRadiale_PolynImpair & aDist,
     cSetEqFormelles &                    aSet,
     cCamStenopeModStdPhpgr * aDP
)  :
     cElemEqFormelle(aSet,false),
     mCentreFige  (isCFige),
     mDegreFige   (aDegFig),
     mDistInitStd (aDist),
     mCurDistStd  (aDist),
     mDistInit    (mDistInitStd.DRad()),
     mCurDist     (mCurDistStd.DRad()),
     mIndCentre   (aSet.Alloc().CurInc()),
     mFCentre     (aSet.Alloc().NewPt2(mCurDist.Centre())),
     mTolCDist    (cContrainteEQF::theContrStricte),
     mTolCoeffs   (cContrainteEQF::theContrStricte)
{
   if (aDP)
   {
        mCurDistStd.P1() = aDP->DModPhgrStd().P1();
        mCurDistStd.P2() = aDP->DModPhgrStd().P2();
        mCurDistStd.b1() = aDP->DModPhgrStd().b1();
        mCurDistStd.b2() = aDP->DModPhgrStd().b2();
   }
   for (INT aK=0 ; aK<INT(mCurDist.NbCoeff()) ; aK++)
   {
       mFCoeffs.push_back(aSet.Alloc().NewF(&(mCurDist.Coeff(aK))));
   }

   CloseEEF(asIntervBlock);

/// std::cout << "VPPPPPPPpp   " << mCurDist.RMax() << "\n"; getchar();
}