summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2012-04-23 23:33:22 (GMT)
committerClifford Wolf <clifford@clifford.at>2012-04-23 23:33:22 (GMT)
commitf5a7e92367adb7bbadaff8d27ff1610d91034b6a (patch)
tree284c0aefd6535a9e0290344b642964d0ab1c6441 /src
parent940946c060e682446994ba6b671ce7f6bd8b6da5 (diff)
Fixed x/y panning (middle mouse button)
Diffstat (limited to 'src')
-rw-r--r--src/glview.cc20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/glview.cc b/src/glview.cc
index 5ff6c2c..12657b8 100644
--- a/src/glview.cc
+++ b/src/glview.cc
@@ -589,14 +589,21 @@ void GLView::mouseMoveEvent(QMouseEvent *event)
normalizeAngle(object_rot_y);
normalizeAngle(object_rot_z);
} else {
- // Right button pans
- // Shift-right zooms
+ // Right button pans in the xz plane
+ // Middle button pans in the xy plane
+ // Shift-right and Shift-middle zooms
if ((QApplication::keyboardModifiers() & Qt::ShiftModifier) != 0) {
viewer_distance += (GLdouble)dy;
} else {
double mx = +(dx) * viewer_distance/1000;
- double my = -(dy) * viewer_distance/1000;
+ double mz = -(dy) * viewer_distance/1000;
+
+ double my = 0;
+ if (event->buttons() & Qt::MiddleButton) {
+ my = mz;
+ mz = 0;
+ }
Matrix3d aax, aay, aaz, tm3;
aax = Eigen::AngleAxisd(-(object_rot_x/180) * M_PI, Vector3d::UnitX());
@@ -612,15 +619,10 @@ void GLView::mouseMoveEvent(QMouseEvent *event)
Matrix4d vec;
vec <<
0, 0, 0, mx,
- 0, 0, 0, 0,
0, 0, 0, my,
+ 0, 0, 0, mz,
0, 0, 0, 1
;
- if ((QApplication::keyboardModifiers() & Qt::ShiftModifier) != 0) {
- vec(0,3) = 0;
- vec(1,3) = my;
- vec(2,3) = 0;
- }
tm = tm * vec;
object_trans_x += tm(0,3);
object_trans_y += tm(1,3);
contact: Jan Huwald // Impressum