void LayoutShowUnit::CalcTransformToScalePosition() { b2Fixture *outsideFixture=GetOutsideFixture(this->body); b2PolygonShape *polygonShape=(b2PolygonShape*)outsideFixture->GetShape(); b2Transform tx=outsideFixture->GetBody()->GetTransform(); bee::Point b1=GetWorldPoint(polygonShape->m_vertices[0],tx); bee::Point b2=GetWorldPoint(polygonShape->m_vertices[1],tx); bee::Point b3=GetWorldPoint(polygonShape->m_vertices[3],tx); b2Mat33 transform_matrix(b2Vec3(b1.x,b2.x,b3.x),b2Vec3(b1.y,b2.y,b3.y),b2Vec3(1,1,1)); this->xDirectionVector=transform_matrix.Solve33(b2Vec3(0,1,0)); this->yDirectionVector=transform_matrix.Solve33(b2Vec3(0,0,1)); }
void mitk::GizmoInteractor::MoveFreely(StateMachineAction*, InteractionEvent* interactionEvent) { auto positionEvent = dynamic_cast<const InteractionPositionEvent*>(interactionEvent); if(positionEvent == NULL) { return; } Point2D currentPosition2D = positionEvent->GetPointerPositionOnScreen(); // re-use the initial z value to really move parallel to the camera plane auto renderer = positionEvent->GetSender()->GetVtkRenderer(); renderer->SetDisplayPoint(currentPosition2D[0], currentPosition2D[1], m_InitialClickPosition2DZ); renderer->DisplayToWorld(); vtkVector3d worldPointVTK(renderer->GetWorldPoint()); Point3D worldPointITK(worldPointVTK.GetData()); Vector3D movementITK( worldPointITK - m_InitialClickPosition3D ); ApplyTranslationToManipulatedObject(movementITK); RenderingManager::GetInstance()->ForceImmediateUpdateAll(); }
inline Vec2 Body::GetLinearVelocityFromLocalPoint(const Vec2& localPoint) const { return GetLinearVelocityFromWorldPoint(GetWorldPoint(localPoint)); }