当前位置: 首页>>代码示例>>C++>>正文


C++ Visualizer::Show方法代码示例

本文整理汇总了C++中Visualizer::Show方法的典型用法代码示例。如果您正苦于以下问题:C++ Visualizer::Show方法的具体用法?C++ Visualizer::Show怎么用?C++ Visualizer::Show使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Visualizer的用法示例。


在下文中一共展示了Visualizer::Show方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main()
{
  constexpr int nSamples = 512;
  SimpleSphere sphere("Visualizer Sphere", 15., 20., 0., 2 * PI / 3., PI / 4., PI / 6.);
  AOS3D<Precision> points(nSamples);

  for (int i = 0; i < nSamples; ++i) {
    Vector3D<Precision> sample;
    do {
      sample = volumeUtilities::SamplePoint(Vector3D<Precision>(20, 20, 20));
    } while (!sphere.Contains(sample));
    points.set(i, sample);
  }
  points.resize(nSamples);
  Visualizer visualizer;
  visualizer.AddVolume(sphere);
  visualizer.AddPoints(points);
  visualizer.Show();
  return 0;
}
开发者ID:amadio,项目名称:vecgeom,代码行数:20,代码来源:VisualizeSphere.cpp

示例2: main

int main(int argc, char *argv[])
{
  OPTION_INT(ntracks, 10000);
  OPTION_INT(nreps, 3);
  OPTION_STRING(geometry, "navBench");
  OPTION_STRING(logvol, "world");
  OPTION_DOUBLE(bias, 0.8f);
#ifdef VECGEOM_ROOT
  OPTION_BOOL(vis, false);
#endif

  // default values used above are always printed.  If help true, stop now, so user will know which options
  // are available, and what the default values are.
  OPTION_BOOL(help, false);
  if (help) return 0;

  if (geometry.compare("navBench") == 0) {
    const VPlacedVolume *world = SetupGeometry();

#ifdef VECGEOM_ROOT
    // Exporting to ROOT file
    RootGeoManager::Instance().ExportToROOTGeometry(world, "navBench.root");
    RootGeoManager::Instance().Clear();
#endif
  }

// Now try to read back in.  This is needed to make comparisons to VecGeom easily,
// since it builds VecGeom geometry based on the ROOT geometry and its TGeoNodes.
#ifdef VECGEOM_ROOT
  auto rootgeom = geometry + ".root";
  RootGeoManager::Instance().set_verbose(0);
  RootGeoManager::Instance().LoadRootGeometry(rootgeom.c_str());
#endif

#ifdef VECGEOM_GEANT4
  auto g4geom = geometry + ".gdml";
  G4GeoManager::Instance().LoadG4Geometry(g4geom.c_str());
#endif

// Visualization
#ifdef VECGEOM_ROOT
  if (vis) { // note that visualization block returns, excluding the rest of benchmark
    Visualizer visualizer;
    const VPlacedVolume *world = GeoManager::Instance().GetWorld();
    world                      = GeoManager::Instance().FindPlacedVolume(logvol.c_str());
    visualizer.AddVolume(*world);

    Vector<Daughter> const *daughters = world->GetLogicalVolume()->GetDaughtersp();
    for (size_t i = 0; i < daughters->size(); ++i) {
      VPlacedVolume const *daughter = (*daughters)[i];
      Transformation3D const &trf1  = *(daughter->GetTransformation());
      visualizer.AddVolume(*daughter, trf1);

      // Vector<Daughter> const* daughters2 = daughter->GetLogicalVolume()->daughtersp();
      // for(int ii=0; ii<daughters2->size(); ++ii) {
      //   VPlacedVolume const* daughter2 = (*daughters2)[ii];
      //   Transformation3D const& trf2 = *(daughter2->transformation());
      //   Transformation3D comb = trf1;
      //   comb.MultiplyFromRight(trf2);
      //   visualizer.AddVolume(*daughter2, comb);
      // }
    }

    visualizer.Show();
    return 0;
  }
#endif

  std::cout << "\n*** Validating VecGeom navigation...\n";

  const LogicalVolume *startVolume = GeoManager::Instance().GetWorld()->GetLogicalVolume();
  if (logvol.compare("world") != 0) {
    startVolume = GeoManager::Instance().FindLogicalVolume(logvol.c_str());
  }

  std::cout << "NavigationBenchmark: logvol=<" << logvol << ">, startVolume=<"
            << (startVolume ? startVolume->GetLabel() : "NULL") << ">\n";
  if (startVolume) std::cout << *startVolume << "\n";

  // prepare tracks to be used for validation
  int np = Min(ntracks, 1000); // no more than 1000 points used for validation
  SOA3D<Precision> points(np);
  SOA3D<Precision> dirs(np);
  SOA3D<Precision> locpts(np);
  vecgeom::volumeUtilities::FillGlobalPointsAndDirectionsForLogicalVolume(startVolume, locpts, points, dirs, bias, np);

  Precision *maxSteps = (Precision *)vecCore::AlignedAlloc(32, sizeof(Precision) * np);
  for (int i    = 0; i < np; ++i)
    maxSteps[i] = 10. * RNG::Instance().uniform();

  // Must be validated before being benchmarked
  bool ok = validateVecGeomNavigation(np, points, dirs, maxSteps);
  if (!ok) {
    std::cout << "VecGeom validation failed." << std::endl;
    return 1;
  }
  std::cout << "VecGeom validation passed." << std::endl;

  // on mic.fnal.gov CPUs, loop execution takes ~70sec for ntracks=10M
  while (ntracks <= 10000) {
//.........这里部分代码省略.........
开发者ID:amadio,项目名称:vecgeom,代码行数:101,代码来源:NavigationBenchmark.cpp


注:本文中的Visualizer::Show方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。