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); } } } }
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); }
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); }