Ejemplo n.º 1
0
 void DrawBBox(const BBoxf& box, const LineSet::LineColor& color, bool nativeCoords = false)
 {
     irr::core::vector3df verts[8];
     if (nativeCoords) {
         BBoxf onBox(
             ConvertIrrlichtToNeroPosition(box.MinEdge),
             ConvertIrrlichtToNeroPosition(box.MaxEdge));
         onBox.getEdges(verts);
     } else {
         box.getEdges(verts);
     }
     LineSet::instance().AddSegment( verts[0], verts[1], color );
     LineSet::instance().AddSegment( verts[1], verts[3], color );
     LineSet::instance().AddSegment( verts[3], verts[2], color );
     LineSet::instance().AddSegment( verts[2], verts[0], color );
     LineSet::instance().AddSegment( verts[4], verts[5], color );
     LineSet::instance().AddSegment( verts[5], verts[7], color );
     LineSet::instance().AddSegment( verts[7], verts[6], color );
     LineSet::instance().AddSegment( verts[6], verts[4], color );
     LineSet::instance().AddSegment( verts[4], verts[0], color );
     LineSet::instance().AddSegment( verts[5], verts[1], color );
     LineSet::instance().AddSegment( verts[6], verts[2], color );
     LineSet::instance().AddSegment( verts[7], verts[3], color );
 }
Ejemplo n.º 2
0
 Window::Window()
 {
     glWidget = new GLWidget;

     QHBoxLayout *mainLayout = new QHBoxLayout;
     mainLayout->addWidget(glWidget);
	
	openAct = new QAction(tr("Abrir..."), this);
    openAct->setShortcut(tr("Ctrl+A"));
    openAct->setStatusTip(tr("Abrir Archivo"));
	connect(openAct, SIGNAL(triggered()), glWidget, SLOT(onVentanaAbrir()));
    connect(openAct, SIGNAL(triggered()), glWidget, SLOT(onAbrir()));


	closeAct = new QAction(tr("Cerrar..."), this);
    closeAct->setShortcut(tr("Ctrl+C"));
    closeAct->setStatusTip(tr("Cerrar Archivo"));
    connect(closeAct, SIGNAL(triggered()), this, SLOT(close()));

	escalAct = new QAction(tr("Escalar..."), this);
    escalAct->setShortcut(tr("Ctrl+E"));
    escalAct->setStatusTip(tr("Escalar objeto"));
    connect(escalAct, SIGNAL(triggered()), glWidget, SLOT(onEscalar()));

	trasAct = new QAction(tr("Trasladar..."), this);
    trasAct->setShortcut(tr("Ctrl+T"));
    trasAct->setStatusTip(tr("Trasladar objeto"));
    connect(trasAct, SIGNAL(triggered()), glWidget, SLOT(onTrasladar()));

	rotAct = new QAction(tr("Rotar..."), this);
    rotAct->setShortcut(tr("Ctrl+R"));
    rotAct->setStatusTip(tr("Rotar objeto"));
    connect(rotAct, SIGNAL(triggered()), glWidget, SLOT(onRotar()));

	zBufAct = new QAction(tr("On/Off Z-Buffer..."), this);
    zBufAct->setShortcut(tr("Ctrl+Z"));
    zBufAct->setStatusTip(tr("Habilitar/Deshabilitar ZBuffer"));
    connect(zBufAct, SIGNAL(triggered()), glWidget, SLOT(onZBuffer()));

	fogAct = new QAction(tr("On/Off Niebla..."), this);
    fogAct->setShortcut(tr("Ctrl+F"));
    fogAct->setStatusTip(tr("Habilitar/Deshabilitar Niebla"));
    connect(fogAct, SIGNAL(triggered()), glWidget, SLOT(onFog()));

	colFogAct = new QAction(tr("Color Niebla..."), this);
    colFogAct->setStatusTip(tr("Cambiar Color Niebla"));
    connect(colFogAct, SIGNAL(triggered()), glWidget, SLOT(onColorFog()));

	planoAct = new QAction(tr("On/Off Plano de Corte..."), this);
    planoAct->setShortcut(tr("Ctrl+P"));
    planoAct->setStatusTip(tr("Habilitar/Deshabilitar Plano de Corte"));
    connect(planoAct, SIGNAL(triggered()), glWidget, SLOT(onPlano()));

	meshAct = new QAction(tr("On/Off Mallado..."), this);
    meshAct->setShortcut(tr("Ctrl+M"));
    meshAct->setStatusTip(tr("Mostrar/Ocultar Mallado"));
    connect(meshAct, SIGNAL(triggered()), glWidget, SLOT(onMalla()));

	colMeshAct = new QAction(tr("Color Mallado..."), this);
    colMeshAct->setStatusTip(tr("Cambiar Color Mallado"));
    connect(colMeshAct, SIGNAL(triggered()), glWidget, SLOT(onColorMalla()));

	boxAct = new QAction(tr("On/Off Bounding Box..."), this);
    boxAct->setShortcut(tr("Ctrl+B"));
    boxAct->setStatusTip(tr("Mostrar/Ocultar Bounding Box"));
    connect(boxAct, SIGNAL(triggered()), glWidget, SLOT(onBox()));

	colBoxAct = new QAction(tr("Color Bounding Box..."), this);
    colBoxAct->setStatusTip(tr("Cambiar Color Bounding Box"));
    connect(colBoxAct, SIGNAL(triggered()), glWidget, SLOT(onColorBox()));

	fillAct = new QAction(tr("On/Off Relleno..."), this);
    fillAct->setShortcut(tr("Ctrl+R"));
    fillAct->setStatusTip(tr("Mostrar/Ocultar Relleno"));
    connect(fillAct, SIGNAL(triggered()), glWidget, SLOT(onRelleno()));

	colFillAct = new QAction(tr("Color Relleno..."), this);
    colFillAct->setStatusTip(tr("Cambiar Color Relleno"));
    connect(colFillAct, SIGNAL(triggered()), glWidget, SLOT(onColorRelleno()));

	edgeAct = new QAction(tr("On/Off Vertices..."), this);
    edgeAct->setShortcut(tr("Ctrl+V"));
    edgeAct->setStatusTip(tr("Mostrar/Ocultar Vertices"));
    connect(edgeAct, SIGNAL(triggered()), glWidget, SLOT(onVertices()));

	colEdgeAct = new QAction(tr("Color Vertices..."), this);
    colEdgeAct->setStatusTip(tr("Cambiar Color Vertices"));
    connect(colEdgeAct, SIGNAL(triggered()), glWidget, SLOT(onColorVertices()));

	fileMenu = new QMenu;
	QMenuBar *m = new QMenuBar;
	fileMenu = m->addMenu(tr("&Archivo"));
	fileMenu->addAction(openAct);
	fileMenu->addAction(closeAct);

	editMenu = new QMenu;
	editMenu = m->addMenu(tr("&Editar"));
	editMenu->addAction(escalAct);
	editMenu->addAction(rotAct);
	editMenu->addAction(trasAct);
	editMenu->addAction(colFogAct);
	editMenu->addAction(colMeshAct);
	editMenu->addAction(colBoxAct);
	editMenu->addAction(colFillAct);
	editMenu->addAction(colEdgeAct);

	toolMenu = new QMenu;
	toolMenu = m->addMenu(tr("&Herramientas"));
	toolMenu->addAction(zBufAct);
	toolMenu->addAction(fogAct);
	toolMenu->addAction(planoAct);
	toolMenu->addAction(meshAct);
	toolMenu->addAction(boxAct);
	toolMenu->addAction(fillAct);
	toolMenu->addAction(edgeAct);

    setLayout(mainLayout);
    setWindowTitle(tr("3D SCAN"));
	mainLayout->setMenuBar(m);

 }
Ejemplo n.º 3
0
void buildIndex_mpi(ADIOS_FILE* f, ADIOS_VARINFO* v, int rank, int size)
{

  adios_inq_var_blockinfo(f, v);

  int i=0;
  int j=0;
  int k=0;

  printf("building index on variable %d, binning op=%s\n", v->varid, gBinningOption);

  int blockCounter = -1;
  FastBitDataType ft = fastbit_adios_util_getFastbitDataType(v->type);


#ifdef SINGLE_BLOCK
  for (i=0; i < v->nsteps; i++) {
       int nblocks = v->nblocks[i];
       for (j=0; j < nblocks; j++) {
	 blockCounter++;
	 if (blockCounter % size == rank) {

	   onBlock(rank, f, v, i, j, blockCounter, ft);

	   fastbit_cleanup();
	 }
       }

       printf(" rank %d, varid %d, timestep %d  total index created =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", \n", rank, v->varid, i, sum_nb, sum_nk, sum_no);
       printf(" rank %d, varid %d, timestep %d  total bytes         =  %" PRIu64 ", %" PRIu64 ", %" PRIu64 ", \n", rank, v->varid, i,
	      adios_type_size(adios_unsigned_integer , NULL)*sum_nb,
	      adios_type_size(adios_double, NULL)*sum_nk, 
	      adios_type_size(adios_long, NULL)*sum_no);

       printf("\n");
  }
#endif

#ifdef MULTI_BLOCK
  for (i=0; i<v->nsteps; i++) {
    int nblocks = v->nblocks[i];
    int blockStart = 0;
    int blockEnd = blockStart+pack;

   
    while (blockStart < nblocks) {
      if (blockEnd > nblocks) {
	blockEnd = nblocks;
      } 
      printf("block start=%d, end=%d, max=%d\n", blockStart, blockEnd, nblocks);
      
      if (workCounter % size == rank) {
	printf("%ld  mod %ld == %d \n", workCounter,  size, rank);
	onMultiBlock(rank, f, v, i, blockStart, blockEnd, ft);
	fastbit_cleanup();
      }

      workCounter ++;

      blockStart += pack;
      blockEnd = blockStart+pack;
    }

    fastbit_cleanup();
  }
#endif

#ifdef BOX
  for (i=0; i<v->nsteps; i++) {
    uint64_t s = 0;
    uint64_t dataSize = 1;
    uint64_t start[v->ndim];
    for (s=0; s<v->ndim; s++) {
      dataSize *= v->dims[s];
      start[s] = 0;
    }
    
    uint64_t split = dataSize/recommended_index_ele;
    uint64_t startRef = 0;
    if (split == 0) {
      if (rank == 0) {
	onBox(rank, f, v, i, start, v->dims, ft);
      }
    } else {
      while (startRef < v->dims[0]) {
	uint64_t count[v->ndim];
	start[0] = startRef;
	startRef += v->dims[0]/split;
	if (startRef >= v->dims[0]) {
	  startRef = v->dims[0];	  
	}
	count[0] = startRef - start[0];
	for (s=1; s<v->ndim; s++) {
	  start[s] = 0;
	  count[s] = v->dims[s];
	}

	if (workCounter % size == rank) {
	  onBox(rank, f, v, i, start, count, ft);
	}

	workCounter ++;
      }
    }    
  }
#endif
}