Beispiel #1
0
int NavigationView::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QGraphicsView::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: mouseAtGeoPos((*reinterpret_cast< const QPointF(*)>(_a[1]))); break;
        case 1: newPointAdded((*reinterpret_cast< const QPointF(*)>(_a[1]))); break;
        case 2: newLineAdded((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< QPointF(*)>(_a[2]))); break;
        case 3: newLandmarkAdded((*reinterpret_cast< const QPointF(*)>(_a[1]))); break;
        case 4: setRoverPosAndHeading((*reinterpret_cast< const QPointF(*)>(_a[1])),(*reinterpret_cast< qreal(*)>(_a[2]))); break;
        case 5: setRoverPosition((*reinterpret_cast< const QPointF(*)>(_a[1]))); break;
        case 6: setRoverHeading((*reinterpret_cast< qreal(*)>(_a[1]))); break;
        case 7: updateConfiguration(); break;
        case 8: plotLineForSelected(); break;
        case 9: plotLineForPoints((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< QPointF(*)>(_a[2]))); break;
        case 10: plotLineIntersection(); break;
        case 11: selectPoint((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
        case 12: selectPoint((*reinterpret_cast< QPointF(*)>(_a[1]))); break;
        case 13: clearSelectedPoints(); break;
        case 14: selectLines((*reinterpret_cast< QList<QPair<QPointF,QPointF> >(*)>(_a[1]))); break;
        case 15: clearSelectedLines(); break;
        case 16: deleteSelectedPoints(); break;
        case 17: deleteSelectedLines(); break;
        default: ;
        }
        _id -= 18;
    }
    return _id;
}
Beispiel #2
0
/*
================
idPointListInterface::selectPointByRay
================
*/
int idPointListInterface::selectPointByRay(const idVec3 &origin, const idVec3 &direction, bool single) {
	int		i, besti, count;
	float	d, bestd;
	idVec3	temp, temp2;

	// find the point closest to the ray
	besti = -1;
	bestd = 8;
	count = numPoints();

	for (i=0; i < count; i++) {
		temp = *getPoint(i);
		temp2 = temp;
		temp -= origin;
		d = DotProduct(temp, direction);
		VectorMA (origin, d, direction, temp);
		temp2 -= temp;
		d = temp2.Length();
		if (d <= bestd) {
			bestd = d;
			besti = i;
		}
	}

	if (besti >= 0) {
		selectPoint(besti, single);
	}

	return besti;
}
int TriangulationSidebar::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: drawLine((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< QPointF(*)>(_a[2]))); break;
        case 1: intersectLines(); break;
        case 2: selectPoint((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break;
        case 3: clearSelectedPoints(); break;
        case 4: selectLines((*reinterpret_cast< QList<QPair<QPointF,QPointF> >(*)>(_a[1]))); break;
        case 5: clearSelectedLines(); break;
        case 6: deletePoints(); break;
        case 7: deleteLines(); break;
        case 8: addPoint((*reinterpret_cast< QPointF(*)>(_a[1]))); break;
        case 9: addLine((*reinterpret_cast< QPointF(*)>(_a[1])),(*reinterpret_cast< QPointF(*)>(_a[2]))); break;
        case 10: addLandmark((*reinterpret_cast< QPointF(*)>(_a[1]))); break;
        case 11: on_landmarksListWidget_itemSelectionChanged(); break;
        case 12: on_deleteLines_clicked(); break;
        case 13: on_deletePoints_clicked(); break;
        case 14: on_intersectLinesButton_clicked(); break;
        case 15: on_linesListWidget_itemSelectionChanged(); break;
        case 16: on_drawLinesButton_clicked(); break;
        case 17: on_pointsListWidget_itemSelectionChanged(); break;
        case 18: recalculateDistanceAltitiude(); break;
        case 19: newBarometerData((*reinterpret_cast< ushort(*)>(_a[1])),(*reinterpret_cast< ulong(*)>(_a[2]))); break;
        case 20: newAccelerometerData((*reinterpret_cast< short(*)>(_a[1])),(*reinterpret_cast< short(*)>(_a[2])),(*reinterpret_cast< short(*)>(_a[3]))); break;
        case 21: newRobotElevation((*reinterpret_cast< double(*)>(_a[1])),(*reinterpret_cast< double(*)>(_a[2]))); break;
        default: ;
        }
        _id -= 22;
    }
    return _id;
}
void snlCtrlPointNetSurface::selectLineConstV ( int indexV )
{
    // Select line in constant V direction.
    // ------------------------------------
    
    for ( int indexU = 0; indexU < sizeU; indexU ++ )
        selectPoint ( indexU, indexV );
}
void snlCtrlPointNetSurface::selectLineConstU ( int indexU )
{
    // Select line in constant U direction.
    // ------------------------------------
    
    for ( int indexV = 0; indexV < sizeV; indexV ++ )
        selectPoint ( indexU, indexV );
}
void TriangulationSidebar::on_pointsListWidget_itemSelectionChanged()
{
    QList<QListWidgetItem*> items = pointsListWidget->selectedItems();
    emit clearSelectedPoints();

    foreach(QListWidgetItem * item, items) {
        qDebug("emitting");
        emit selectPoint(item->data(Qt::UserRole).toPointF(), false);
    }
void
CQAlignAnchorPoint::
selectSlot(bool enabled)
{
  if (enabled)
    emit selectPoint();
  else
    emit cancelSelect();
}
void mouse( int button, int state, int x, int y )
{
    if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
    {
        selectPoint(x,y);
        if (selected_point == -1)
        {
            addPoint(x,wY-y);
        }
    }

    if(button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
    {
        selectPoint(x,y);
        if (selected_point !=-1)
        {
            deletePoint(selected_point);
            selected_point = -1;
        }
    }
    glutPostRedisplay();
}
CQAlignAnchor::
CQAlignAnchor(QWidget *parent) :
 QWidget(parent)
{
  QGridLayout *layout = new QGridLayout(this);
  layout->setMargin(0); layout->setSpacing(2);

  QLabel *anchorLabel = new QLabel("<small><b>Anchor</b></small>");

  layout->addWidget(anchorLabel, 0, 0, 1, 2);

  objectCombo_ = new QComboBox;

  objectCombo_->addItem("Selection");
  objectCombo_->addItem("Object");
  objectCombo_->addItem("Position");

  connect(objectCombo_, SIGNAL(activated(const QString &)),
          this, SLOT(objectSlot(const QString &)));

  layout->addWidget(objectCombo_, 1, 0);

  anchorStack_ = new QStackedWidget;

  anchorLabel_  = new QWidget;
  anchorObject_ = new CQAlignAnchorObject;
  anchorPoint_  = new CQAlignAnchorPoint;

  anchorStack_->addWidget(anchorLabel_);
  anchorStack_->addWidget(anchorObject_);
  anchorStack_->addWidget(anchorPoint_);

  layout->addWidget(anchorStack_, 1, 1);

  connect(anchorObject_, SIGNAL(selectObject()), this, SIGNAL(selectObject()));
  connect(anchorObject_, SIGNAL(cancelSelect()), this, SIGNAL(cancelSelect()));

  connect(anchorPoint_, SIGNAL(selectPoint()), this, SIGNAL(selectPosition()));
  connect(anchorPoint_, SIGNAL(cancelSelect()), this, SIGNAL(cancelSelect()));

  //-----

  updateState();
}
Beispiel #10
0
//----------------------------------------------------
void ofxCvCoordWarpingGui::_mousePressed(ofMouseEventArgs &e){
	if (bCameraView) selectPoint(e.x, e.y, x, y, width*scale.y, height*scale.y, 40);
}
void AnnotationWidget::drawTree()
{
    if(!active)
    {
	tree->setEnabled(false);
//	return;
    }
    tree->setEnabled(true);

//    QList<QTreeWidgetItem*> traceWidgets;
//    QList<QTreeWidgetItem*> pointWidgets;

    int i;
    TreeItem *it;

    tree->clear();
    traceWidgets.empty();
    pointWidgets.empty();

    it = new TreeItem(tree,TreeItem::Null);
    it->setText(0, tr("Traces") );
    tree->addTopLevelItem(it);
    it->setExpanded(true);

    // trace interpretations
    for(i=0; i < experiment->getTraceInterpretations()->length(); i++)
    {
	traceWidgets << new TreeItem(it,TreeItem::Trace,i); // so i is placed in subitem->subject
	traceWidgets.last()->setText(0, experiment->getTraceInterpretations()->at(i) );
	switch( experiment->getTraceLocations()->at(i) )
	{
	 case Experiment::Video:
	    traceWidgets.last()->setText(1, video);
	    break;
	 case Experiment::Ultrasound:
	    traceWidgets.last()->setText(1, ultrasound);
	    break;
	 default:
	    break;
	}
	switch( experiment->getTraceTypes()->at(i) )
	{
	 case Experiment::Free:
	    traceWidgets.last()->setText(2, free);
	    break;
	 case Experiment::Grid:
	    traceWidgets.last()->setText(2, grid);
	    break;
	 default:
	    break;
	}
	it->addChild(traceWidgets.last());
    }

    it = new TreeItem(tree,TreeItem::Image);
    it->setText(0, tr("Points") );
    tree->addTopLevelItem(it);
    it->setExpanded(true);

    // point interpretations
    for(i=0; i < experiment->getPointInterpretations()->length(); i++)
    {
	pointWidgets << new TreeItem(it,TreeItem::Point,i); // so i is placed in subitem->subject
	pointWidgets.last()->setText(0, experiment->getPointInterpretations()->at(i) );
	switch( experiment->getPointLocations()->at(i) )
	{
	 case Experiment::Video:
	    pointWidgets.last()->setText(1, video);
	    break;
	 case Experiment::Ultrasound:
	    pointWidgets.last()->setText(1, ultrasound);
	    break;
	 default:
	    break;
	}
	it->addChild(pointWidgets.last());
    }

    tree->resizeColumnToContents(0);
    tree->resizeColumnToContents(1);
    tree->resizeColumnToContents(2);

    if(traceWidgets.length()>0)
    {
	selectTrace(0);
    }
    else if(pointWidgets.length()>0)
    {
	selectPoint(0);
    }
}
Beispiel #12
0
void EditorScene::initKeyboardMouse()
{
    auto _keyboardListener = EventListenerKeyboard::create();
    _keyboardListener->onKeyPressed = [&](EventKeyboard::KeyCode code, Event* event){
        switch (code) {
            case EventKeyboard::KeyCode::KEY_SPACE:
                break;

            case EventKeyboard::KeyCode::KEY_R:
                _ks_addPoint = true;
                break;
            case EventKeyboard::KeyCode::KEY_T:
                _ks_deletePoint = true;
                break;
            case EventKeyboard::KeyCode::KEY_A:
                _ks_selection = true;
                break;
            case EventKeyboard::KeyCode::KEY_D:
                clearSelection();
                break;
            case EventKeyboard::KeyCode::KEY_W:
                moveUp(true);
                break;
            case EventKeyboard::KeyCode::KEY_S:
                moveUp(false);
                break;
            case EventKeyboard::KeyCode::KEY_F:
                _ks_shading = true;
                break;
            case EventKeyboard::KeyCode::KEY_G:
                _ks_digging = true;
                break;
            case EventKeyboard::KeyCode::KEY_X:
                _pointLayer->setVisible(!_pointLayer->isVisible());
                _rulerBg->setVisible(!_rulerBg->isVisible());
                break;

            case EventKeyboard::KeyCode::KEY_C:
                _copySrcIndex = _frameIndex;
                break;
            case EventKeyboard::KeyCode::KEY_V:
                plastFrame();
                break;

            case EventKeyboard::KeyCode::KEY_LEFT_ARROW:
            case EventKeyboard::KeyCode::KEY_Q:
                prevFrame();
                break;

            case EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
            case EventKeyboard::KeyCode::KEY_E:
                nextFrame();
                break;

            default:
                break;
        }
    };
    _keyboardListener->onKeyReleased = [&](EventKeyboard::KeyCode code, Event* event){
        switch (code) {
            case EventKeyboard::KeyCode::KEY_SPACE:
                break;

            case EventKeyboard::KeyCode::KEY_R:
                _ks_addPoint = false;
                break;
            case EventKeyboard::KeyCode::KEY_T:
                _ks_deletePoint = false;
                break;
            case EventKeyboard::KeyCode::KEY_A:
                _ks_selection = false;
                break;
            case EventKeyboard::KeyCode::KEY_F:
                _ks_shading = false;
                break;
            case EventKeyboard::KeyCode::KEY_G:
                _ks_digging = false;
                break;
            default:
                break;
        }
        
    };
    _eventDispatcher->addEventListenerWithSceneGraphPriority(_keyboardListener, this);

    auto listener = EventListenerTouchOneByOne::create();

    listener->onTouchBegan = [this](Touch* touch, Event* event){
        auto rawpos = touch->getLocation();
        CCLOG("click in at %f %f", rawpos.x, rawpos.y);

        if (rawpos.y < 256) {
            diggColor(rawpos);

            return false;
        } else {

            if (_ks_addPoint) {
                addPoint(rawpos);
            } else if (_ks_deletePoint) {
                deletePoint(rawpos);
            } else if (_ks_selection) {
                selectPoint(rawpos, true);
            } else if (_ks_shading) {
                shadingTriangle(rawpos);
            } else if (_ks_digging) {
                diggColor(rawpos);
            } else {
                selectPoint(rawpos, false);
            }
        }

        return _selectedPoints.size() > 0;
    };

    listener->onTouchMoved = [this](Touch* touch, Event* event){

        auto move = touch->getDelta() ;//* 0.25;
        for (auto point : _selectedPoints) {
            point->sprite->setPosition(point->sprite->getPosition() + move);
            point->position = help_editPosition2relativePosition(point->sprite->getPosition());
        }
        this->delaunay();
        this->refreshLines();
        this->refreshTriangles();

    };

    listener->onTouchEnded = [this](Touch* touch, Event* event){
    };

    listener->onTouchCancelled = [this](Touch* touch, Event* event){
    };

    _pointLayer->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, _pointLayer);

}
Beispiel #13
0
KMeansClustering::KMeansClustering(int _k, PointList *p, int algorithm)
{
    k = _k;
    point_list = p;

    vector<float> distance_list;
    for (int l = 0; l < point_list->size(); l++)
    {
        distance_list.push_back(0);
    }

    QColor colours[30] = {QColor(255, 0, 0), QColor(0, 255, 255), QColor(0, 0, 255),
                          QColor(0, 255, 0), QColor(255, 255, 0), QColor(255, 0, 255),
                          QColor(0, 64, 128), QColor(64, 0, 128), QColor(64, 128, 0),
                          QColor(128, 64, 0),

                          QColor(128, 0, 64), QColor(214, 41, 41), QColor(232, 17, 45),
                          QColor(252, 191, 201), QColor(143, 239, 45), QColor(242, 206, 104),
                          QColor(107, 71, 21), QColor(255, 214, 145), QColor(249, 221, 22),
                          QColor(91, 119, 204),

                          QColor(137, 119, 186), QColor(114, 119, 186), QColor(114, 81, 188),
                          QColor(102, 86, 188), QColor(94, 104, 196), QColor(56, 25, 122),
                          QColor(79, 0, 147), QColor(73, 48, 173), QColor(181, 209, 232),
                          QColor(102, 137, 204)

                         };

    if (algorithm == KMEANS_PLUSPLUS)
    {

        // 1. first cluster is randomly assigned from point_list.
        int rand_val = round(rand() % point_list->size());
        Cluster *first = new Cluster(colours[0], 0, (*point_list)[rand_val]->getX(), (*point_list)[rand_val]->getY());
        clusters.push_back(first);

        for (int i = 1; i < _k; i++)
        {
            // 2. For each point, compute D(x), the distance between x and the nearest center that has already been chosen.
            computeDistanceList(distance_list);

            // 3. Choose one new data point at random as a new center,
            // using a weighted prob dist where a point x is chosen with prob proportional to D(x)^2
            vector<float> cdf;
            prepareCDF(distance_list, cdf);
            Point *centre = selectPoint(cdf);

            Cluster *next = new Cluster(colours[i], i, centre->getX(), centre->getY());
            clusters.push_back(next);
        }


    }
    else if (algorithm == KMEANS_SHARP)
    {
        int centres = 3*round(log(_k));
        int id = 0;
        // 1. first 3*log(k) clusters are indepdently/uniformly chosen from point list.
        for (int i = 0; i < centres; i++)
        {
            int rand_val = round(rand() % point_list->size());
            Cluster *c = new Cluster(colours[i], id, (*point_list)[rand_val]->getX(), (*point_list)[rand_val]->getY());
            clusters.push_back(c);
            id++;
        }

        for (int i = 1; i < _k; i++)
        {
            for (int j = 0; j < centres; j++)
            {
                // 2. For each point, compute D(x).
                computeDistanceList(distance_list);

                // 3. Choose new data points with weight prob dist.
                vector<float> cdf;
                prepareCDF(distance_list, cdf);
                Point *centre = selectPoint(cdf);

                Cluster *next = new Cluster(colours[id], id, centre->getX(), centre->getY());
                clusters.push_back(next);
                id++;
            }
        }
    }
    else
    {
        init();
    }
}