What's the relationship between Dolly and Zoom?

vtkCamera has two methods for zoom in/out: Dolly and Zoom. What’s relationship between Dolly and Zoom?

Moreover, for vtkCamera::Dolly(dolly) and vtkCamera::Zoom(zoomfactor), how to convert the dolly to zoomfactor?

Documentation Answer:

Dolly(double value): Divide the camera's distance from the focal point by the given dolly value

Zoom(double value): In perspective mode, decrease the view angle by the specified factor.

So Dolly moves the eye position closer to the focal point. Whereas zoom actually just changes the field of view. Causing more perspective divide when doing perspective projection (so the image is more warped, looking down hallway, sides pinched in effect).

1 Like

Thank you for your kindly reply. I have an additional question.

How can I increase size of image equal to 100%, 200%?

For 100%, I mean one screen pixel indicate 1 mm.
For 200%, I mean one screen pixel indicate 0.5 mm.

If I want one screen pixel indicate 1 mm, how to calculate the distance between camera focal point and camera position?

I using the following code to calculate the resolution:

    worldPoint0 = computeDisplayToWorld(0, 0)
    worldPoint1 = computeDisplayToWorld(0, 1)
    factor = norm(worldPoint1 - worldPoint0)

The factor indicates the distance that one screen pixel represent.

Then, I calculate the distance between camare focal point and camera position:

    cameraPosition = getCameraPosition()
    cameraFocalPoint = getCameraFocalPoint()
    distance = norm(cameraPosition - cameraFocalPoint)

Then, I find distance/factor is a constant value when I zoom in/out the image.

Am I correct?

In addition, when the vtk window size is changed, the distance/factor is also changed.