int SaisiePts_main2(int argc,char ** argv) { MMD_InitArgcArgv(argc,argv); // cAppliApero * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD); //if (0) delete anAppli; ELISE_ASSERT(argc>=2,"Not enough arg"); cElXMLTree aTree(argv[1]); cResultSubstAndStdGetFile<cParamSaisiePts> aP2 ( argc-2,argv+2, //0,0, argv[1], StdGetFileXMLSpec("ParamSaisiePts.xml"), "ParamSaisiePts", "ParamSaisiePts", "DirectoryChantier", "FileChantierNameDescripteur" ); //cAppli_SaisiePts anAppli (aP2); //((cX11_Interface*)anAppli.Interface())->BoucleInput(); //SaisiePts_Banniere(); return 0; }
int OCCEdge::createArc(OCCVertex *start, OCCVertex *end, OCCStruct3d center) { try { gp_Pnt aP1(start->X(), start->Y(), start->Z()); gp_Pnt aP2(center.x, center.y, center.z); gp_Pnt aP3(end->X(), end->Y(), end->Z()); Standard_Real Radius = aP1.Distance(aP2); gce_MakeCirc MC(aP2,gce_MakePln(aP1, aP2, aP3).Value(), Radius); const gp_Circ& Circ = MC.Value(); Standard_Real Alpha1 = ElCLib::Parameter(Circ, aP1); Standard_Real Alpha2 = ElCLib::Parameter(Circ, aP3); Handle(Geom_Circle) C = new Geom_Circle(Circ); Handle(Geom_TrimmedCurve) arc = new Geom_TrimmedCurve(C, Alpha1, Alpha2, false); this->setShape(BRepBuilderAPI_MakeEdge(arc, start->vertex, end->vertex)); } catch(Standard_Failure &err) { Handle_Standard_Failure e = Standard_Failure::Caught(); const Standard_CString msg = e->GetMessageString(); if (msg != NULL && strlen(msg) > 1) { setErrorMessage(msg); } else { setErrorMessage("Failed to create arc"); } return 0; } return 1; }
template <class cCRNode> void cTplCoxRoyAlgo<cCRNode>::SetStdCostRegul(double aCoeff,double aCste,int aVmin) { for (int anX=X0(); anX<X1() ; anX++) for (int anY=Y0(); anY<Y1() ; anY++) for (int aZ = ZMin(anX,anY); aZ< ZMax(anX,anY) ; aZ++) { cRoyPt aP1 (anX,anY,aZ); cCRNode & aS1 = NodeOfP(aP1); int aC1 = aS1.ResidualFlow(mDirZPlus); for (int anEdg=0; anEdg<NbEdges() ; anEdg++) { if (aS1.EdgeIsValide(anEdg) && (!tabCRIsVertical[anEdg])) { cRoyPt aP2(aP1,anEdg); cCRNode & aS2 = NodeOfP(aP2); int aC2 = aS2.ResidualFlow(mDirZPlus); double aCost = aCste + aCoeff*(aC1+aC2)/2.0; if (Cnx8()) aCost *= tabCRIsArcV8[anEdg] ? 0.2928 : 0.4142 ; int iCost = int(aCost+0.5); if (iCost<aVmin) iCost = aVmin; aS1.SetResidualFlow(anEdg,iCost); } } } }
int CASALL_main(int argc,char ** argv) { // cAppliApero * anAppli = cAppliMICMAC::Alloc(argc,argv,eAllocAM_STD); //if (0) delete anAppli; ELISE_ASSERT(argc>=2,"Not enough arg"); cElXMLTree aTree(argv[1]); cResultSubstAndStdGetFile<cParamCasa> aP2 ( argc-2,argv+2, argv[1], StdGetFileXMLSpec("ParamCasa.xml"), "ParamCasa", "ParamCasa", "DirectoryChantier", "FileChantierNameDescripteur" ); cAppli_Casa anAppli (aP2); return 0; }
void PbHom(const std::string & anOri) { const std::string & aDir = "/media/data1/Calib-Sony/FacadePlane-2000/"; const std::string & aIm1 = "DSC05180.ARW"; const std::string & aIm2 = "DSC05182.ARW"; cInterfChantierNameManipulateur * aICNM = cInterfChantierNameManipulateur::BasicAlloc(aDir); std::string aKeyOri = "NKS-Assoc-Im2Orient@-" + anOri; std::string aNameOri1 = aICNM->Assoc1To1(aKeyOri,aIm1,true); std::string aNameOri2 = aICNM->Assoc1To1(aKeyOri,aIm2,true); CamStenope * aCS1 = CamOrientGenFromFile(aNameOri1,aICNM); CamStenope * aCS2 = CamOrientGenFromFile(aNameOri2,aICNM); Pt2dr aP1 (774,443); Pt2dr aP2 (5541,3758); Pt3dr aTer1 = aCS1->ImEtProf2Terrain(aP1,1.0); Pt2dr aProj1 = aCS1->R3toF2(aTer1); std::cout << "P & Proj Init1" << aP1 << aProj1 << " " << euclid(aP1-aProj1) << "\n"; Pt3dr aTer2 = aCS2->ImEtProf2Terrain(aP2,1.0); Pt2dr aProj2 = aCS2->R3toF2(aTer2); std::cout << "P & Proj Init2" << aP2 << aProj2 << " " << euclid(aP2-aProj2) << "\n"; double aDist; Pt3dr aTerInter = aCS1->PseudoInter(aP1,*aCS2,aP2,&aDist); aProj1 = aCS1->R3toF2(aTerInter); aProj2 = aCS2->R3toF2(aTerInter); std::cout << "Proj Inter " << aDist << " " << (aP1-aProj1) << " " << (aP2-aProj2) << "\n"; std::cout << "\n"; }
int OCCEdge::createLine(OCCVertex *start, OCCVertex *end) { try { gp_Pnt aP1(start->X(), start->Y(), start->Z()); gp_Pnt aP2(end->X(), end->Y(), end->Z()); GC_MakeLine line(aP1, aP2); this->setShape(BRepBuilderAPI_MakeEdge(line, start->vertex, end->vertex)); } catch(Standard_Failure &err) { Handle_Standard_Failure e = Standard_Failure::Caught(); const Standard_CString msg = e->GetMessageString(); if (msg != NULL && strlen(msg) > 1) { setErrorMessage(msg); } else { setErrorMessage("Failed to create line"); } return 0; } return 1; }
int OCCEdge::createArc3P(OCCVertex *start, OCCVertex *end, OCCStruct3d aPoint) { try { gp_Pnt aP1(start->X(), start->Y(), start->Z()); gp_Pnt aP2(aPoint.x, aPoint.y, aPoint.z); gp_Pnt aP3(end->X(), end->Y(), end->Z()); GC_MakeArcOfCircle arc(aP1, aP2, aP3); this->setShape(BRepBuilderAPI_MakeEdge(arc, start->vertex, end->vertex)); } catch(Standard_Failure &err) { Handle_Standard_Failure e = Standard_Failure::Caught(); const Standard_CString msg = e->GetMessageString(); if (msg != NULL && strlen(msg) > 1) { setErrorMessage(msg); } else { setErrorMessage("Failed to create arc"); } return 0; } return 1; }
int saisieAppuisInitQT_main(QApplication &app, int argc, char *argv[]) { app.setApplicationName("SaisieAppuisInitQT"); app.setOrganizationName("Culture3D"); QStringList cmdline_args = QCoreApplication::arguments(); if (cmdline_args.back().contains("help")) { QString help = "Mandatory unnamed args :\n" "* string :: {Full name (Dir+Pattern)}\n" "* string :: {Orientation ; NONE if not used}\n" "* string :: {Point name, or point file name}\n" "* string :: {Output}\n\n" "Named args :\n" "* [Name=SzW] Pt2di :: {Sz of window}\n" "* [Name=NbF] Pt2di :: {Nb of sub window}\n" "* [Name=NameAuto] string :: {Prefix for automatic point creation}\n" //"* [Name=Pref2Add] string :: {Prefix to add during import (for bug correction ?)}\n" "* [Name=ForceGray] bool :: {Force gray image, def=false}\n" "* [Name=OriMode] string :: {Orientation type (GRID) (Def=Std)}\n" "* [Name=ZMoy] REAL :: {Average Z, Mandatory in PB}\n" "* [Name=ZInc] REAL :: {Incertitude on Z, Mandatory in PB}\n\n" "Example:\nmm3d " + app.applicationName() + " IMG_558{0-9}[1].tif RadialBasic 100 measures.xml\n\n" "NB: visual interface for argument edition available with command:\n\n mm3d v" + app.applicationName() + "\n\n"; return helpMessage(app, help); } loadTranslation(app); QSettings settings(QApplication::organizationName(), QApplication::applicationName()); if ((argc>0)&&(string(argv[0]).find("SaisieQT")!= string::npos)) { argv++; argc--; } Pt2di aSzWin(800,800); Pt2di aNbFen(-1,-1); string aFullName, aDir, aName, aNamePt, aNameOut; //mandatory arguments string aNameOri, aModeOri, aNameAuto, aPrefix2Add; //named args aPrefix2Add = ""; bool aForceGray = false; settings.beginGroup("Misc"); aNameAuto = settings.value("defPtName", QString("100")).toString().toStdString(); settings.endGroup(); settings.beginGroup("Drawing settings"); aForceGray = settings.value("forceGray", false ).toBool(); settings.endGroup(); double aZInc, aZMoy; if (argv[0][0] == 'v') { MMVisualMode = true; argv[0] = (char*) "SaisieAppuisInitQT"; } std::string aInputSec; SaisieAppuisInit(argc, argv, aSzWin, aNbFen, aFullName, aDir, aName, aNamePt, aNameOri, aModeOri, aNameOut, aNameAuto, aPrefix2Add, aForceGray, aZMoy, aZInc,aInputSec); if (!MMVisualMode) { if (!checkNamePt( QString (aNamePt.c_str()))) return -1; QStringList filenames = getFilenames(aDir, aName); int aNbW = aNbFen.x * aNbFen.y; if (filenames.size() < aNbW) { aNbW = filenames.size(); cVirtualInterface::ComputeNbFen(aNbFen, aNbW); } updateSettings(settings, aSzWin,aNbFen, aForceGray); settings.beginGroup("Misc"); settings.setValue("defPtName", QString(aNameAuto.c_str())); settings.endGroup(); QStringList input; input << QString(MMDir().c_str()) + QString("bin/SaisiePts") << QString(MMDir().c_str()) + QString("include/XML_MicMac/SaisieInitiale.xml") << QString("DirectoryChantier=") + QString(aDir.c_str()) << QString("+Image=") + QString(aName.c_str()) << QString("+Ori=") + QString(aNameOri.c_str()) << QString("+NamePt=") + QString(aNamePt.c_str()) << QString("+NameAuto=") + QString(aNameAuto.c_str()) << QString("+Sauv=") + QString(aNameOut.c_str()) << QString("+SzWx=") + QString::number(aSzWin.x) << QString("+SzWy=") + QString::number(aSzWin.y) << QString("+NbFx=") + QString::number(aNbFen.x) << QString("+NbFy=") + QString::number(aNbFen.y); if (aModeOri == "GRID") { input << QString("+ModeOriIm=eGeomImageGrille") << QString("+Conik=false") << QString("+ZIncIsProp=false") //<< QString(+PostFixOri=GRIBin") << QString("+Px1Inc=") + QString::number(aZInc) << QString("+Px1Moy=") + QString::number(aZMoy); //<< QString("+Geom=eGeomMNTFaisceauIm1ZTerrain_Px1D"); } if (EAMIsInit(&aForceGray)) input << QString("+ForceGray=") + QString(((string)(ToString(aForceGray))).c_str()); if (EAMIsInit(&aPrefix2Add)) input << QString("+Pref2Add=") + QString(aPrefix2Add.c_str()); char **output; // Copy input to output output = new char*[input.size() + 1]; for (int i = 0; i < input.size(); i++) { output[i] = new char[strlen(input.at(i).toStdString().c_str())+1]; memcpy(output[i], input.at(i).toStdString().c_str(), strlen(input.at(i).toStdString().c_str())+1); } output[input.size()] = ((char*)NULL); cResultSubstAndStdGetFile<cParamSaisiePts> aP2( input.size()-2,output+2, output[1], StdGetFileXMLSpec("ParamSaisiePts.xml"), "ParamSaisiePts", "ParamSaisiePts", "DirectoryChantier", "FileChantierNameDescripteur" ); cAppli_SaisiePts anAppli (aP2,false); SaisieQtWindow w(POINT2D_INIT); new cQT_Interface(anAppli,&w); w.show(); w.addFiles(filenames, false); return app.exec(); } else return EXIT_SUCCESS; }
cElNuageLaser::cElNuageLaser ( const std::string & aNameFile, const char * aNameOri, const char * aNameGeomCible , const char * aNameGeomInit ) : mVPts (), mQt (0) { std::string aNameBin = StdPrefix(aNameFile) + ".tif"; if (! ELISE_fp::exist_file(aNameBin)) { INT aNb = 3; FILE * aFP = ElFopen(aNameFile.c_str(),"r"); ELISE_ASSERT(aFP!=0,"Cannot Open File for Laser Data"); char Buf[10000]; INT aCpt =0; while (aNb>=3) { aNb=0; char * got = fgets(Buf,10000,aFP); Pt3dr aP; if (got) { aNb = sscanf(Buf,"%lf %lf %lf",&aP.x,&aP.y,&aP.z); } if (aNb>=3) mVPts.push_back(aP); aCpt++; } INT aNbPts = (INT) mVPts.size(); Im2D_REAL8 aImPts(aNbPts,3); REAL ** aData = aImPts.data(); for (INT aK=0 ; aK<aNbPts ; aK++) { Pt3dr aP = mVPts[aK]; aData[0][aK] = aP.x; aData[1][aK] = aP.y; aData[2][aK] = aP.z; } Tiff_Im aFile ( aNameBin.c_str(), Pt2di(aNbPts,3), GenIm::real8, Tiff_Im::No_Compr, Tiff_Im::BlackIsZero, Tiff_Im::Empty_ARG + Arg_Tiff(Tiff_Im::ANoStrip()) ); ELISE_COPY(aImPts.all_pts(),aImPts.in(),aFile.out()); } else { Tiff_Im aFile(aNameBin.c_str()); Pt2di aSz = aFile.sz(); Im2D_REAL8 aImPts(aSz.x,aSz.y); ELISE_COPY(aImPts.all_pts(),aFile.in(),aImPts.out()); REAL ** aD = aImPts.data(); mVPts.reserve(aSz.x); for (INT aK=0 ; aK<aSz.x ; aK++) { Pt3dr aP(aD[0][aK],aD[1][aK],aD[2][aK]); mVPts.push_back(aP); } } Ori3D_Std * aOri = 0; eModeConvGeom aMode = eConvId; if (aNameOri) { if (!strcmp(aNameGeomInit,"GeomCarto")) { if (!strcmp(aNameGeomCible,"GeomCarto")) { aMode = eConvId; } else if (!strcmp(aNameGeomCible,"GeomTerrain")) { aMode = eConvCarto2Terr; } else if (!strcmp(aNameGeomCible,"GeomTerIm1")) { aMode = eConvCarto2TerIm; } else { ELISE_ASSERT(false,"Bad GeomCible in cElNuageLaser::cElNuageLaser"); } } else { ELISE_ASSERT(false,"Bad GeomInit in cElNuageLaser::cElNuageLaser"); } if (aMode != eConvId) aOri = new Ori3D_Std (aNameOri) ; } for (INT aK=0 ; aK<INT( mVPts.size()); aK++) { Pt3dr aP = mVPts[aK]; if (aOri) { if (aMode == eConvCarto2Terr) aP = aOri->carte_to_terr(aP); else if (aMode == eConvCarto2TerIm) { aP = aOri->carte_to_terr(aP); Pt2dr aP2 = aOri->to_photo(aP); aP.x = aP2.x; aP.y = aP2.y; } mVPts[aK] = aP; } REAL aZ = aP.z; Pt2dr aP2 (aP.x,aP.y); if (aK==0) { mZMax = mZMin = aZ; mPInf =mPSup = aP2; } ElSetMin(mZMin,aZ); ElSetMax(mZMax,aZ); mPInf.SetInf(aP2); mPSup.SetSup(aP2); } delete aOri; }