Skip to content

Commit 38e88af

Browse files
author
Grant Karapetyan
authored
Fix touchpad rotation center (#1526)
1 parent d07bc00 commit 38e88af

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

source/MRViewer/MRTouchpadController.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ bool TouchpadController::swipe_( float deltaX, float deltaY, bool kinetic )
103103
auto& viewer = getViewerInstance();
104104
auto& viewport = viewer.viewport();
105105

106+
Vector3f sceneCenterPos;
107+
if ( viewport.getSceneBox().valid() )
108+
sceneCenterPos = viewport.getSceneBox().center();
109+
106110
switch ( swipeMode )
107111
{
108112
case Parameters::SwipeRotatesCamera:
@@ -116,16 +120,13 @@ bool TouchpadController::swipe_( float deltaX, float deltaY, bool kinetic )
116120
* Quaternionf( Vector3f::plusX(), angle.y )
117121
* quat
118122
).normalized();
119-
const auto xf = AffineXf3f::linear( Matrix3f( quat ) );
123+
const auto xf = AffineXf3f::xfAround( Matrix3f( quat ), sceneCenterPos );
120124
viewport.transformView( xf );
121125

122126
return true;
123127
}
124128
case Parameters::SwipeMovesCamera:
125129
{
126-
Vector3f sceneCenterPos;
127-
if ( viewport.getSceneBox().valid() )
128-
sceneCenterPos = viewport.getSceneBox().center();
129130
const auto sceneCenterVpPos = viewport.projectToViewportSpace( sceneCenterPos );
130131

131132
const auto mousePos = viewer.mouseController.getMousePos();

0 commit comments

Comments
 (0)