Esempio n. 1
0
int main(int argc, char const** argv)
{
	SHOWDF("Created using\n%s",CreateHeader(argc,argv));
	Options opts;
	OPTSDC(opts,filename,	"name : point data (can be -)");
	OPTSDC(opts,mfilename,	"name : initial mesh (can be -)");
	OPTSPC(opts,crep,	"v: set constant for representation energy");
	OPTSDC(opts,reconstruct,": apply surface reconstruction schedule");
	OPTSDC(opts,simplify,	": apply mesh simplification schedule");
	opts.c("",":");
	OPTSPC(opts,spring,	"tension : set spring constant");
	opts.c("",":");
	OPTSDC(opts,gfit,	"niter : do global fit (0=until convergence)");
	OPTSDC(opts,fgfit,	"niter : use conjugate gradients");
	OPTSDC(opts,stoc,	": do local stochastic mesh operations");
	OPTSDC(opts,lfit,	"ni nli : do ni iters, each nli local fits");
	OPTSDC(opts,four1split,	": do global four-to-one split");
	OPTSDC(opts,outmesh,	"filename : output current mesh to file");
	opts.c("",":");
	OPTSDC(opts,pclp,	": print projections onto mesh (lines)");
	OPTSDC(opts,record,	": print mesh changes on cout, -noout");
	OPTSDC(opts,spawn,	"'command': send record to popen");
	OPTSFC(opts,nooutput,	": don't print final mesh on stdout");
	OPTSPC(opts,verb,	"i : verbosity level (1=avg,2=more,3=lots)");
	opts.c("",":");
	OPTSPC(opts,crbf,	"ratio : set repr. energy boundary factor");
	OPTSPC(opts,spbf,	"ratio : set spring constant boundary factor");
	OPTSPC(opts,fliter,	"factor : modify # local iters done in stoc");
	OPTSPC(opts,feswaasym,	"f : set drss threshold (fraction of crep)");
	signal(SIGUSR1,HHSIG_PF(sigUSR1));
	signal(SIGUSR2,HHSIG_PF(sigUSR2));
	TIMER(Meshfit);
	opts.allmustparse();
	if (!opts.parse(argc,argv)) { opts.problem(argc,argv); return 1; }
	perhapsinitialize();
	SHOWDF("\n");
	analyzemesh("FINAL");
	ETIMER(Meshfit);
	CleanUp();
	SHOWDF("\n"),SHOWDF("EndMeshfit\n");
	if (!nooutput) { meshtransform(xformi); mesh.write(cout); }
	if (filespawn) { delete ospawn; pclose(filespawn); }
	mesh.clear();
	pt.clear();
	return 0;
}
int main() {
    if (0) {
    } else if (getenv_bool("PARTIAL_SPHERE")) {
        auto func_eval = [](const Point& p) {
            return p[0]<.3f ? k_Contour_undefined : dist(p, Point(.5f, .5f, .5f))-.4f;
        };
        GMesh mesh; {
            Contour3DMesh<decltype(func_eval)> contour(50, &mesh, func_eval); // or 6
            contour.march_near(Point(.9f, .5f, .5f));
        }
        mesh.write(std::cout);
    } else if (getenv_bool("SPHERE")) {
        do_sphere();
    } else if (getenv_bool("MONKEY")) {
        do_monkey();
    } else if (getenv_bool("DENSE_MONKEY")) {
        do_densemonkey();
    } else {
        testmesh();
        test2D();
        test3D();
    }
}