本文整理汇总了C++中geolib::GEOObjects::addPointVec方法的典型用法代码示例。如果您正苦于以下问题:C++ GEOObjects::addPointVec方法的具体用法?C++ GEOObjects::addPointVec怎么用?C++ GEOObjects::addPointVec使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类geolib::GEOObjects
的用法示例。
在下文中一共展示了GEOObjects::addPointVec方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createPoints
void createPoints()
{
test_pnts.emplace_back(1,1,0,0);
test_pnts.emplace_back(1,2,0,1);
test_pnts.emplace_back(1,3,0,2);
test_pnts.emplace_back(2,1,0,3);
test_pnts.emplace_back(2,2,0,4);
test_pnts.emplace_back(2,3,0,5);
test_pnts.emplace_back(3,1,0,6);
test_pnts.emplace_back(3,2,0,7);
test_pnts.emplace_back(3,3,0,8);
auto points = std::unique_ptr<std::vector<GeoLib::Point*>>(
new std::vector<GeoLib::Point*>(9));
auto cpy_name_id_map = new std::map<std::string, std::size_t>;
std::size_t pos(0);
for (auto p : test_pnts) {
(*points)[pos] = new GeoLib::Point(p);
pnt_name_id_map["p"+std::to_string(pos)] = pos;
(*cpy_name_id_map)["p"+std::to_string(pos)] = pos;
pos++;
}
geo_objects.addPointVec(std::move(points), geo_name, cpy_name_id_map);
}
示例2: convertMeshToGeo
bool convertMeshToGeo(const MeshLib::Mesh &mesh, GeoLib::GEOObjects &geo_objects, double eps)
{
if (mesh.getDimension() != 2)
{
ERR ("Mesh to geometry conversion is only working for 2D meshes.");
return false;
}
// nodes to points conversion
std::string mesh_name(mesh.getName());
{
auto points = std::make_unique<std::vector<GeoLib::Point*>>();
points->reserve(mesh.getNumberOfNodes());
for (auto node_ptr : mesh.getNodes())
points->push_back(new GeoLib::Point(*node_ptr, node_ptr->getID()));
geo_objects.addPointVec(std::move(points), mesh_name, nullptr, eps);
}
const std::vector<std::size_t> id_map (geo_objects.getPointVecObj(mesh_name)->getIDMap());
// elements to surface triangles conversion
std::string const mat_name ("MaterialIDs");
auto bounds (MeshInformation::getValueBounds<int>(mesh, mat_name));
const unsigned nMatGroups(bounds.second-bounds.first+1);
auto sfcs = std::make_unique<std::vector<GeoLib::Surface*>>();
sfcs->reserve(nMatGroups);
auto const& points = *geo_objects.getPointVec(mesh_name);
for (unsigned i=0; i<nMatGroups; ++i)
sfcs->push_back(new GeoLib::Surface(points));
const std::vector<MeshLib::Element*> &elements = mesh.getElements();
const std::size_t nElems (mesh.getNumberOfElements());
MeshLib::PropertyVector<int> const*const materialIds =
mesh.getProperties().existsPropertyVector<int>("MaterialIDs")
? mesh.getProperties().getPropertyVector<int>("MaterialIDs")
: nullptr;
for (unsigned i=0; i<nElems; ++i)
{
auto surfaceId = !materialIds ? 0 : ((*materialIds)[i] - bounds.first);
MeshLib::Element* e (elements[i]);
if (e->getGeomType() == MeshElemType::TRIANGLE)
(*sfcs)[surfaceId]->addTriangle(id_map[e->getNodeIndex(0)], id_map[e->getNodeIndex(1)], id_map[e->getNodeIndex(2)]);
if (e->getGeomType() == MeshElemType::QUAD)
{
(*sfcs)[surfaceId]->addTriangle(id_map[e->getNodeIndex(0)], id_map[e->getNodeIndex(1)], id_map[e->getNodeIndex(2)]);
(*sfcs)[surfaceId]->addTriangle(id_map[e->getNodeIndex(0)], id_map[e->getNodeIndex(2)], id_map[e->getNodeIndex(3)]);
}
// all other element types are ignored (i.e. lines)
}
std::for_each(sfcs->begin(), sfcs->end(), [](GeoLib::Surface* sfc){ if (sfc->getNumberOfTriangles()==0) delete sfc; sfc = nullptr;});
auto sfcs_end = std::remove(sfcs->begin(), sfcs->end(), nullptr);
sfcs->erase(sfcs_end, sfcs->end());
geo_objects.addSurfaceVec(std::move(sfcs), mesh_name);
return true;
}
示例3: convertMeshNodesToGeometry
void convertMeshNodesToGeometry(std::vector<MeshLib::Node*> const& nodes,
std::vector<std::size_t> const& node_ids,
std::string & geo_name,
GeoLib::GEOObjects & geometry_sets)
{
// copy data
auto pnts = std::unique_ptr<std::vector<GeoLib::Point*>>(
new std::vector<GeoLib::Point*>);
std::map<std::string, std::size_t>* pnt_names(
new std::map<std::string, std::size_t>);
std::size_t cnt(0);
for (std::size_t id: node_ids) {
pnts->push_back(new GeoLib::Point(*(nodes[id]), cnt));
pnt_names->insert(std::pair<std::string, std::size_t>(
geo_name+"-PNT-"+std::to_string(cnt), cnt));
cnt++;
}
// create data structures for geometry
geometry_sets.addPointVec(std::move(pnts), geo_name, pnt_names);
}
示例4: createSetOfTestPointsAndAssociatedNames
void createSetOfTestPointsAndAssociatedNames(GeoLib::GEOObjects & geo_objs, std::string &name, GeoLib::Point const& shift)
{
std::vector<GeoLib::Point*> *pnts(new std::vector<GeoLib::Point*>);
std::map<std::string, std::size_t>* pnt_name_map(new std::map< std::string, std::size_t>);
const std::size_t pnts_per_edge(8);
for (std::size_t k(0); k < pnts_per_edge; k++) {
const std::size_t k_offset(k * pnts_per_edge * pnts_per_edge);
for (std::size_t j(0); j < pnts_per_edge; j++) {
const std::size_t offset(j * pnts_per_edge + k_offset);
for (std::size_t i(0); i < pnts_per_edge; i++) {
pnts->push_back(new GeoLib::Point(i+shift[0], j+shift[1], k+shift[2]));
std::string pnt_name(
name + "-" + BaseLib::number2str(i) + "-" + BaseLib::number2str(j) + "-"
+ BaseLib::number2str(k));
pnt_name_map->insert(std::pair< std::string, std::size_t>(pnt_name, i + offset));
}
}
}
geo_objs.addPointVec(pnts, name, pnt_name_map);
}