本文整理汇总了C++中volmagick::Volume::desc方法的典型用法代码示例。如果您正苦于以下问题:C++ Volume::desc方法的具体用法?C++ Volume::desc怎么用?C++ Volume::desc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类volmagick::Volume
的用法示例。
在下文中一共展示了Volume::desc方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char **argv)
{
if(argc != 3)
{
cerr << "Usage: " << argv[0] << " <input volume file> <output volume file>" << endl;
return 1;
}
try
{
VolMagickOpStatus status;
VolMagick::setDefaultMessenger(&status);
VolMagick::VolumeFileInfo volinfo;
volinfo.read(argv[1]);
VolMagick::createVolumeFile(argv[2],
volinfo.boundingBox(),
volinfo.dimension(),
volinfo.voxelTypes(),
volinfo.numVariables(),
volinfo.numTimesteps(),
volinfo.TMin(),volinfo.TMax());
for(unsigned int var=0; var<volinfo.numVariables(); var++)
for(unsigned int time=0; time<volinfo.numTimesteps(); time++)
{
VolMagick::Volume vol;
readVolumeFile(vol,argv[1],var,time);
for(VolMagick::uint64 i = 0; i < vol.dimension().size(); i++)
vol(i, vol.min() + ((vol.max() - vol(i))/(vol.max() - vol.min()))*(vol.max() - vol.min()));
vol.desc(volinfo.name(var));
writeVolumeFile(vol,argv[2],var,time);
}
}
catch(VolMagick::Exception &e)
{
cerr << e.what() << endl;
}
catch(std::exception &e)
{
cerr << e.what() << endl;
}
return 0;
}
示例2: main
int main(int argc, char **argv)
{
if(argc != 3)
{
cerr << "Usage: " << argv[0] << " <input volume file> <output volume file>" << endl;
return 1;
}
try
{
#ifndef OUT_OF_CORE
cerr << "In-core convert" << endl;
VolMagick::Volume vol;
//TODO: read/write a slice at a time instead of reading the whole volume in memory then writing it out...
VolMagick::readVolumeFile(vol,argv[1]/*,var,time*/);
//VolMagick::writeVolumeFile(vol,argv[2]/*,var,time*/);
VolMagick::createVolumeFile(vol,argv[2]);
#else
cerr << "Out-of-core convert" << endl;
VolMagick::VolumeFileInfo volinfo;
volinfo.read(argv[1]);
//VolMagick::createVolumeFile in Utlity.h
VolMagick::createVolumeFile(argv[2],volinfo);
// cout<<"convert volinfo:" << volinfo.boundingBox().minx <<" " << volinfo.boundingBox().maxx<< endl;
//read in slice by slice
for(unsigned int k = 0; k < volinfo.ZDim(); k++)
{
for(unsigned int var=0; var<volinfo.numVariables(); var++)
for(unsigned int time=0; time<volinfo.numTimesteps(); time++)
{
VolMagick::Volume vol;
readVolumeFile(vol,argv[1],
var,time,
0,0,k,
VolMagick::Dimension(volinfo.XDim(),volinfo.YDim(),1));
vol.desc(volinfo.name(var));
writeVolumeFile(vol,argv[2],
var,time,
0,0,k);
}
fprintf(stderr,"Converting: %5.2f %%\r",(((float)k)/((float)((int)(volinfo.ZDim()-1))))*100.0);
}
fprintf(stderr,"\n");
#endif
}
catch(VolMagick::Exception &e)
{
cerr << e.what() << endl;
}
catch(std::exception &e)
{
cerr << e.what() << endl;
}
return 0;
}
示例3: signedDistanceFunction
VolMagick::Volume signedDistanceFunction(const boost::shared_ptr<Geometry>& geom,
const VolMagick::Dimension& dim,
const VolMagick::BoundingBox& bbox)
{
int dimx = dim[0], dimy = dim[1], dimz = dim[2];
// read the annotated input file and
Mesh mesh;
cerr << "Reading input mesh ";
read_labeled_mesh(mesh, geom);
cerr << "done." << endl;
// build a bounding box around the input and store the
// origin, span etc.
// vector<double> bbox;
// construct_bbox(mesh, bbox);
VolMagick::BoundingBox box(bbox);
if(box.isNull())
{
geom->GetReadyToDrawWire(); //make sure we have calculated extents for this geometry already
box[0] = geom->m_Min[0];
box[1] = geom->m_Min[1];
box[2] = geom->m_Min[2];
box[3] = geom->m_Max[0];
box[4] = geom->m_Max[1];
box[5] = geom->m_Max[2];
}
// construct a kd-tree of all the non-isolated mesh_vertices.
vector<VECTOR3> points;
vector<Point> pts;
for(int i = 0; i < mesh.get_nv(); i ++)
{
if( mesh.vert_list[i].iso() ) continue;
Point p = mesh.vert_list[i].point();
pts.push_back(p);
points.push_back(VECTOR3(CGAL::to_double(p.x()),
CGAL::to_double(p.y()),
CGAL::to_double(p.z())));
}
KdTree kd_tree(points, 20);
kd_tree.setNOfNeighbours(1);
// Now perform a reconstruction to build a tetrahedralized solid
// with in-out marked.
Triangulation triang;
recon(pts, triang);
// assign weight to each triangle.
vector<double> weights;
// assign_sdf_weight(mesh, weights); // comment out for uniform weight.
VolMagick::Volume vol;
cerr << "SDF " << endl;
try
{
vol.dimension(VolMagick::Dimension(dimx,dimy,dimz));
vol.voxelType(VolMagick::Float);
vol.boundingBox(box);
for(unsigned int k=0; k<vol.ZDim(); k++)
{
for(unsigned int j=0; j<vol.YDim(); j++)
{
for(unsigned int i=0; i<vol.XDim(); i++)
{
double x = vol.XMin() + i*vol.XSpan();
double y = vol.YMin() + j*vol.YSpan();
double z = vol.ZMin() + k*vol.ZSpan();
double fn_val = sdf(Point(x,y,z), mesh, weights, kd_tree, triang);
vol(i,j,k, fn_val);
}
}
fprintf(stderr,
"%5.2f %%\r",
(float(k)/float(vol.ZDim()-1))*100.0);
}
vol.desc("multi_sdf");
}
catch(VolMagick::Exception &e)
{
cerr << e.what() << endl;
}
catch(std::exception &e)
{
cerr << e.what() << endl;
}
cerr << endl << "done." << endl;
return vol;
}