示例#1
0
int main()
{
  unsigned int x,y,z,b,volume;
  unsigned int minx, miny, minz, maxx, maxy, maxz;
  double scale = 2 * RANGE / SIZE;
  
  for(z=0;z<SIZE;z++) {
    double fz=valInRange(zlow, zhigh, SIZE, z);
    fprintf(stderr,"fz=%lf\n", fz);
    for(y=0;y<SIZE;y++) {
      double fy=valInRange(ylow, yhigh, SIZE, y);
      for(x=0;x<SIZE;x++) {
        double fx=valInRange(xlow, xhigh, SIZE, x);
        unsigned int val=doPoint(fx,fy,fz);
	voxels[z][y][x] = (val >= (maxit - 1)) ? 1 : 0;
      }
    }
  }
  
#ifdef HOLLOW
  makeHollow();
#endif
  
  fprintf(stderr, "writing voxel array\n");
  volume = 0;
  for (z = 0; z < SIZE; z++) {
    for (y = 0; y < SIZE; y++) {
      for (x = 0; x < SIZE; x++) {
        b = voxels[z][y][x];
        putchar(b ? 255 : 0);
        if (b) {
          volume++;
	  minx = min(x, minx);
	  maxx = max(x, maxx);
	  miny = min(y, miny);
	  maxy = max(y, maxy);
	  minz = min(z, minz);
	  maxz = max(z, maxz);
	}
      }
    }
  }
  fprintf(stderr, "volume: %f (%d voxels)\n",
    (volume * scale * scale * scale),
    volume);
  fprintf(stderr, "z,y,x dimensions: %f, %f, %f (%d, %d, %d voxels)\n",
    (maxz - minz) * scale,
    (maxy - miny) * scale,
    (maxx - minx) * scale,
    maxz - minz,
    maxy - miny,
    maxx - minx);
    
  exit(0);
}
 void doPoint(const std::vector<T> &points,int i){
     for(size_t j=0;j<points.size();j++){
          if(label[j] !=label[i]){
             T d = points[i] - points[j];
             if(d<distance){
                 label[j] =label[i];
                 doPoint(points,j);
             }
         }
     }    
 }
示例#3
0
void LocalPointValueView::createActions()
{
    logMessage("LocalPointValueView::createActions()");

    // point
    actPoint = new QAction(icon("scene-node"), tr("Local point value"), this);
    connect(actPoint, SIGNAL(triggered()), this, SLOT(doPoint()));

    // copy value
    actCopy = new QAction(icon(""), tr("Copy value"), this);
    connect(actCopy, SIGNAL(triggered()), this, SLOT(doCopyValue()));
}
        /**
            * @param points vector of points
            * @param r Distance
            */
        DistanceConnectCluster(const std::vector<T> &points,const X& r){
            distance = r;
            label.assign(points.size(),-1);
            
            int clusternr =0;
            for(size_t i=0;i<points.size();i++){
                if(label[i] == -1){
                    label[i]= clusternr;
                    clusternr++;
                }
                doPoint(points,i);

            }
            calcCenter(points,clusternr);
        }
示例#5
0
LocalPointValueView::LocalPointValueView(QWidget *parent): QDockWidget(tr("Local Values"), parent)
{
    logMessage("LocalPointValueView::LocalPointValueView()");

    QSettings settings;
    
    setMinimumWidth(280);
    setObjectName("LocalPointValueView");

    createActions();
    createMenu();

    trvWidget = new QTreeWidget();
    trvWidget->setHeaderHidden(false);
    trvWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    trvWidget->setMouseTracking(true);
    trvWidget->setColumnCount(3);
    trvWidget->setColumnWidth(0, settings.value("LocalPointValueView/TreeViewColumn0", 150).value<int>());
    trvWidget->setColumnWidth(1, settings.value("LocalPointValueView/TreeViewColumn1", 80).value<int>());
    trvWidget->setIndentation(12);

    QStringList labels;
    labels << tr("Label") << tr("Value") << tr("Unit");
    trvWidget->setHeaderLabels(labels);

    connect(trvWidget, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(doContextMenu(const QPoint &)));

    QPushButton *btnPoint = new QPushButton();
    btnPoint->setText(actPoint->text());
    btnPoint->setIcon(actPoint->icon());
    btnPoint->setMaximumSize(btnPoint->sizeHint());
    connect(btnPoint, SIGNAL(clicked()), this, SLOT(doPoint()));

    // main widget
    QVBoxLayout *layout = new QVBoxLayout();
    layout->addWidget(trvWidget);
    layout->addWidget(btnPoint);
    layout->setContentsMargins(0, 0, 0, 7);

    QWidget *widget = new QWidget(this);
    widget->setLayout(layout);    
    
    setWidget(widget);
}