- double viewFocus[4],viewPoint[4],motionVector[3], focalDepth;
- double oldPos[3], newPos[3], distance[2];
- vtkCamera *camera = renderer->GetActiveCamera();
- camera->GetFocalPoint(viewFocus);
-
- renderer->SetWorldPoint(viewFocus[0], viewFocus[0], viewFocus[0], 1.0);
- renderer->WorldToDisplay();
- renderer->GetDisplayPoint(viewFocus);
-
- focalDepth = viewFocus[2];
-
- oldPos[0] = renderer->GetCenter()[0];
- oldPos[1] = renderer->GetCenter()[1];
- oldPos[2] = focalDepth;
-
- distance[0] = 1/factor*
- (interactor->GetEventPosition()[0]-renderer->GetCenter()[0]);
- distance[1] = 1/factor*
- (interactor->GetEventPosition()[1]-renderer->GetCenter()[1]);
-
- newPos[0] = interactor->GetEventPosition()[0] - distance[0];
- newPos[1] = interactor->GetEventPosition()[1] - distance[1];
- newPos[2] = focalDepth;
-
- renderer->DisplayToNormalizedDisplay(oldPos[0],oldPos[1]);
- renderer->NormalizedDisplayToViewport(oldPos[0],oldPos[1]);
- renderer->ViewportToNormalizedViewport(oldPos[0],oldPos[1]);
- renderer->NormalizedViewportToView(oldPos[0],oldPos[1],oldPos[2]);
- renderer->ViewToWorld(oldPos[0],oldPos[1],oldPos[2]);
-
- renderer->DisplayToNormalizedDisplay(newPos[0],newPos[1]);
- renderer->NormalizedDisplayToViewport(newPos[0],newPos[1]);
- renderer->ViewportToNormalizedViewport(newPos[0],newPos[1]);
- renderer->NormalizedViewportToView(newPos[0],newPos[1],newPos[2]);
- renderer->ViewToWorld(newPos[0],newPos[1],newPos[2]);
-
- motionVector[0] = newPos[0] - oldPos[0];
- motionVector[1] = newPos[1] - oldPos[1];
- motionVector[2] = newPos[2] - oldPos[2];
-
- camera->GetFocalPoint(viewFocus);
- camera->GetPosition(viewPoint);
- camera->SetFocalPoint(motionVector[0] + viewFocus[0],
- motionVector[1] + viewFocus[1],
- motionVector[2] + viewFocus[2]);
-
- camera->SetPosition(motionVector[0] + viewPoint[0],
- motionVector[1] + viewPoint[1],
- motionVector[2] + viewPoint[2]);
-
- if (camera->GetParallelProjection())
+ double viewFocus[4],viewPoint[4],motionVector[3], focalDepth;
+ double oldPos[3], newPos[3], distance[2];
+ vtkCamera *camera = renderer->GetActiveCamera();
+ camera->GetFocalPoint(viewFocus);
+
+ renderer->SetWorldPoint(viewFocus[0], viewFocus[0], viewFocus[0], 1.0);
+ renderer->WorldToDisplay();
+ renderer->GetDisplayPoint(viewFocus);
+
+ focalDepth = viewFocus[2];
+
+ oldPos[0] = renderer->GetCenter()[0];
+ oldPos[1] = renderer->GetCenter()[1];
+ oldPos[2] = focalDepth;
+
+ distance[0] = 1/factor*
+ (interactor->GetEventPosition()[0]-renderer->GetCenter()[0]);
+ distance[1] = 1/factor*
+ (interactor->GetEventPosition()[1]-renderer->GetCenter()[1]);
+
+ newPos[0] = interactor->GetEventPosition()[0] - distance[0];
+ newPos[1] = interactor->GetEventPosition()[1] - distance[1];
+ newPos[2] = focalDepth;
+
+ renderer->DisplayToNormalizedDisplay(oldPos[0],oldPos[1]);
+ renderer->NormalizedDisplayToViewport(oldPos[0],oldPos[1]);
+ renderer->ViewportToNormalizedViewport(oldPos[0],oldPos[1]);
+ renderer->NormalizedViewportToView(oldPos[0],oldPos[1],oldPos[2]);
+ renderer->ViewToWorld(oldPos[0],oldPos[1],oldPos[2]);
+
+ renderer->DisplayToNormalizedDisplay(newPos[0],newPos[1]);
+ renderer->NormalizedDisplayToViewport(newPos[0],newPos[1]);
+ renderer->ViewportToNormalizedViewport(newPos[0],newPos[1]);
+ renderer->NormalizedViewportToView(newPos[0],newPos[1],newPos[2]);
+ renderer->ViewToWorld(newPos[0],newPos[1],newPos[2]);
+
+ motionVector[0] = newPos[0] - oldPos[0];
+ motionVector[1] = newPos[1] - oldPos[1];
+ motionVector[2] = newPos[2] - oldPos[2];
+
+ camera->GetFocalPoint(viewFocus);
+ camera->GetPosition(viewPoint);
+ camera->SetFocalPoint(motionVector[0] + viewFocus[0],
+ motionVector[1] + viewFocus[1],
+ motionVector[2] + viewFocus[2]);
+
+ camera->SetPosition(motionVector[0] + viewPoint[0],
+ motionVector[1] + viewPoint[1],
+ motionVector[2] + viewPoint[2]);
+
+ if (camera->GetParallelProjection())