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); } } }
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); }
void AIPin::setCalibration(uint16_t p_min, uint16_t p_center, uint16_t p_max) { setMin(p_min); setCenter(p_center); setMax(p_max); }