Opening angle of the camera lense
|Objects||ViewingAngle Default Values|
ViewingAngle defines the viewing angle of a camera. It is also known as the "opening angle" of the camera's lense and is determined by its focal length.
Small viewing angles correspond to a tele lense, large opening angles to a wide angle lense. Angles close to π correspond to an (extreme) fish eye lense.
The values for ViewingAngle have to be given in radians. The angles should be larger than and smaller than π. Other values are replaced by some small positive angle or by an angle slightly less than π, respectively.
Note that when using a wide angle lense, the scene may fill only a part of the drawing area. With a tele lense, only parts of the scene may be visible.
When using a camera object with a given Position, you have to find out experimentally what viewing angle is suitable to make the scene fill a reasonable portion of the drawing area.
ViewingAngle does not have any effect when the attribute OrthogonalProjection = TRUE is set for the camera.
Note: In fact, when a parallel projection without perspective distortion is desired, one should not position the camera far away from the scene and use an extreme tele lense (i.e, very small ViewingAngle values). This may lead to problems with the hidden line algorithm of the 3D renderer. Use OrthogonalProjection = TRUE instead.
ViewingAngle can be animated. Increasing or decreasing values of ViewingAngle correspond to "zooming out" or "zooming in", respectively.
When creating a camera object, the third argument is the ViewingAngle:
camera:= plot::Camera([5, 5, 5], [0, 0, 0], PI/4): camera::ViewingAngle
We animate ViewingAngle. With the initial value of the scene is fully visible (but rather small). Zooming in by decreasing the viewing angle, only parts of the scene are visible:
f := plot::Function3d(sin(x^3 - y^2), x = -2..2, y = -2..2, Submesh = [2, 2]): camera:= plot::Camera([5, 5, 5], [0, 0, 0], (1 - a)*PI/3 + a*PI/10, a = 0..1, Frames = 200): plot(f, camera)
delete f, camera: