Ejemplo n.º 1
0
void CybOBB::update()
{
	CybCollision::update();
	if(interatorBox){
		CybThread::lock();
		CybVector3D<float> aux = CybCollisionData::getInstance()->getInteratorPositionInGraphicsCoordenates();
		double array[3] = {aux[0], aux[1], aux[2]};
		CybMatrix<double> aux2(1,3,array);
		setCenter(aux[0], aux[1], aux[2]);
		drawer->setCenter(&aux2);
		CybThread::unlock();
	}
	CybVector3D<double> localTransf[3], globalTransf[3];
	if(interatorBox) getInteratorGlobalTransformations(globalTransf);
	else{
		getMeshGlobalTransformations(globalTransf);
		getMeshLayerTransformations(localTransf);


		//Treating rotations
		for(int j = 0; j < 3; ++j){
			if(lastLayerTransf[2][j] != localTransf[2][j]){
				lastLayerTransf[2][j] = localTransf[2][j];
				treatRotation(j, localTransf[2][j]);
				drawer->updateLocalRotation(center, sizes);
			}
			if(lastGlobalTransf[2][j] != globalTransf[2][j]){
				lastGlobalTransf[2][j] = globalTransf[2][j];
				center = drawer->updateGlobalRotation(j, globalTransf[2][j]);
			}
		}


		//Treating translations and scales.
		bool mudancaG = false;
		bool mudancaL = false;
		for(int i = 0; i < 2; ++i){
			for(int j = 0; j < 3; ++j){
				if(lastLayerTransf[i][j] != localTransf[i][j]){
					lastLayerTransf[i][j] = localTransf[i][j];
					mudancaL = true;
				}
				if(lastGlobalTransf[i][j] != globalTransf[i][j]){
					lastGlobalTransf[i][j] = globalTransf[i][j];
					mudancaG = true;
				}
			}
		}
		if(mudancaG){
			drawer->updateGlobalTranslation(lastGlobalTransf[0]);			
			drawer->updateGlobalScale(lastGlobalTransf[1]);
			for(int i = 0; i < 3; ++i){
				center[i] = (center[i] + globalTransf[0][i]) * globalTransf[1][i];
				sizes[i] = initialSizes[i] * globalTransf[1][i];
			}
		}
		if(mudancaL){
			for(int i = 0; i < 3; ++i){
				center[i] = (center[i] + localTransf[0][i]) * localTransf[1][i];
				sizes[i] = initialSizes[i] * localTransf[1][i];
			}
			drawer->updateLocalTranslation(center);
			drawer->updateLocalScale(center, sizes);
		}

		
		
	}
}
Ejemplo n.º 2
0
void GoogleMapWidget::mouseMoveEvent(QMouseEvent* event)
{
	setCenter(center - (event->pos() - dragStart));
	dragStart = event->pos();
}
void ContentWindowGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event)
{
    // handle mouse movements differently depending on selected mode of item
    if(windowState_ == UNSELECTED)
    {
        if(event->buttons().testFlag(Qt::LeftButton) == true)
        {
            if(resizing_ == true)
            {
                QRectF r = rect();
                QPointF eventPos = event->pos();

                r.setBottomRight(eventPos);

                QRectF sceneRect = mapRectToScene(r);

                double w = sceneRect.width();
                double h = sceneRect.height();

                setSize(w, h);
            }
            else
            {
                QPointF delta = event->pos() - event->lastPos();

                double x = x_ + delta.x();
                double y = y_ + delta.y();

                setPosition(x, y);
            }
        }
    }
    else if(windowState_ == SELECTED)
    {
        // handle zooms / pans
        QPointF delta = event->scenePos() - event->lastScenePos();

        if(event->buttons().testFlag(Qt::RightButton) == true)
        {
            // increment zoom

            // if this is a touch event, use cross-product for determining change in zoom (counterclockwise rotation == zoom in, etc.)
            // otherwise, use y as the change in zoom
            double zoomDelta;

            if(event->modifiers().testFlag(Qt::AltModifier) == true)
            {
                zoomDelta = (event->scenePos().x()-0.5) * delta.y() - (event->scenePos().y()-0.5) * delta.x();
                zoomDelta *= 2.;
            }
            else
            {
                zoomDelta = delta.y();
            }

            double zoom = zoom_ * (1. - zoomDelta);

            setZoom(zoom);
        }
        else if(event->buttons().testFlag(Qt::LeftButton) == true)
        {
            // pan (move center coordinates)
            double centerX = centerX_ + 2.*delta.x() / zoom_;
            double centerY = centerY_ + 2.*delta.y() / zoom_;

            setCenter(centerX, centerY);
        }

        // force a redraw to update window info label
        update();
    }
    else if(windowState_ == INTERACTION)
    {
        QRectF r = rect();
        QPointF eventPos = event->pos();

        InteractionState interactionState = interactionState_;

        interactionState.mouseX = (eventPos.x() - r.x()) / r.width();
        interactionState.mouseY = (eventPos.y() - r.y()) / r.height();

        interactionState.mouseLeft = event->buttons().testFlag(Qt::LeftButton);
        interactionState.mouseMiddle = event->buttons().testFlag(Qt::MiddleButton);
        interactionState.mouseRight = event->buttons().testFlag(Qt::RightButton);

        setInteractionState(interactionState);

        // force a redraw to update window info label
        update();
    }
}
 FloatBufferBuilderFromCartesian3D(CenterStrategy centerStrategy,
                                   const Vector3D& center):
 _centerStrategy(centerStrategy)
 {
   setCenter(center._x, center._y, center._z);
 }
Ejemplo n.º 5
0
void AIPin::setCalibration(uint16_t p_min, uint16_t p_center, uint16_t p_max)
{
	setMin(p_min);
	setCenter(p_center);
	setMax(p_max);
}